MENU navbar-image
bash php python javascript

Introduction

This documentation aims to provide all the information you need to work with Cloud Clinic APIs. From the navigation pane, you can go to the services you want to get information about and see the service details and request parameters.

Base URL

https://api.bulutklinik.com

Authenticating requests

This API is not authenticated.

Laboratory Device Integration

Test Information

requires authentication

It is the service used to list the detailed information of the test. Barcode must be sent in the URL.

Example request:
curl --request GET \
    --get "https://api.bulutklinik.com/api/v3/outher/laboratoryTest/et" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.bulutklinik.com/api/v3/outher/laboratoryTest/et',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/laboratoryTest/et'
headers = {
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/laboratoryTest/et"
);

let headers = {
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "İşlem başarılı oldu.",
    "data": {
        "barcode": "100002",
        "gender": "",
        "birthdate": null,
        "test": [
            {
                "IntegrationCode": "",
                "TestName": "Hemogram - Tam Kan Sayımı",
                "TestCode": "Hemogram",
                "LabName": null,
                "TubeName": "Edtalı Tüp",
                "TubeColor": "rgb(70, 214, 219)",
                "SpecimenName": "Kan",
                "DeviceName": "CelltacG Hemogram",
                "Barcode": "100002",
                "MedulaCode": null,
                "RequestNote": null,
                "ProtocolNo": "250",
                "CreatedDateTime": "2020-03-20 16:27:52"
            },
            {
                "IntegrationCode": "WBC",
                "TestName": "WBC",
                "TestCode": "WBC",
                "LabName": "Biyokimya",
                "TubeName": "Edtalı Tüp",
                "TubeColor": "rgb(70, 214, 219)",
                "SpecimenName": "Kan",
                "DeviceName": "CelltacG Hemogram",
                "Barcode": "100002",
                "MedulaCode": null,
                "RequestNote": null,
                "ProtocolNo": "250",
                "CreatedDateTime": "2020-03-20 16:27:52"
            }
        ]
    }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Example response (501, Not):

                

Implemented {
     "resultType": 1,
     "errorType": 1,
     "errorMessage": "Operation failed.",
     "successMessage": "",
     "data": null
}
 
        

Request      

GET api/v3/outher/laboratoryTest/{barcode}

URL Parameters

barcode  string  

Test Result Save

requires authentication

It is the service used to save the test result.

Example request:
curl --request PUT \
    "https://api.bulutklinik.com/api/v3/outher/laboratoryTest" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"barcode\": \"100002\",
    \"datas\": {
        \"0\": {
            \"integrationCode\": \"animi\",
            \"value\": \"architecto\"
        },
        \"integrationCode\": \"HCT\",
        \"value\": \"35\"
    }
}"
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://api.bulutklinik.com/api/v3/outher/laboratoryTest',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'barcode' => '100002',
            'datas' => [
                [
                    'integrationCode' => 'animi',
                    'value' => 'architecto',
                ],
                'integrationCode' => 'HCT',
                'value' => '35',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/laboratoryTest'
payload = {
    "barcode": "100002",
    "datas": {
        "0": {
            "integrationCode": "animi",
            "value": "architecto"
        },
        "integrationCode": "HCT",
        "value": "35"
    }
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('PUT', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/laboratoryTest"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "barcode": "100002",
    "datas": {
        "0": {
            "integrationCode": "animi",
            "value": "architecto"
        },
        "integrationCode": "HCT",
        "value": "35"
    }
}

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": null
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Example response (501, Not):

                

Implemented {
     "resultType": 1,
     "errorType": 1,
     "errorMessage": "Operation failed.",
     "successMessage": "",
     "data": null
}
 
        

Request      

PUT api/v3/outher/laboratoryTest

Body Parameters

barcode  string  

The barcode number of the test whose results you want to record must be sent.

datas  object  

datas.integrationCode  string  

The integration code of the test whose results you want to save must be sent.

datas.value  string  

The test result must be sent.

Login and Security

Login and Get Tokens

It is the service used to log in to Bulut Klinik APIs. Requests can be made to the service using the Client Id, Client Secret Key, User Name and Password provided by Bulut Klinik. As a result of the request, an access token and refresh token will be generated by the service, which you can use to connect to other services. These generated tokens must be stored in order to connect to Bulut Klinik services.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/general/connectApi" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"apiClientId\": \"856014b9-b1b8-3456-2fd5-1d4240f3b23d\",
    \"apiSecretKey\": \"4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d\",
    \"apiUserName\": \"[email protected]\",
    \"apiUserPassword\": \"KaII134Kl!\",
    \"loginMode\": \"email\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/general/connectApi',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'apiClientId' => '856014b9-b1b8-3456-2fd5-1d4240f3b23d',
            'apiSecretKey' => '4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d',
            'apiUserName' => '[email protected]',
            'apiUserPassword' => 'KaII134Kl!',
            'loginMode' => 'email',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/general/connectApi'
payload = {
    "apiClientId": "856014b9-b1b8-3456-2fd5-1d4240f3b23d",
    "apiSecretKey": "4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d",
    "apiUserName": "[email protected]",
    "apiUserPassword": "KaII134Kl!",
    "loginMode": "email"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/general/connectApi"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "apiClientId": "856014b9-b1b8-3456-2fd5-1d4240f3b23d",
    "apiSecretKey": "4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d",
    "apiUserName": "[email protected]",
    "apiUserPassword": "KaII134Kl!",
    "loginMode": "email"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": {
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5MjU",
        "refresh_token": "def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa"
    }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 1,
    "errorType": 1,
    "errorMessage": "Your username or password is incorrect.",
    "successMessage": "",
    "data": null
}
 
        

Request      

POST api/v3/general/connectApi

Body Parameters

apiClientId  string  

When your API membership is initiated, the Client Id provided by Bulut Klinik must be sent.

apiSecretKey  string  

When your API membership is initiated, the Secret Key provided by Bulut Klinik must be sent.

apiUserName  string  

In order to initiate your API membership, the e-mail address you provided to Bulut Klinik must be sent.

apiUserPassword  string  

When your API membership is initiated, the password created for you by Bulut Klinik must be sent.

loginMode  string  

The email value should always be sent.

Token Renewal

It is a service that ensures that the API token received from the connectApi service is renewed when its lifetime expires or before it expires. If a request is made to the service with the Client Id, Client Secret Key and the latest valid refresh token provided by Bulut Klinik, a new access token and refresh token will be generated. The generated tokens must be stored in order to connect to Bulut Klinik services.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/general/refreshApi" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"refreshToken\": \"def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa\",
    \"clientId\": \"temporibus\",
    \"clientSecretKey\": \"velit\",
    \"apiClientId\": \"856014b9-b1b8-3456-2fd5-1d4240f3b23d\",
    \"apiSecretKey\": \"4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/general/refreshApi',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'refreshToken' => 'def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa',
            'clientId' => 'temporibus',
            'clientSecretKey' => 'velit',
            'apiClientId' => '856014b9-b1b8-3456-2fd5-1d4240f3b23d',
            'apiSecretKey' => '4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/general/refreshApi'
payload = {
    "refreshToken": "def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa",
    "clientId": "temporibus",
    "clientSecretKey": "velit",
    "apiClientId": "856014b9-b1b8-3456-2fd5-1d4240f3b23d",
    "apiSecretKey": "4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/general/refreshApi"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "refreshToken": "def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa",
    "clientId": "temporibus",
    "clientSecretKey": "velit",
    "apiClientId": "856014b9-b1b8-3456-2fd5-1d4240f3b23d",
    "apiSecretKey": "4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": {
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5MjU",
        "refresh_token": "def502005e8d43f0e9aabab327cc76730ab46198060749308d2"
    }
}
 
        

Example response (400, Bad_Request):

                

{
    "resultType": 2,
    "errorType": 1,
    "errorMessage": "The refresh token is invalid.",
    "successMessage": "",
    "data": null
}
 
        

Request      

POST api/v3/general/refreshApi

Body Parameters

refreshToken  string  

The renewal key that was last received from the connectApi or refreshApi service and is still valid must be sent.

clientId  string  

clientSecretKey  string  

apiClientId  string  

When your API membership is initiated, the Client Id provided by Bulut Klinik must be sent.

apiSecretKey  string  

When your API membership is initiated, the Secret Key provided by Bulut Klinik must be sent.

Session Termination

requires authentication

It is a service that allows you to close your session by canceling the API token and renewal key received from the connectApi service.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/general/disconnectApi" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/general/disconnectApi',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/general/disconnectApi'
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/general/disconnectApi"
);

let headers = {
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": null
}
 
        

Request      

POST api/v3/general/disconnectApi

Login and Get Tokens

It is the service used to log in to Bulut Klinik APIs. Requests can be made to the service using the Client Id, Client Secret Key, User Name and Password provided by Bulut Klinik. As a result of the request, an access token and refresh token will be generated by the service, which you can use to connect to other services. These generated tokens must be stored in order to connect to Bulut Klinik services.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/connectApi" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"apiClientId\": \"856014b9-b1b8-3456-2fd5-1d4240f3b23d\",
    \"apiSecretKey\": \"4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d\",
    \"apiUserName\": \"[email protected]\",
    \"apiUserPassword\": \"KaII134Kl!\",
    \"loginMode\": \"email\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/connectApi',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'apiClientId' => '856014b9-b1b8-3456-2fd5-1d4240f3b23d',
            'apiSecretKey' => '4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d',
            'apiUserName' => '[email protected]',
            'apiUserPassword' => 'KaII134Kl!',
            'loginMode' => 'email',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/connectApi'
payload = {
    "apiClientId": "856014b9-b1b8-3456-2fd5-1d4240f3b23d",
    "apiSecretKey": "4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d",
    "apiUserName": "[email protected]",
    "apiUserPassword": "KaII134Kl!",
    "loginMode": "email"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/connectApi"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "apiClientId": "856014b9-b1b8-3456-2fd5-1d4240f3b23d",
    "apiSecretKey": "4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d",
    "apiUserName": "[email protected]",
    "apiUserPassword": "KaII134Kl!",
    "loginMode": "email"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": {
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5MjU",
        "refresh_token": "def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa"
    }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 1,
    "errorType": 1,
    "errorMessage": "Your username or password is incorrect.",
    "successMessage": "",
    "data": null
}
 
        

Request      

POST api/v3/connectApi

Body Parameters

apiClientId  string  

When your API membership is initiated, the Client Id provided by Bulut Klinik must be sent.

apiSecretKey  string  

When your API membership is initiated, the Secret Key provided by Bulut Klinik must be sent.

apiUserName  string  

In order to initiate your API membership, the e-mail address you provided to Bulut Klinik must be sent.

apiUserPassword  string  

When your API membership is initiated, the password created for you by Bulut Klinik must be sent.

loginMode  string  

The email value should always be sent.

Token Renewal

It is a service that ensures that the API token received from the connectApi service is renewed when its lifetime expires or before it expires. If a request is made to the service with the Client Id, Client Secret Key and the latest valid refresh token provided by Bulut Klinik, a new access token and refresh token will be generated. The generated tokens must be stored in order to connect to Bulut Klinik services.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/refreshApi" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"refreshToken\": \"def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa\",
    \"clientId\": \"ratione\",
    \"clientSecretKey\": \"quaerat\",
    \"apiClientId\": \"856014b9-b1b8-3456-2fd5-1d4240f3b23d\",
    \"apiSecretKey\": \"4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/refreshApi',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'refreshToken' => 'def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa',
            'clientId' => 'ratione',
            'clientSecretKey' => 'quaerat',
            'apiClientId' => '856014b9-b1b8-3456-2fd5-1d4240f3b23d',
            'apiSecretKey' => '4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/refreshApi'
payload = {
    "refreshToken": "def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa",
    "clientId": "ratione",
    "clientSecretKey": "quaerat",
    "apiClientId": "856014b9-b1b8-3456-2fd5-1d4240f3b23d",
    "apiSecretKey": "4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/refreshApi"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "refreshToken": "def50200dc0923ddde0d8df8d44d88c404d075f8b789dfed7fa",
    "clientId": "ratione",
    "clientSecretKey": "quaerat",
    "apiClientId": "856014b9-b1b8-3456-2fd5-1d4240f3b23d",
    "apiSecretKey": "4R0KkjkdkskMRpCxIIsaeAKqrghdufGaxBFk5QbPh23d"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": {
        "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiI5MjU",
        "refresh_token": "def502005e8d43f0e9aabab327cc76730ab46198060749308d2"
    }
}
 
        

Example response (400, Bad_Request):

                

{
    "resultType": 2,
    "errorType": 1,
    "errorMessage": "The refresh token is invalid.",
    "successMessage": "",
    "data": null
}
 
        

Request      

POST api/v3/refreshApi

Body Parameters

refreshToken  string  

The renewal key that was last received from the connectApi or refreshApi service and is still valid must be sent.

clientId  string  

clientSecretKey  string  

apiClientId  string  

When your API membership is initiated, the Client Id provided by Bulut Klinik must be sent.

apiSecretKey  string  

When your API membership is initiated, the Secret Key provided by Bulut Klinik must be sent.

Session Termination

requires authentication

It is a service that allows you to close your session by canceling the API token and renewal key received from the connectApi service.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/disconnectApi" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/disconnectApi',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/disconnectApi'
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/disconnectApi"
);

let headers = {
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": null
}
 
        

Request      

POST api/v3/disconnectApi

Medical Device Integrations

Data Recording

requires authentication

It is the service used to record the data collected by the device given to the patient by a doctor in the Bulut Klinik.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/device/patientData" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"Uuid\": \"12\",
    \"deviceBarcode\": \"test1\",
    \"version\": \"v1\",
    \"deviceData\": {
        \"id\": \"1\",
        \"time\": \"2024-01-01 00:00\",
        \"dataType\": \"1\",
        \"datas\": [
            {
                \"key\": \"temparature\",
                \"value\": \"37\"
            }
        ]
    }
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/device/patientData',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'Uuid' => '12',
            'deviceBarcode' => 'test1',
            'version' => 'v1',
            'deviceData' => [
                'id' => '1',
                'time' => '2024-01-01 00:00',
                'dataType' => '1',
                'datas' => [
                    [
                        'key' => 'temparature',
                        'value' => '37',
                    ],
                ],
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/device/patientData'
payload = {
    "Uuid": "12",
    "deviceBarcode": "test1",
    "version": "v1",
    "deviceData": {
        "id": "1",
        "time": "2024-01-01 00:00",
        "dataType": "1",
        "datas": [
            {
                "key": "temparature",
                "value": "37"
            }
        ]
    }
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/device/patientData"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "Uuid": "12",
    "deviceBarcode": "test1",
    "version": "v1",
    "deviceData": {
        "id": "1",
        "time": "2024-01-01 00:00",
        "dataType": "1",
        "datas": [
            {
                "key": "temparature",
                "value": "37"
            }
        ]
    }
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": null
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Example response (501, Not):

                

Implemented {
     "resultType": 1,
     "errorType": 1,
     "errorMessage": "Operation failed.",
     "successMessage": "",
     "data": null
}
 
        

Request      

POST api/v3/outher/device/patientData

Body Parameters

Uuid  string  

When the device is activated, the ID sent via webhook must be sent.

deviceBarcode  string  

The barcode number of the device must be sent.

version  string  

The version number provided by Bulut Klinik must be sent.

deviceData  object  

Detailed information of the data to be recorded is sent.

deviceData.id  string  

The ID of the data to be recorded must be sent.

deviceData.time  string  

Data must be sent at the time of registration. The date format is "yyyy-mm-dd hh:mm".

deviceData.dataType  string  

The type of data to be recorded must be sent. It can take values 1,2,3. 1 means the data type is text. 2 means the data type is url. 3 means the data type is file.

deviceData.datas  object  

deviceData.datas[].key  string  

The keyword of the data to be recorded must be sent. If the dataType value is 1, information about the value is sent. If the dataType value is 2, "url" is sent. If the dataType value is 3, "file-name" is sent.

deviceData.datas[].value  string  

The data to be recorded must be sent. If the dataType value is 1, the data is sent as text. If the dataType value is 2, the url link is sent. If the dataType value is 3, the base64 value of the file is sent.

POST api/v3/outher/device

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/device" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "name=a" \
    --form "type=swgy" \
    --form "settings=["odit","veritatis"]" \
    --form "branches[][id]=692234.8" \
    --form "image=@C:\Users\sefika\AppData\Local\Temp\phpE8D.tmp" 
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/device',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'name',
                'contents' => 'a'
            ],
            [
                'name' => 'type',
                'contents' => 'swgy'
            ],
            [
                'name' => 'settings',
                'contents' => '["odit","veritatis"]'
            ],
            [
                'name' => 'branches[][id]',
                'contents' => '692234.8'
            ],
            [
                'name' => 'image',
                'contents' => fopen('C:\Users\sefika\AppData\Local\Temp\phpE8D.tmp', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/device'
files = {
  'image': open('C:\Users\sefika\AppData\Local\Temp\phpE8D.tmp', 'rb')
}
payload = {
    "name": "a",
    "type": "swgy",
    "settings": "[\"odit\",\"veritatis\"]",
    "branches": [
        {
            "id": 692234.8
        }
    ]
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, files=files, data=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/device"
);

let headers = {
    "Accept": "application/json",
};

const body = new FormData();
body.append('name', 'a');
body.append('type', 'swgy');
body.append('settings', '["odit","veritatis"]');
body.append('branches[][id]', '692234.8');
body.append('image', document.querySelector('input[name="image"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/v3/outher/device

Body Parameters

name  string  

type  string optional  

value, 5 karakterden uzun olamaz.

settings  string  

value, geçerli bir JSON dizesi olmalıdır.

image  file optional  

value bir resim olmalıdır.

branches  object[] optional  

branches[].id  number optional  

Remote Health Integrations

requires authentication

It is the service used to call doctors in the Bulut Klinik. The service will return results in pages. There are 10 records on each page.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/search" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"searchParams\": [
        \"provident\"
    ],
    \"orderParams\": \"slot\",
    \"currentPage\": 1,
    \"withFreeText\": \"acne\",
    \"withDoctorName\": \"Alice Jolie\",
    \"withBranchName\": \"dermatology\",
    \"withBranchId\": \"36\",
    \"withLocationName\": \"İstanbul\",
    \"withCompanyName\": \"Flower Clinic\",
    \"withGivenTreatments\": \"Obesity\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/search',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'searchParams' => [
                'provident',
            ],
            'orderParams' => 'slot',
            'currentPage' => 1,
            'withFreeText' => 'acne',
            'withDoctorName' => 'Alice Jolie',
            'withBranchName' => 'dermatology',
            'withBranchId' => '36',
            'withLocationName' => 'İstanbul',
            'withCompanyName' => 'Flower Clinic',
            'withGivenTreatments' => 'Obesity',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/search'
payload = {
    "searchParams": [
        "provident"
    ],
    "orderParams": "slot",
    "currentPage": 1,
    "withFreeText": "acne",
    "withDoctorName": "Alice Jolie",
    "withBranchName": "dermatology",
    "withBranchId": "36",
    "withLocationName": "İstanbul",
    "withCompanyName": "Flower Clinic",
    "withGivenTreatments": "Obesity"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/search"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "searchParams": [
        "provident"
    ],
    "orderParams": "slot",
    "currentPage": 1,
    "withFreeText": "acne",
    "withDoctorName": "Alice Jolie",
    "withBranchName": "dermatology",
    "withBranchId": "36",
    "withLocationName": "İstanbul",
    "withCompanyName": "Flower Clinic",
    "withGivenTreatments": "Obesity"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": {
        "totalCount": 2,
        "totalPage": 1,
        "currentPage": 1,
        "limitPerPage": 10,
        "list": [
            {
                "order": "0",
                "user_id": "158351",
                "doctor_id": "158351",
                "title": "Dr.",
                "name": "ZEYNEP",
                "surname": "KAYAOĞLU",
                "company_name": "Dermatologlar Merkezi",
                "city_name": "İstanbul",
                "loc_lat": "39.22553300",
                "loc_lng": "35.20628700",
                "doctor_biography": "<p>CİLDİYE<\/p>\r\n",
                "slot_time": "00:30:00",
                "slot_time_early": "0",
                "branch_name": "CİLDİYE",
                "user_image": "https:\/\/bulutklinik-pb.s3.eu-west-1.amazonaws.com\/doctors\/profile\/158351\/TMB9YJ5c3O460qVwbKND8oEkejQprz",
                "nearest_slot": null
            },
            {
                "order": "0",
                "user_id": "158296",
                "doctor_id": "158296",
                "title": "Dr.",
                "name": "ZEYNEP",
                "surname": "KAYA",
                "company_name": "Çocuk Sağlık Polikliniği",
                "city_name": "İstanbul",
                "loc_lat": "39.22553300",
                "loc_lng": "35.20628700",
                "doctor_biography": "<p>&Ccedil;OCUK SAĞLIĞI VE HASTALIKLARI<\/p>\r\n",
                "slot_time": "00:30:00",
                "slot_time_early": "0",
                "branch_name": "ÇOCUK SAĞLIĞI VE HASTALIKLARI",
                "user_image": "https:\/\/bulutklinik-pb.s3.eu-west-1.amazonaws.com\/doctors\/profile\/158296\/te37Ws0KS6OZfVyJCq2UnXx4A58mdQ",
                "nearest_slot": null
            }
        ]
    }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Appointment Listing

requires authentication

It is the service used to list appointments created in Bulut Klinik.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/appointments" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"phoneNumber\": \"+905380500009\",
    \"page\": \"\",
    \"type\": \"instant\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/appointments',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'phoneNumber' => '+905380500009',
            'page' => '',
            'type' => 'instant',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/appointments'
payload = {
    "phoneNumber": "+905380500009",
    "page": "",
    "type": "instant"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/appointments"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "phoneNumber": "+905380500009",
    "page": "",
    "type": "instant"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
     "resultType": 0,
     "errorType": 0,
     "errorMessage": "",
     "successMessage": "The operation was successful.",
     "data": {
         "appointments": [
             {
                 "process_id": "23",
                 "patient_name": "selim",
                 "patient_surname": "karadağ",
                 "slotId": "284369",
                 "outher_price": "0.00",
                 "event_id": "11599",
                 "start_date": "2024-01-15 19:40:00",
                 "end_date": "2024-01-15 19:50:00",
                 "doctor_id": "5682",
                 "doctor_title": "Uzm. Dr.",
                 "doctor_name": "Ömer Selim Kaya",
                 "doctor_image": "https://bulutklinik-pb-dev.s3.eu-west-1.amazonaws.com/dummy/no_doctor_image.jpg",
                 "branch_id": "12",
                 "branch_name": "ÇOCUK SAĞLIĞI VE HASTALIKLARI",
                 "room_name": "9af07be8-e3e8-4529-980b-230bb0b2b981",
                 "user_id": "1001073",
                 "interview_url": "https://webinsurancedev.bulutklinik.com/meeting/VzhId3hkM0N3VTlsWnFvbkVXTG9DMUk4WHd4dXphYVVrZWJFSk5GV1p0cmRxVE1HMHdJa01DdVhJWG1ZK0dPTWV2ZmtUVXBUcFZLK1U5OG44LzlYRGpZOE8yMDdKUFFCaUhQZ0tCRWEzVDE3ODlMYkcwQjA4czVzN1Z3OFRWOXNXeTkzVjBIblNxWnc1Y1VmZ0tIUmE4Z2hCeDZtY3BwM2xCdW1BQmN0RStBPQ==",
                 "cancelUrl": "https://webinsurancedev.bulutklinik.com/outher/cancelAppointment/eyJpdiI6IlFIQWRoTlNRb0Nsc1JDNnkvYWxZNmc9PSIsInZhbHVlIjoiT2cycnhEckdrNnFzZHF4Zk9ZZzI0NVMwTFFYZk9VR0wwb2FtUEd3WGFWaHJRRDkyV0NxakJ1SXFSM2YvL1BjNCIsIm1hYyI6IjcxZTExNzUwNmU5MzI0ZDZjNGUyODkzNTU3NThiMDdlZmNlNWQ2YzIzOTUxNTdiNmYwZTA5NjI2MWVkYmJiZjIifQ=="
         ],
         "count": 1
     }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Example response (501, Not):

                

Implemented {
     "resultType": 1,
     "errorType": 1,
     "errorMessage": "The appointment could not be created. The appointment may be invalid or out of date.",
     "successMessage": "",
     "data": null
}
 
        

Request      

POST api/v3/outher/appointments

Body Parameters

phoneNumber  string  

The phone number of the patient whose appointment has been made should be written.

page  string optional  

value, 1 karakterden kısa olamaz.

type  string optional  

Must be one of normal or instant.

Doctor Information Service

requires authentication

It is the service used to list the doctor details in the Bulut Klinik. Doctor ID must be sent in the URL.

Example request:
curl --request GET \
    --get "https://api.bulutklinik.com/api/v3/outher/doctorInfos/aut" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.bulutklinik.com/api/v3/outher/doctorInfos/aut',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/doctorInfos/aut'
headers = {
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/doctorInfos/aut"
);

let headers = {
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": {
        "company_id": "2",
        "doctor_id": "5682",
        "title": "Uzm. Dr.",
        "name": "Ömer Selim",
        "surname": "Kaya",
        "doctor_phone": "+90 53887000",
        "event_color": "rgb(220, 33, 39)",
        "doctor_tmc_phone": "+90 5555555555",
        "company_address": "Mimar ahmet, ahmet paşa Cd. No:4, 31664 izmir",
        "interview_duration": "10",
        "appointment_duration": "60",
        "slot_time": "01:00:00",
        "slot_time_early": "20",
        "company_name": "BULUTKLINIK SAĞLIK",
        "city_name": "İstanbul",
        "loc_lat": "41.02001490",
        "loc_lng": "28.88950720",
        "isInterviewable": "1",
        "isQuestionable": "1",
        "isAppointmentable": "1",
        "phone_number": "+90 5555555555",
        "phone_number_2": "+90 5555555555",
        "languages": "1,2",
        "biography": "<p>Uzman. Dr. G&uuml;rb&uuml;z &Ccedil;etindağ, 1975 yılında Cerrahpaşa Tıp Fak&uuml;ltesi&#39;nden mezun oldu. Istanbul Haseki Hastanesinde Dermatoloji dalında uzmanlık aldı. Yedi sene boyunca Mekke Suudi Arabistanda dermatoloji uzmani olarak &ccedil;alıştı. 1993 ten beri halen devam etttiği Mihrimahsultan Tıp Merkezinde hastalarına hizmet vermektedir...<\/p>\r\n",
        "price": "1000.00",
        "branch_name": "ÇOCUK SAĞLIĞI VE HASTALIKLARI",
        "branch_id": "12",
        "medical_branch_id": "85",
        "medical_branch_name": "ÇOCUK SAĞLIĞI VE HASTALIKLARI",
        "seance_period": "10 Dakika",
        "appointment_seance_period": "1 Saat",
        "user_image": "https:\/\/bulutklinik-pb-dev.s3.eu-west-1.amazonaws.com\/dummy\/no_doctor_image.jpg",
        "star_rate": "5.0",
        "comment_count": "123"
    }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Request      

GET api/v3/outher/doctorInfos/{doctorId}

URL Parameters

doctorId  string  

Creating an Appointment

requires authentication

It is the service used to save the reservation created in Bulut Klinik as an appointment.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/appointment" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"hash\": \"eyJpdiI6IjFkWGpoaGJqYUhwS\",
    \"outherProcessId\": 387946.87261
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/appointment',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'hash' => 'eyJpdiI6IjFkWGpoaGJqYUhwS',
            'outherProcessId' => 387946.87261,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/appointment'
payload = {
    "hash": "eyJpdiI6IjFkWGpoaGJqYUhwS",
    "outherProcessId": 387946.87261
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/appointment"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "hash": "eyJpdiI6IjFkWGpoaGJqYUhwS",
    "outherProcessId": 387946.87261
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": {
        "user_id": 1005983,
        "user_name": "isim",
        "user_surname": "soyisim",
        "user_phone": "+90 5300500000",
        "user_email": null,
        "doctor_company_id": "10577",
        "doctor_branch_name": "ÇOCUK SAĞLIĞI VE HASTALIKLARI",
        "doctor_title": "Uzm. Dr.",
        "doctor_name": "Ömer Selim",
        "doctor_surname": "Kaya",
        "doctor_phone": "+90 53887000",
        "appointment_real_date": "2024-01-08 19:50:00",
        "appointment_date": "08.01.2024 Saat : 19:50",
        "order_id": 0,
        "appointment_type": "Online Görüşme Randevusu",
        "appointment_real_type": "interview",
        "company_name": "BULUTKLINIK SAĞLIK",
        "company_address": "Mimar ahmet, ahmet paşa Cd. No:4, 31664 izmir",
        "amount": "0.00",
        "order_coupon": "",
        "event_id": 11705,
        "appointment_id": 4640,
        "room_name": "9b0b28c9-8133-4a1a-9fdc-81e52a603d88",
        "patient_outher_id": "1005983",
        "meeting_url": "https:\/\/webinsurancedev.bulutklinik.com\/meeting\/VzhId3hkM0N3VTlsWnFvbkVXTG9DNkJ0RUk4QWFyUmVoM0ZwVVZFZk1pTVl1Q1dIN01sZk5pa2MyTnowS0toRW9nL0dhRUlsQ3VISVdQQ1FEZlJiNlhxYUZWTlpyR2gwam44QmR2OTc5TXg0dDkxRHZHWHI4RmpwSHpHQWJWL2xlY3JHQUtIWEVQbFJMeTFGZUxPUFVnclo0c25lMDFNeG5IeFdWN1FoUnJ3PQ==",
        "cancel_url": "https:\/\/webinsurancedev.bulutklinik.com\/outher\/cancelAppointment\/eyJpdiI6IjJpT0lVR0E2cTcxTzllajRaUnVXYmc9PSIsInZhbHVlIjoiU2dpcDlDUm9zMC9XdjhGUGZDZUlKVVJrY3Jid3YzVHhoZW5LYk50V0dNYXBuSTdGNE1XVlZpdmRUdHJHdFZNRSIsIm1hYyI6ImJkZDk4M2QxODVhYWUyOTE5ODM0ZTEyZjI1ZWNjOGE4NTg0ZDRmY2EzOWY0YzE2ODY0NTgyNWNmMGE5YWNjZTMifQ=="
    }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Example response (501, Not):

                

Implemented {
     "resultType": 1,
     "errorType": 1,
     "errorMessage": "The appointment could not be created. The appointment may be invalid or out of date.",
     "successMessage": "",
     "data": null
}
 
        

Request      

POST api/v3/outher/appointment

Body Parameters

hash  string  

The hash information received from the reservation service via webhook is written.

outherProcessId  number  

Doctor Slot Listing

requires authentication

It is the service used to list the slots of doctors in the Bulut Klinik.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/doctorSlots" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"doctorId\": 158313,
    \"scheduleDate\": \"2023-10-22\",
    \"scheduleStep\": \"4\",
    \"schedulePage\": \"3\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/doctorSlots',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'doctorId' => 158313,
            'scheduleDate' => '2023-10-22',
            'scheduleStep' => '4',
            'schedulePage' => '3',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/doctorSlots'
payload = {
    "doctorId": 158313,
    "scheduleDate": "2023-10-22",
    "scheduleStep": "4",
    "schedulePage": "3"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/doctorSlots"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "doctorId": 158313,
    "scheduleDate": "2023-10-22",
    "scheduleStep": "4",
    "schedulePage": "3"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": {
        "2024-01-10": [
            {
                "slotId": "10304",
                "slotStart": "17:00:00",
                "slotEnd": "17:30:00",
                "available": true
            },
            {
                "slotId": "10305",
                "slotStart": "17:30:00",
                "slotEnd": "18:00:00",
                "available": true
            }
        ]
    }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Example response (422, Unprocessable):

                

Entity {
     "resultType": 1,
     "errorType": 1,
     "errorMessage": "The page field is required when there is no date.",
     "successMessage": "",
     "data": null
}
 
        

Request      

POST api/v3/outher/doctorSlots

Body Parameters

doctorId  integer  

Doctor id must be sent to list their slots.

scheduleDate  string  

To list slots for a specific date, the date must be submitted. The date format is "yyyy-mm-dd".

scheduleStep  string  

To list slots by number of days, the number of days must be submitted.

schedulePage  string  

The page number of the slots listed should be sent.

Creating a Reservation

requires authentication

It is the service used to create a reservation for a doctor in the Bulut Klinik.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/reservation" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"slotId\": 120306,
    \"doctorId\": 158530,
    \"user\": {
        \"name\": \"Jessica\",
        \"surname\": \"Doe\",
        \"phoneNumber\": \"+90 5551234568\",
        \"identityNumber\": \"9999999901\",
        \"nationality\": \"TR\",
        \"birthdate\": \"1990-05-15\",
        \"price\": 956621.35,
        \"email\": \"[email protected]\"
    }
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/reservation',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'slotId' => 120306,
            'doctorId' => 158530,
            'user' => [
                'name' => 'Jessica',
                'surname' => 'Doe',
                'phoneNumber' => '+90 5551234568',
                'identityNumber' => '9999999901',
                'nationality' => 'TR',
                'birthdate' => '1990-05-15',
                'price' => 956621.35,
                'email' => '[email protected]',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/reservation'
payload = {
    "slotId": 120306,
    "doctorId": 158530,
    "user": {
        "name": "Jessica",
        "surname": "Doe",
        "phoneNumber": "+90 5551234568",
        "identityNumber": "9999999901",
        "nationality": "TR",
        "birthdate": "1990-05-15",
        "price": 956621.35,
        "email": "[email protected]"
    }
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/reservation"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "slotId": 120306,
    "doctorId": 158530,
    "user": {
        "name": "Jessica",
        "surname": "Doe",
        "phoneNumber": "+90 5551234568",
        "identityNumber": "9999999901",
        "nationality": "TR",
        "birthdate": "1990-05-15",
        "price": 956621.35,
        "email": "[email protected]"
    }
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
     "resultType": 0,
     "errorType": 0,
     "errorMessage": "",
     "successMessage": "The operation was successful.",
     "data": {

         "url": "https://webinsuranceprod.bulutklinik.com/outher/eyJpdiI6ImdZMnA3RUxHaVdlT0I4Qld4cldqbVE9PS",
     }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Example response (501, Not):

                

Implemented {
     "resultType": 1,
     "errorType": 1,
     "errorMessage": "The appointment could not be created. The appointment may be invalid or out of date.",
     "successMessage": "",
     "data": null
}
 
        

Request      

POST api/v3/outher/reservation

Body Parameters

slotId  integer  

The slot ID for the date and time you want to create a reservation must be sent.

doctorId  integer  

The doctor ID of the doctor you want to make a reservation for must be sent.

user  object optional  

user.name  string  

The name of the patient who wants to create a reservation must be sent.

user.surname  string  

The surname of the patient who wants to create a reservation must be sent.

user.phoneNumber  string  

The phone number of the patient who wants to make a reservation must be sent.

user.identityNumber  string  

The patient identification number who wants to create a reservation must be sent.

user.nationality  string  

The nationality of the patient who wants to create a reservation must be sent.

user.birthdate  string  

The date of birth of the patient who wants to create a reservation must be sent. The date format is "yyyy-mm-dd".

user.price  number optional  

user.email  string  

The patient who wants to make a reservation must be sent an e-mail.

Branches Listing Service

requires authentication

It is the service used to list the branches available in the Bulut Klinik.

Example request:
curl --request GET \
    --get "https://api.bulutklinik.com/api/v3/outher/branches" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://api.bulutklinik.com/api/v3/outher/branches',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/branches'
headers = {
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/branches"
);

let headers = {
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200, Success):

                

{
    "resultType": 0,
    "errorType": 0,
    "errorMessage": "",
    "successMessage": "The operation was successful.",
    "data": [
        {
            "branch_id": "1",
            "branch_name": "BESLENME VE DİYET",
            "branch_icon": "https:\/\/bulutklinik-pb.s3.eu-west-1.amazonaws.com\/dummy\/icons\/branches\/1.png",
            "active": "1"
        },
        {
            "branch_id": "2",
            "branch_name": "BEYİN VE SİNİR CERRAHİSİ",
            "branch_icon": "https:\/\/bulutklinik-pb.s3.eu-west-1.amazonaws.com\/dummy\/icons\/branches\/2.png",
            "active": "1"
        }
    ]
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Request      

GET api/v3/outher/branches

Creating an Instant Reservation

requires authentication

It is the service used to create an instant reservation for a doctor in the Bulut Klinik.

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/instantReservation" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"user\": {
        \"name\": \"Jessica\",
        \"surname\": \"Doe\",
        \"phoneNumber\": \"+90 5551234568\",
        \"identityNumber\": \"9999999901\",
        \"nationality\": \"TR\",
        \"birthdate\": \"1990-05-15\",
        \"price\": 401001.6,
        \"email\": \"[email protected]\"
    }
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/instantReservation',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'user' => [
                'name' => 'Jessica',
                'surname' => 'Doe',
                'phoneNumber' => '+90 5551234568',
                'identityNumber' => '9999999901',
                'nationality' => 'TR',
                'birthdate' => '1990-05-15',
                'price' => 401001.6,
                'email' => '[email protected]',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/instantReservation'
payload = {
    "user": {
        "name": "Jessica",
        "surname": "Doe",
        "phoneNumber": "+90 5551234568",
        "identityNumber": "9999999901",
        "nationality": "TR",
        "birthdate": "1990-05-15",
        "price": 401001.6,
        "email": "[email protected]"
    }
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/instantReservation"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "user": {
        "name": "Jessica",
        "surname": "Doe",
        "phoneNumber": "+90 5551234568",
        "identityNumber": "9999999901",
        "nationality": "TR",
        "birthdate": "1990-05-15",
        "price": 401001.6,
        "email": "[email protected]"
    }
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200, Success):

                

{
     "resultType": 0,
     "errorType": 0,
     "errorMessage": "",
     "successMessage": "The operation was successful.",
     "data": {

         "url": "https://webinsuranceprod.bulutklinik.com/outher/eyJpdiI6ImdZMnA3RUxHaVdlT0I4Qld4cldqbVE9PS",
     }
}
 
        

Example response (401, Unauthorized):

                

{
    "resultType": 4,
    "errorType": 1,
    "errorMessage": "You must log in for this process.",
    "successMessage": "",
    "data": null
}
 
        

Example response (501, Not):

                

Implemented {
     "resultType": 1,
     "errorType": 1,
     "errorMessage": "The appointment could not be created. The appointment may be invalid or out of date.",
     "successMessage": "",
     "data": null
}
 
        

Request      

POST api/v3/outher/instantReservation

Body Parameters

user  object optional  

user.name  string  

The name of the patient who wants to create a reservation must be sent.

user.surname  string  

The surname of the patient who wants to create a reservation must be sent.

user.phoneNumber  string  

The phone number of the patient who wants to make a reservation must be sent.

user.identityNumber  string  

The patient identification number who wants to make a reservation must be sent.

user.nationality  string  

The nationality of the patient who wants to create a reservation must be sent.

user.birthdate  string  

The date of birth of the patient who wants to create a reservation must be sent. The date format is "yyyy-mm-dd".

user.price  number optional  

user.email  string  

The patient who wants to make a reservation must be sent an e-mail.

POST api/v3/outher/appointmentInfo

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/appointmentInfo" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"hash\": \"qui\",
    \"outherProcessId\": 1353.4414285,
    \"doctorId\": 1157713.62,
    \"appointmentDate\": \"2024-05-03 14:25\",
    \"isOutherDoctor\": \"1\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/appointmentInfo',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'hash' => 'qui',
            'outherProcessId' => 1353.4414285,
            'doctorId' => 1157713.62,
            'appointmentDate' => '2024-05-03 14:25',
            'isOutherDoctor' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/appointmentInfo'
payload = {
    "hash": "qui",
    "outherProcessId": 1353.4414285,
    "doctorId": 1157713.62,
    "appointmentDate": "2024-05-03 14:25",
    "isOutherDoctor": "1"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/appointmentInfo"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "hash": "qui",
    "outherProcessId": 1353.4414285,
    "doctorId": 1157713.62,
    "appointmentDate": "2024-05-03 14:25",
    "isOutherDoctor": "1"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v3/outher/appointmentInfo

Body Parameters

hash  string optional  

doctorId olmadığında value alanı zorunludur. appointmentDate olmadığında value alanı zorunludur.

outherProcessId  number optional  

doctorId olmadığında value alanı zorunludur. appointmentDate olmadığında value alanı zorunludur.

doctorId  number optional  

appointmentDate olduğunda value alanı zorunludur. hash olmadığında value alanı zorunludur.

appointmentDate  string optional  

doctorId olduğunda value alanı zorunludur. hash olmadığında value alanı zorunludur. Must be a valid date in the format Y-m-d H:i.

isOutherDoctor  string optional  

doctorId olduğunda value alanı zorunludur. appointmentDate olduğunda value alanı zorunludur. hash olmadığında value alanı zorunludur. Must be one of 0 or 1.

POST api/v3/outher/checkDoctor

Example request:
curl --request POST \
    "https://api.bulutklinik.com/api/v3/outher/checkDoctor" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"doctorId\": 14528860.409370774,
    \"isOutherDoctor\": \"1\"
}"
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://api.bulutklinik.com/api/v3/outher/checkDoctor',
    [
        'headers' => [
            'Accept' => 'application/json',
        ],
        'json' => [
            'doctorId' => 14528860.409370774,
            'isOutherDoctor' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://api.bulutklinik.com/api/v3/outher/checkDoctor'
payload = {
    "doctorId": 14528860.409370774,
    "isOutherDoctor": "1"
}
headers = {
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()
const url = new URL(
    "https://api.bulutklinik.com/api/v3/outher/checkDoctor"
);

let headers = {
    "Accept": "application/json",
};

let body = {
    "doctorId": 14528860.409370774,
    "isOutherDoctor": "1"
}

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v3/outher/checkDoctor

Body Parameters

doctorId  number  

isOutherDoctor  string  

Must be one of 0 or 1.