openapi: 3.0.3 info: title: Docplanner Integrations API description: | Welcome to Docplanner Integrations [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) API! This API gives You the ability to build Your own application and integrate it with Docplanner services. version: 1.14.0 x-logo: url: https://docplanner.tech/logo.svg backgroundColor: '#012c6d' altText: Docplanner Tech x-changelog: 1.14.0: | * Introducing new optional **apply_on_coupled_addresses** field in **AddCalendarBreakRequest** for creating the same break on the doctor's coupled addresses in the facility * **moveCalendarBreak** and **deleteCalendarBreak** now move and remove those coupled breaks together with the break they follow 1.13.0: | * **moveBooking** may now move a booking to an **address_id** belonging to a different doctor within the same facility, reassigning the booking to that doctor. An address outside the facility named in the path is still rejected with **403** * **moveBooking** returns **422 Unprocessable Entity** when the booking still holds money and the target address is billed through a different payment account. Cancel the booking and create a new one instead. A payment that was fully refunded or charged back holds no money, so it does not restrict the move 1.12.0: | * Documenting **price** in **AddAddressServiceRequest** and **UpdateAddressServiceRequest** as a number with up to 2 decimal places; invalid price formats now return a **400 Bad Request** error 1.11.0: | * Introducing new **removeAddressIntegration** endpoint for DocplannerPMS API clients 1.10.0: | * Introducing new optional **custom_name** field in **AddAddressServiceRequest** and **UpdateAddressServiceRequest** for creating and updating address services with custom display names 1.9.3: | * Adding maximum date range validation of 180 days to **getSlots** endpoint. Requests exceeding this range will return a **400 Bad Request** error 1.9.2: | * Introducing new optional **specialization_id** query parameter in **getServices** endpoint 1.9.1: | * Making **price** and **description** fields in **UpdateAddressServiceRequest** nullable as they are not required 1.9.0: | * Introducing new **confirmBooking** endpoint 1.8.1: | * Introducing new **insurance_number** field in **Patient** schema for booking related notifications and endpoints 1.8.0: | * Introducing new **address_service.public_insurance_flow** scope for **getBookings** endpoint * Introducing new **address_service.public_insurance_flow** scope for **getBooking** endpoint * Introducing new **address_service.public_insurance_flow** scope for **getAddressServices** endpoint * Introducing new **address_service.public_insurance_flow** scope for **getAddressService** endpoint 1.7.1: | * Introducing new optional **insurance_plans** field in **addAddressInsuranceProvider** endpoint 1.6.1: | * Introducing new **address_service.custom_name** scope for **getAddressService** and **getAddressServices** endpoints. 1.5.0: | * Introducing new optional **allowed_patients** field with **minimum_age** and **maximum_age** properties in **AddAddressServiceRequest**, **UpdateAddressServiceRequest**, and **AddressService** schema for age restrictions 1.4.8: | * Improved error message clarity for calendar breaks endpoints. 1.4.7: | * Fixed **addAddressService** and **addCalendarBreak** response not having body 1.4.6: | * Documentation: Added IP whitelisting endpoints information for partners receiving webhooks 1.4.5: "* Marking **name**, **city_name** and **street** fields in **Address** schema as nullable \n" 1.4.4: | * Fixed **license_number** field name in **DoctorsWithLicenseNumbers** example for **getDoctors** endpoint 1.4.3: | * Add **city_name** field information for **Addresses** endpoints. 1.4.2: | * Fixed issue with **getBooking** endpoint in PHP SDK 1.4.1: | * Introducing new **booking.confirmation** scope for **getBookings** endpoint 1.4.0: | * Introducing new **booking.moving** scope for **getBooking** endpoint 1.3.3: | * Fixing **insurance** schema in booking callback notifications 1.3.2: | * Introducing new optional **is_recurring** field in **bookSlot** endpoint 1.3.1: | * Making **price** in **AddAddressServiceRequest** field nullable as it's not required 1.3.0: | * Introducing new optional **insurance_provider_id** and **insurance_plan_id** fields in **bookSlot** endpoint 1.2.0: | * Introducing new optional is_visible field in updateAddressService endpoint 1.0.40: | * Marking **address_service** and **insurance** fields in **getBooking** endpoint response as nullable * Marking **address_service** field in **getSlots** endpoint response as nullable * Marking **address_service** and **insurance** fields in booking related callback notifications as nullable 1.0.39: | * Deprecated **videocall_url** field in **getBookings** endpoint 1.0.38: | * Deprecated **send_notifications** field in **BookSlot** and **CancelBookingRequest** 1.0.37: | * Adding 422 response status code in **bookSlot** endpoint 1.0.36: | * Adding **booking-payment-status-changed** callback 1.0.35: | * Introducing new optional **comment** field on **bookSlot** endpoint 1.0.34: | * PHP SDK without dependencies on GuzzleHttp building query method. 1.0.33: | * Fixed **Error** schema 1.0.32: | * Added **address-assigned** and **address-unassigned** callbacks 1.0.31: | * Added optional pagination to **getBookings** endpoint 1.0.30: | * Changed **errors* field type in the **Error** schema 1.0.29: | * Adding **address-commercial-type-changed** callback 1.0.28: | * Introducing new optional **marketing_consent** and **data_privacy_consent** fields on **bookSlot** endpoint 1.0.27: | * Introducing new optional **label** field on **bookSlot** endpoint 1.0.26: | * Introducing **address.insurance_support** scope for **getAddress** and **getAddresses** endpoints * Introducing **updateAddress** endpoint for changing insurance support type of an address 1.0.25: | * Introducing **getCalendar** endpoint for getting calendar status 1.0.24: | * Introducing **address.commercial_type** scope for **getAddress**, **getAddresses** and **getDoctor** endpoints 1.0.23: | * Added "address-service-created", "address-service-deleted", "address-service-changed" callbacks 1.0.22: | * Introducing **doctor.profile_url** scope for **getDoctor** and **getDoctors** endpoints 1.0.21: | * Added missing **insuranceProviderId** property to **getInsurancePlans** operation * Renamed **insurance_provider** parameter to **insurance_provider_id** in **deleteAddressInsuranceProvider** operation * Renamed **OAuth 2.0** security scheme to **oauth2** * Fixed minor syntax error * Renamed invalid **docplanner.it** domain to **miodottore.it** in the description 1.0.20: | * New (optional) property **default_duration** for **AddAddressServiceRequest** and **UpdateAddressServiceRequest** 1.0.19: | * Added "booking-confirmed" callback 1.0.18: | * Added support for insurance plans 1.0.17.1: | * Added missing is_visible property to **AddAddressServiceRequest** example payload 1.0.17: | * Introduced **Pull Multiple Notifications** endpoint 1.0.16: | * New (optional) property **is_visible** for **AddAddressServiceRequest** 1.0.15: | * New (optional) property **reason** for **CancelBookingRequest** (it is now possible to set a reason why booking was canceled) 1.0.14.1: | * Added missing is_visible property to responses and examples 1.0.14: | * Added support for custom services and is_visible property of AddressService 1.0.13: | * Creating calendar in **addCalendarBreak** when it's missing. 1.0.12: | * Returning whole Booking on moveBooking action. 1.0.11: | * Added **insurance_accepted** and **insurance_providers** fields to **ReplaceSlotsRequest** (support for insurances configuration) 1.0.10: | * Introducing **doctor.license_numbers** scope for **getDoctor** and **getDoctors** endpoints 1.0.9: | * Added Calendars API * Added methods to enable and disable calendar on the address 1.0.8: | * New (optional) property **send_notifications** for **CancelBookingRequest** (it is now possible to set if the patient should get notifications on canceling the visit) 1.0.7: | * Buried notifications can be released: added **releaseNotifications** method 1.0.6: | * Making **patient.surname** field optional in *BookSlotRequest* 1.0.5: | * Removing **slot-changed** notification callback. 1.0.4: | * New (optional) property **address_id** for **MoveBookingRequest** (it is now possible to move booking to another address) * Changed **address_service_id** and **start** properties of **MoveBookingRequest** so they are required (documentation was missing it, they were already required in the API) 1.0.3: | * New (optional) property **description** for **AddCalendarBreakRequest** * New property **description** for **CalendarBreak** 1.0.2: | * Calendar breaks can be moved: adding **moveCalendarBreak** method for **CalendarBreaksApi** * New notification callback **break-moved** 1.0.1: | * Notification callbacks * IDs are now strings instead of integers servers: - url: https://www.{domain}/api/v3/integration description: \{domain} - locale of docplanner marketplace ex. znanylekarz.pl security: - oauth2: - integration tags: - name: Fundamentals description: | Be sure to check out our [General Guide](https://integrations.docplanner.com/guide/) for more descriptive definitions, example use cases, and the overall logic of this API. ## Domain Every API resource can be accessed via a URL of the structure given below: https://www.{domain}/api/v3/integration/{resource} `NOTE! Every request has to be made using HTTPS connection!` Every request is based on a locale in which you want your integration in. The list of supported locales can be found below:
Country Locale {domain}
Argentina ar doctoraliar.com
Brazil br doctoralia.com.br
Chile cl doctoralia.cl
Colombia co doctoralia.co
Czech Republic cz znamylekar.cz
Spain es doctoralia.es
Italy it miodottore.it
Mexico mx doctoralia.mx
Peru pe doctoralia.pe
Portugal pt doctoralia.com.pt
Turkey tr doktortakvimi.com
Poland pl znanylekarz.pl
Germany de jameda.de
## IP Whitelisting When integrating with Docplanner, we may initiate outbound connections to your systems for webhooks and API callbacks. To ensure reliable delivery, you must whitelist our IP addresses. Our IP addresses are dynamic and may change over time. Fetch the updated list periodically (daily recommended) from one of these endpoints: - JSON format: `https://www.{domain}/public/docs/public-ips.json` - Plain text format: `https://www.{domain}/public/docs/public-ips.txt` **Example JSON response:** { "API": [ "10.0.xxx.xx", "10.10.xxx.xx", "172.20.xxx.xxx", "172.31.xxx.xxx", ] } **Example TXT response:** 10.0.xxx.xx 10.10.xxx.xx 172.20.xxx.xxx 172.31.xxx.xxx ## Http verbs We use [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) architecture therefore every [HTTP method](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods) has a special meaning:
Verb Description
GET Retrieve resources
POST Creates resources or execute custom actions
PUT Replace resources
PATCH Partial update of resources
DELETE Delete resources
## Expanding When you need to load additional data or data related to the resource being requested, rather than making repeated calls, we allow related data to be returned and loaded alongside the original resource. One or more resources can be included by using our standard *`with`* parameter. The *`with`* query parameter will take a list of one or more resources related to the primary resource and return those resources as well. Consult an endpoint’s parameter description in order to verify which related resources are supported. ## Body We use architecture called [HATEOAS](https://en.wikipedia.org/wiki/HATEOAS) to represent all data presented in the API. HATEOAS defines how entity data is constructed and how relations are linked or embedded into the response. We follow a few simple rules: - every key in the response is lowercase with optional underscores - every response can have `_links` section defining links to related entities or actions - every response can have `_embedded` section including related entities - all relational links are relative ## Date and time Every date and time has to be in [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) format presented below: ``` // format --T::+ // date 2020 December 01, 00:00 CET +1 // ISO8601 2020-12-01T00:00:00+01:00 // ISO8601 encoded in request 2020-12-01T00%3A00%3A00%2B01%3A00 ``` All request must have a desired timezone. We internally convert the timezone from a request to the timezone based on the locale the request is sent to. ## Pagination Paginated representations contain a few additional fields alongside fields belonging to returned data
Field Description
page Current page of results
limit Number of items in current page
pages Total number of pages
total Total number of items
Also, a few relations are defined in the `_links` section:
Relation Description
self Link to the current page of results
first Link to the first page of results
last Link to the last page of results
next Link to the next page of results
previous Link to the previous page of results
Here is a example of how a paginated response looks like: ``` { "results": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ], "page": 1, "limit": 3, "pages": 1000, "total": 3000, "_links": { "self": { "href": "\/some-endpoint?&page=1&limit=3" }, "first": { "href": "\/some-endpoint?&page=1&limit=3" }, "last": { "href": "\/some-endpoint?&page=13310&limit=3" }, "next": { "href": "\/some-endpoint?&page=2&limit=3" } } } ``` ## Errors API uses conventional [HTTP response codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) to indicate the success or failure of an API request.
HTTP status code Description
200 - OK Everything worked as expected
400 - Bad Request Validation error message
403 - Forbidden You don't have the access rights to perform this action
404 - Not Found We couldn't find the resource you were asking for
409 - Conflict This response is sent when a request conflicts with the current state of the server
429 - Too many requests You have sent too many requests in a given amount of time
5XX - Server error An error occurred on our servers
Pro tip: Inside the error message you will have a more descriptive error message ## Rate Limiting To prevent DOS/DDOS attacks or API abuse, we have introduced rate limiting. **GET** action limit is `8000 requests per hour`. **PUT**/**POST**/**PATCH**/**DELETE** actions are limited to `40 requests per minute` (max 2400 requests per hour). We can adjust limits on per-client basis, so if you are consistently running into the current limits, please let us know. If your limits reaches zero, subsequent requests will receive the `429 Too Many Requests` response code until the request reset time has been reached. ## Rate Limiting Headers We inform You of the state of rate limiter using HTTP headers.
RateLimit Header Description
X-RateLimit-Limit Request limit for the current time span
X-RateLimit-Reset Rate limiter reset date in in ISO8601 format
X-RateLimit-Used Number of requests made in current time span
X-RateLimit-Remaining Number of requests remaining in current time span
`NOTE! No rate limiter specific headers in response means that the rate limiter is disabled` x-traitTag: true - name: Facilities description: More information on how we define what a Facility is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/resources.html#facilities). - name: Doctors description: More information on how we define what a Doctors is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/resources.html#doctors). - name: Addresses description: More information on how we define what a Addresses is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/resources.html#addresses). - name: Services description: More information on how we define what a Services is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/resources.html#services). - name: Insurances description: More information on how we define what a Insurances is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/resources.html#insurances). - name: Calendars description: Simple operations on the calendar belonging to the address - name: Calendar Breaks description: More information on how we define what a Calendar Breaks is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/resources.html#calendar-breaks). - name: Slots description: More information on how we define what a Slots is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/resources.html#slots). - name: Bookings description: | More information on how we define what a Bookings is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/resources.html#bookings). ## addBooking In order to add a new booking use **POST** `bookSlot` endpoint from `Slots` section. - name: Patient Presence description: More information on how we define what a Patient Presence is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/api-objects/patient-presence.html). - name: API Notification Callbacks description: More information on how we define what a API Notification Callbacks is, its use cases and more can be found [here](https://integrations.docplanner.com/guide/callbacks/push-vs-pull.html). paths: /facilities: get: operationId: getFacilities description: Get a list of facilities tags: - Facilities responses: '200': description: List of facilities content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Facilities' examples: Facilities: $ref: '#/components/examples/Facilities' /facilities/{facility_id}: parameters: - $ref: '#/components/parameters/facilityId' get: operationId: getFacility description: | Get a single facility Extensions: * `facility.doctors` - with this parameter in url, query results will return a list of all the doctors in a given facility tags: - Facilities parameters: - $ref: '#/components/parameters/facilityWith' responses: '200': description: Facility data content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Facility' examples: Facility: $ref: '#/components/examples/Facility' Facility with facility.doctors: $ref: '#/components/examples/FacilityWithDoctors' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors: parameters: - $ref: '#/components/parameters/facilityId' get: operationId: getDoctors description: | Get a list of doctors in a facility Extensions: * `doctor.profile_url` - with this parameter in url, query results will contain urls to doctors profiles * `doctor.specializations` - with this parameter in url, query results will contain specialization of doctors * `doctor.license_numbers` - with this parameter in url, query results will contain license numbers of doctors tags: - Doctors parameters: - $ref: '#/components/parameters/doctorsWith' responses: '200': description: List of doctors content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Doctors' examples: Doctors: $ref: '#/components/examples/Doctors' Doctors with doctor.profile_url: $ref: '#/components/examples/DoctorsWithProfileUrl' Doctors with doctor.specializations: $ref: '#/components/examples/DoctorsWithSpecializations' Doctors with doctor.license_numbers: $ref: '#/components/examples/DoctorsWithLicenseNumbers' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' get: operationId: getDoctor description: |2 Get a single doctor in a facility Extensions: * `doctor.profile_url` - with this parameter in url, query results will contain urls to doctors profiles * `doctor.addresses` - with this parameter in url, query results will return a list of all the doctor addresses in a given facility * `doctor.license_numbers` - with this parameter in url, query results will contain license numbers of doctors * `address.booking_extra_fields` - with this parameter in url, query results will return required parameters requested from patient in the booking flow * `address.online_only` - with this parameter in url, query results will return additional parameter indicating if an address is dedicated to video consultations * `address.visit_payment` - with this parameter in url, query results will return additional parameter indicating when visit payments are enabled * `address.commercial_type` - with this parameter in url, query results will return additional parameter indicating address commercial type tags: - Doctors parameters: - $ref: '#/components/parameters/doctorWith' responses: '200': description: Doctor data content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Doctor' examples: Doctor: $ref: '#/components/examples/Doctor' Doctor with doctor.profile_url: $ref: '#/components/examples/DoctorWithProfileUrl' Doctor with doctor.license_numbers: $ref: '#/components/examples/DoctorWithLicenseNumbers' Doctor with doctor.addresses: $ref: '#/components/examples/DoctorWithAddresses' Doctor with doctor.addresses and address.online_only: $ref: '#/components/examples/DoctorWithOnlineOnlyAddresses' Doctor with doctor.addresses and address.visit_payment: $ref: '#/components/examples/DoctorWithVisitPaymentAddresses' Doctor with doctor.addresses and address.booking_extra_fields: $ref: '#/components/examples/DoctorWithAddressBookingExtraFields' Doctor with doctor.addresses and address.commercial_type: $ref: '#/components/examples/DoctorWithAddressCommercialType' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' get: operationId: getAddresses description: | Get a list of addresses of a doctor Extensions: * `address.online_only` - with this parameter in url, query results will return additional parameter indicating if returned addresses are dedicated to video consultations * `address.visit_payment` - with this parameter in url, query results will return additional parameter indicating if visit payments are enabled * `address.commercial_type` - with this parameter in url, query results will return additional parameter indicating address commercial type * `address.insurance_support` - with this parameter in url, query results will return additional parameter indicating insurance support type of an address tags: - Addresses parameters: - $ref: '#/components/parameters/addressesWith' responses: '200': description: List of addresses content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Addresses' examples: Addresses: $ref: '#/components/examples/Addresses' Addresses with address.online_only: $ref: '#/components/examples/AddressesWithOnlineOnly' Addresses with address.visit_payment: $ref: '#/components/examples/AddressesWithVisitPayment' Addresses with address.commercial_type: $ref: '#/components/examples/AddressesWithCommercialType' Addresses with address.insurance_support: $ref: '#/components/examples/AddressesWithInsuranceSupport' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' get: operationId: getAddress description: | Get a single address of a doctor Extensions: * `address.online_only` - with this parameter in url, query results will return additional parameter indicating if an address is dedicated to video consultations * `address.visit_payment` - with this parameter in url, query results will return additional parameter indicating if visit payment isr enabled * `address.commercial_type` - with this parameter in url, query results will return additional parameter indicating address commercial type * `address.insurance_support` - with this parameter in url, query results will return additional parameter indicating insurance support type of an address tags: - Addresses parameters: - $ref: '#/components/parameters/addressesWith' responses: '200': description: Address data content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Address' examples: Address: $ref: '#/components/examples/Address' Address with address.online_only: $ref: '#/components/examples/AddressWithOnlineOnly' Address with address.visit_payment: $ref: '#/components/examples/AddressWithVisitPayment' Address with address.commercial_type: $ref: '#/components/examples/AddressWithCommercialType' Address with address.insurance_support: $ref: '#/components/examples/AddressWithInsuranceSupport' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' patch: operationId: updateAddress description: | Get a single address of a doctor tags: - Addresses requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAddressRequest' examples: Update address: $ref: '#/components/examples/UpdateAddress' responses: '200': description: Address updated content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Address' examples: Address with insurance support: $ref: '#/components/examples/AddressWithInsuranceSupport' '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Invalid request argument: $ref: '#/components/examples/InvalidArgumentsError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Address does not belong to facility: $ref: '#/components/examples/AddressDoesNotBelongToFacility' Address does not belong to doctor: $ref: '#/components/examples/AddressDoesNotBelongToDoctor' Calendar edition: $ref: '#/components/examples/CalendarEditionNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/integration: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' delete: operationId: removeAddressIntegration description: "Remove the integration mark from a single address. \nAfter this call, Docplanner will no longer treat the address as integrated with the API client's system. The address itself is not deleted. \n**Endpoint is dedicated for DocplannerPMS API clients only.**\n" tags: - Addresses responses: '202': description: Address integration removal accepted '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Feature not enabled: $ref: '#/components/examples/FeatureNotAuthorized' Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Address does not belong to facility: $ref: '#/components/examples/AddressDoesNotBelongToFacility' Address does not belong to doctor: $ref: '#/components/examples/AddressDoesNotBelongToDoctor' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /services: get: operationId: getServices description: | Services returned in this endpoint are dictionary services. Services returned here are from a dictionary (item_services). Extensions: * `services.only_diagnostics` - with this parameter in url, query results will return only dictionary of services dedicated to integration with diagnostics marketplace tags: - Services parameters: - $ref: '#/components/parameters/servicesWith' - $ref: '#/components/parameters/servicesSpecializationId' responses: '200': description: List of services content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Services' examples: Services: $ref: '#/components/examples/Services' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/services: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' get: operationId: getAddressServices description: | Services returned in this endpoint are address services. Services returned here are from specified address (address_services). Extensions: * `address_service.allowed_patients` - with this parameter in url, query results will return additional parameter indicating which type of patients are allowed to book a given service * `address_service.custom_name` - with this parameter in url, query results will return additional field with a custom name of an address service * `address_service.public_insurance_flow` - with this parameter in url, query results will return information if public insurance flow is supported tags: - Services parameters: - $ref: '#/components/parameters/startForAddressServices' - $ref: '#/components/parameters/addressServicesWith' responses: '200': description: List of services content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/AddressServices' examples: Services: $ref: '#/components/examples/AddressServices' Services with start date: $ref: '#/components/examples/AddressServicesWithStartDate' Services with allowed patients: $ref: '#/components/examples/AddressServicesWithAllowedPatients' Services with address_service.custom_name: $ref: '#/components/examples/AddressServicesWithCustomName' Services with address_service.public_insurance_flow: $ref: '#/components/examples/AddressServicesWithPublicInsuranceFlow' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' post: operationId: addAddressService description: | Adds new service to an address of the doctor Services added here are specific to this address (address_services). tags: - Services requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddAddressServiceRequest' examples: Add address service: $ref: '#/components/examples/AddAddressService' responses: '201': description: Service added to address headers: Location: schema: type: string description: Resource URL for the address service content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/AddressService' examples: Address service: $ref: '#/components/examples/AddressService' '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/AddressServiceValidationError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: facility: $ref: '#/components/examples/FacilityNotAuthorized' doctor: $ref: '#/components/examples/DoctorNotAuthorized' address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' '409': description: Request would result in creating conflicted or duplicated resources content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Address service: $ref: '#/components/examples/AddressServiceAlreadyExists' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/services/{address_service_id}: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/addressServiceId' get: operationId: getAddressService description: | Service returned in this endpoint is an address service. Service returned here is from a specified address (address_services). Extensions: * `address_service.allowed_patients` - with this parameter in url, query results will return additional parameter indicating which type of patients are allowed to book a given service * `address_service.custom_name` - with this parameter in url, query results will return additional field with a custom name of an address service * `address_service.public_insurance_flow` - with this parameter in url, query results will return information if public insurance flow is supported tags: - Services parameters: - $ref: '#/components/parameters/addressServiceWith' responses: '200': description: Address service content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/AddressService' examples: Address service: $ref: '#/components/examples/AddressService' Address service with allowed patients: $ref: '#/components/examples/AddressServiceWithAllowedPatients' Address service with address_service.custom_name: $ref: '#/components/examples/AddressServiceWithCustomName' Address service with address_service.public_insurance_flow: $ref: '#/components/examples/AddressServiceWithPublicInsuranceFlow' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Service does not belong to address: $ref: '#/components/examples/AddressServiceMismatch' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' patch: operationId: updateAddressService description: | Service updated in this endpoint is an address service from this specified address (address_services). tags: - Services requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAddressServiceRequest' examples: Update address service: $ref: '#/components/examples/PatchAddressService' responses: '200': description: Address service content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/AddressService' examples: Address service updated: $ref: '#/components/examples/PatchAddressServiceResponse' '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Address service validation error: $ref: '#/components/examples/AddressServiceValidationError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Service does not belong to address: $ref: '#/components/examples/AddressServiceMismatch' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' delete: operationId: deleteAddressService description: | Service deleted in this endpoint is an address service from this specified address (address_services). tags: - Services responses: '204': description: Successfully deleted address service '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Service does not belong to address: $ref: '#/components/examples/AddressServiceMismatch' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /insurance-providers: get: operationId: getInsuranceProviders description: Get a list of available insurance providers tags: - Insurances responses: '200': description: List of insurance providers content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/InsuranceProviders' examples: Dictionary insurance providers list: $ref: '#/components/examples/DictionaryInsuranceProviders' /insurance-providers/{insurance_provider_id}/plans: parameters: - $ref: '#/components/parameters/insuranceProviderId' get: operationId: getInsurancePlans description: Get a list of available insurance plans for a given insurance provider tags: - Insurances responses: '200': description: List of insurance plans content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/InsurancePlans' examples: Dictionary insurance plans list: $ref: '#/components/examples/DictionaryInsurancePlans' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/insurance-providers: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' get: operationId: getAddressInsuranceProviders description: Get a list of insurance providers for a specific address tags: - Insurances responses: '200': description: List of address insurance providers with insurance plans content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/AddressInsuranceProviders' examples: Insurance providers list: $ref: '#/components/examples/AddressInsuranceProviders' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' post: operationId: addAddressInsuranceProvider description: Adds new insurance provider to an address of the doctor tags: - Insurances requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddAddressInsuranceProviderRequest' examples: Add address insurance provider: $ref: '#/components/examples/AddAddressInsuranceProvider' Add address insurance provider with plans: $ref: '#/components/examples/AddAddressInsuranceProviderWithPlans' responses: '204': description: Successfully added insurance provider to address '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/AddAddressInsuranceValidationError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Insurance provider not from dictionary: $ref: '#/components/examples/InsuranceProviderNotFromDictionary' Object not found: $ref: '#/components/examples/ObjectNotFound' put: operationId: updateOrCreateAddressInsuranceProvider description: Updates or creates insurance provider for a given doctor address tags: - Insurances requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateOrCreateAddressInsuranceProviderRequest' examples: Update or create address insurance provider: $ref: '#/components/examples/UpdateOrCreateAddressInsuranceProvider' responses: '204': description: Successfully updated or created insurance provider for an address '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Insurance provider not from dictionary: $ref: '#/components/examples/InsuranceProviderNotFromDictionary' Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/insurance-providers/{insurance_provider_id}: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/insuranceProviderId' delete: operationId: deleteAddressInsuranceProvider description: Delete an insurance provider from doctor’s address tags: - Insurances responses: '204': description: Successfully added insurance provider to address '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/DeleteAddressInsuranceValidationError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Insurance provider not from dictionary: $ref: '#/components/examples/InsuranceProviderNotFromDictionary' Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/calendar: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' get: operationId: getCalendar description: Gets calendar of the address tags: - Calendars responses: '200': description: Calendar content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Calendar' examples: Calendar enabled: $ref: '#/components/examples/CalendarEnabled' Calendar disabled: $ref: '#/components/examples/CalendarDisabled' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Address does not belong to facility: $ref: '#/components/examples/AddressDoesNotBelongToFacility' Address does not belong to doctor: $ref: '#/components/examples/AddressDoesNotBelongToDoctor' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' Calendar not found: $ref: '#/components/examples/CalendarNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/calendar/enable: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' post: operationId: enableCalendar description: Enable calendar on the address tags: - Calendars responses: '200': description: Calendar has been enabled '400': description: Address is disabled content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Disabled address: $ref: '#/components/examples/AddressDisabled' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Calendar edition: $ref: '#/components/examples/CalendarEditionNotAuthorized' '409': description: Calendar is already enabled content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Already enabled calendar: $ref: '#/components/examples/CalendarAlreadyEnabled' '422': description: Request cannot be processed content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Doctor/address is not commercial: $ref: '#/components/examples/DoctorOrAddressNotCommercial' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/calendar/disable: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' post: operationId: disableCalendar description: Disable calendar on the address tags: - Calendars responses: '200': description: Calendar has been disabled '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Calendar edition: $ref: '#/components/examples/CalendarEditionNotAuthorized' '409': description: Calendar is already disabled content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Already disabled calendar: $ref: '#/components/examples/CalendarAlreadyDisabled' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/breaks: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' get: parameters: - name: since in: query required: true schema: type: string format: date-time example: '2021-05-16T14:00:00+01:00' - name: till in: query required: true schema: type: string format: date-time example: '2021-05-16T15:00:00+01:00' operationId: getCalendarBreaks description: Get the list of calendar breaks tags: - Calendar Breaks responses: '200': description: List of calendar breaks content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/CalendarBreaks' examples: Calendar break: $ref: '#/components/examples/CalendarBreak' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Calendar not found for this address: $ref: '#/components/examples/CalendarNotFoundForAddress' Object not found: $ref: '#/components/examples/ObjectNotFound' Invalid date parameter: $ref: '#/components/examples/InvalidDate' post: operationId: addCalendarBreak description: Add a new break to the calendar tags: - Calendar Breaks requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddCalendarBreakRequest' responses: '201': description: Break added to the calendar headers: Location: schema: type: string description: Resource URL for the new calendar break content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/CalendarBreak' examples: Calendar break: $ref: '#/components/examples/CalendarBreak' '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Parameter required (since): $ref: '#/components/examples/ParameterRequiredSince' Parameter required (till): $ref: '#/components/examples/ParameterRequiredTill' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Calendar edition: $ref: '#/components/examples/CalendarEditionNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' '409': description: Request would result in creating conflicted or duplicated resources content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Calendar break: $ref: '#/components/examples/CalendarBreakAlreadyExists' '422': description: Request cannot be processed content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Invalid date range given: $ref: '#/components/examples/InvalidDateRange' Doctor/address is not commercial: $ref: '#/components/examples/DoctorOrAddressNotCommercial' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/breaks/{break_id}: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/breakId' get: operationId: getCalendarBreak description: View a specific calendar break tags: - Calendar Breaks responses: '200': description: Calendar break content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/CalendarBreak' examples: Calendar break: $ref: '#/components/examples/CalendarBreak' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Calendar not found for this address: $ref: '#/components/examples/CalendarNotFoundForAddress' Break not found: $ref: '#/components/examples/BreakNotFoundForGivenAddress' Object not found: $ref: '#/components/examples/ObjectNotFound' patch: operationId: moveCalendarBreak description: | Move the calendar break If the break was created with **apply_on_coupled_addresses**, the breaks created alongside it on the doctor's coupled addresses in this facility are moved to the same new time range. tags: - Calendar Breaks requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MoveCalendarBreakRequest' responses: '204': description: Successfully moved calendar break '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Parameter required (since): $ref: '#/components/examples/ParameterRequiredSince' Parameter required (till): $ref: '#/components/examples/ParameterRequiredTill' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Calendar edition: $ref: '#/components/examples/CalendarEditionNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Calendar not found for this address: $ref: '#/components/examples/CalendarNotFoundForAddress' Break not found: $ref: '#/components/examples/BreakNotFoundForGivenAddress' Object not found: $ref: '#/components/examples/ObjectNotFound' '422': description: Request cannot be processed content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Same date range: $ref: '#/components/examples/SameDateRange' Till cannot be earlier than since: $ref: '#/components/examples/TillEarlierThanSince' delete: operationId: deleteCalendarBreak description: | Delete the calendar break If the break was created with **apply_on_coupled_addresses**, the breaks created alongside it on the doctor's coupled addresses in this facility are removed as well. tags: - Calendar Breaks responses: '204': description: Successfully removed calendar break '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Calendar edition: $ref: '#/components/examples/CalendarEditionNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Calendar not found for this address: $ref: '#/components/examples/CalendarNotFoundForAddress' Break not found: $ref: '#/components/examples/BreakNotFoundForGivenAddress' Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/slots: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' get: parameters: - $ref: '#/components/parameters/startRequired' - $ref: '#/components/parameters/endRequired' - $ref: '#/components/parameters/slotsWith' operationId: getSlots description: | List of free slots for the address within specified date range. The date range between start and end must not exceed 180 days; requests exceeding this limit will return a 400 error. Extensions: * `slot.services` - with this parameter in url, query results will return address services attached to given slots tags: - Slots responses: '200': description: List of slots content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Slots' examples: Slots: $ref: '#/components/examples/Slots' Slots with slot.services: $ref: '#/components/examples/SlotsWithServices' '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Date range exceeds maximum: $ref: '#/components/examples/DateRangeExceedsMaximum' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: There are no slots on given address: $ref: '#/components/examples/NoSlotsOnAddress' Break not found: $ref: '#/components/examples/BreakNotFoundForGivenAddress' Object not found: $ref: '#/components/examples/ObjectNotFound' put: operationId: replaceSlots description: "Overrides all existing slots for given date ranges. Can be used for adding, replacing or even removing the slots (check description for address_services in a request body). \n\nIf a duplicate request (with the same address and payload) is received:\n* it will be rejected with a 429 \"Too Many Requests\" status code if the original request was not fully processed yet \n* it will be ignored with a 201 status code for 3 minutes after the original request finished processing\n" tags: - Slots requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReplaceSlotsRequest' examples: New slots: $ref: '#/components/examples/ReplaceSlots' responses: '201': description: Successfully replaced slots '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/PutSlotsValidationError' Address service does not exist: $ref: '#/components/examples/AddressServiceDoesNotExist' Slots from further than 12 weeks: $ref: '#/components/examples/SlotsFromFurtherThen12Weeks' Insurance provider does not exist: $ref: '#/components/examples/InsuranceProviderDoesNotExist' Insurance providers missing when with-insurance-only: $ref: '#/components/examples/InsuranceProvidersMissing' Insurance providers not supported when without-insurance-only: $ref: '#/components/examples/InsuranceProvidersNotSupported' Slot exceeds a single day boundary: $ref: '#/components/examples/SlotExceedsSingleDayBoundary' Slot duration is less than 1 minute: $ref: '#/components/examples/SlotDurationIsLessThanOneMinute' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Calendar edition: $ref: '#/components/examples/CalendarEditionNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' '422': description: Request cannot be processed content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Doctor/address is not commercial: $ref: '#/components/examples/DoctorOrAddressNotCommercial' '429': description: Too many requests /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/slots/{start}/book: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/startRequiredPath' post: operationId: bookSlot description: Book a slot tags: - Slots requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BookSlotRequest' examples: Slot booked: $ref: '#/components/examples/BookSlot' responses: '200': description: Booking content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Booking' examples: Booked slot: $ref: '#/components/examples/Slot' '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/PostBookValidationError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Unable to book for this address: $ref: '#/components/examples/UnableToBookForAddress' Service does not exist: $ref: '#/components/examples/ServiceDoesNotExist' Unable to book with requested slot: $ref: '#/components/examples/UnableToPerformBookingWithSlot' Unable to book with requested service: $ref: '#/components/examples/UnableToPerformBookingWithService' Object not found: $ref: '#/components/examples/ObjectNotFound' '422': description: Request cannot be processed content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Doctor/address is not commercial: $ref: '#/components/examples/DoctorOrAddressNotCommercial' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/slots/{date}: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - name: date in: path required: true schema: type: string format: date example: '2021-05-16' delete: operationId: deleteSlots description: Delete slots for the given date tags: - Slots responses: '204': description: Successfully deleted slots for the given date '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Calendar edition: $ref: '#/components/examples/CalendarEditionNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/startRequired' - $ref: '#/components/parameters/endRequired' - $ref: '#/components/parameters/page' - $ref: '#/components/parameters/limit' get: operationId: getBookings description: | Get bookings list of a doctor in the facility Passing the `page` parameter in the query string will enable pagination. Extensions: * `booking.patient` - with this parameter in url, query results will return patient data for every booking * `booking.address_service` - with this parameter in url, query results will return address service for every booking * `booking.presence` - with this parameter in url, query results will return additional information weather patient was present for every booking * `booking.confirmation` - with this parameter in url, query results will return if visit was confirmed for every booking * `address_service.public_insurance_flow` - with this parameter in url, query results will return information if public insurance flow is supported on bookings addresses tags: - Bookings parameters: - $ref: '#/components/parameters/bookingsWith' responses: '200': description: Successfully retrieved bookings list content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Bookings' examples: Bookings: $ref: '#/components/examples/Bookings' Bookings when visit payments is enabled: $ref: '#/components/examples/BookingsVisitPaymentsEnabled' Bookings with booking.patient: $ref: '#/components/examples/BookingsWithPatient' Bookings with booking.address_service: $ref: '#/components/examples/BookingsWithAddressService' Bookings with booking.presence: $ref: '#/components/examples/BookingsWithPresence' Bookings with booking.confirmation: $ref: '#/components/examples/BookingsWithConfirmation' Bookings with pagination enabled: $ref: '#/components/examples/BookingsPaginated' Bookings with address_service.public_insurance_flow: $ref: '#/components/examples/BookingsWithPublicInsuranceFlow' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/bookingId' get: operationId: getBooking description: | View specific booking. Extensions: * `booking.moving` - with this parameter in url, query results will return moving data (origin and newest booking ids) as long as the booking was created after 2nd April 2025 (otherwise it will return null); for bookings that were not moved, origin and newest booking ids will be equal the id of a booking requested * `address_service.public_insurance_flow` - with this parameter in url, query results will return information if public insurance flow is supported on booking address tags: - Bookings parameters: - $ref: '#/components/parameters/bookingWith' responses: '200': description: Successfully retrieved booking content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Booking' examples: Booking: $ref: '#/components/examples/Booking' Booking when visit payments is enabled: $ref: '#/components/examples/BookingVisitPaymentsEnabled' Booking when videocall is enabled: $ref: '#/components/examples/BookingVideocallEnabled' Booking with booking.moving when booking was moved (for bookings created after 2nd April 2025): $ref: '#/components/examples/BookingWithMovingMoved' Booking with booking.moving when booking was not moved (for bookings created after 2nd April 2025): $ref: '#/components/examples/BookingWithMovingNotMoved' Booking with booking.moving (for bookings created before 2nd April 2025): $ref: '#/components/examples/BookingWithMovingNoDataAvailable' Booking with address_service.public_insurance_flow: $ref: '#/components/examples/BookingWithPublicInsuranceFlow' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' delete: operationId: cancelBooking description: Cancel the booking tags: - Bookings requestBody: required: false content: application/json: schema: $ref: '#/components/schemas/CancelBookingRequest' examples: Cancel booking with notifying the patient and reason: $ref: '#/components/examples/CancelBookingWithPatientNotificationAndReason' responses: '204': description: Successfully canceled the booking '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/DeleteBookingValidationError' Unable to cancel booking for given address: $ref: '#/components/examples/UnableToCancelForAddress' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}/move: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/bookingId' post: operationId: moveBooking description: | Move a booking for a doctor The optional **address_id** in the body may name an address of a **different doctor within the same facility**, which reassigns the booking to that doctor. The doctor is taken from the address, so no separate field is needed, and the `Location` header of the response names the doctor the booking now belongs to. An address outside the facility named in the path is still rejected with `403`. Omitting **address_id**, or naming another address of the same doctor, behaves as it always has. A booking that still holds money can only be moved to an address billed through the same payment account. When it is not, the request is rejected with `422` and nothing changes — cancel the booking and create a new one instead. A booking whose payment was fully refunded or charged back holds no money, so this restriction does not apply to it. Extensions: * `address_service.public_insurance_flow` - with this parameter in url, query results will return information if public insurance flow is supported on booking address tags: - Bookings parameters: - $ref: '#/components/parameters/moveBookingWith' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/MoveBookingRequest' examples: Move booking: $ref: '#/components/examples/MoveBooking' Move booking (to other address): $ref: '#/components/examples/MoveBookingToOtherAddress' responses: '201': description: Successfully moved the booking headers: Location: schema: type: string description: Resource URL for the new booking content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Booking' examples: Booking: $ref: '#/components/examples/Booking' Booking with address_service.public_insurance_flow: $ref: '#/components/examples/BookingWithPublicInsuranceFlow' '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/MoveBookingValidationError' Service does not belong to the address: $ref: '#/components/examples/ServiceDoesNotBelongToAddress' Service does not exist: $ref: '#/components/examples/ServiceDoesNotExist' Address does not exist: $ref: '#/components/examples/AddressDoesNotExist' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Address does not belong to facility: $ref: '#/components/examples/AddressDoesNotBelongToFacility' Address does not belong to doctor: $ref: '#/components/examples/AddressDoesNotBelongToDoctor' Booking does not belong to address: $ref: '#/components/examples/BookingDoesNotBelongToAddress' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' '409': description: Request would result in creating conflicted or duplicated resources content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Visit already moved or deleted: $ref: '#/components/examples/VisitAlreadyMovedOrDeleted' '422': description: The booking still holds money and the target address is billed through a different payment account content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Target address bills through another payment account: $ref: '#/components/examples/BookingCannotCrossPaymentAccounts' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}/confirm: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/bookingId' put: operationId: confirmBooking description: Confirm the booking tags: - Bookings requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ConfirmBookingRequest' examples: Confirm booking: $ref: '#/components/examples/ConfirmBooking' responses: '204': description: Successfully confirmed the booking '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/ConfirmBookingValidationError' Integration not authorized for address: $ref: '#/components/examples/ConfirmBookingInvalidIntegration' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' Address does not belong to facility: $ref: '#/components/examples/AddressDoesNotBelongToFacility' Address does not belong to doctor: $ref: '#/components/examples/AddressDoesNotBelongToDoctor' Booking does not belong to address: $ref: '#/components/examples/BookingDoesNotBelongToAddress' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' '409': description: Request would result in creating conflicted or duplicated resources content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Visit already confirmed: $ref: '#/components/examples/ConfirmBookingAlreadyConfirmed' Visit has been canceled: $ref: '#/components/examples/ConfirmBookingVisitCanceled' Visit has been deleted: $ref: '#/components/examples/ConfirmBookingVisitDeleted' Visit is in the past: $ref: '#/components/examples/ConfirmBookingPastVisit' /facilities/{facility_id}/doctors/{doctor_id}/opinion-request: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' put: operationId: requestOpinion description: After the visit was booked via clinics software, by calling this endpoint you can request SMS asking patient to leave an opinion. We do not store patient and visit information tags: - Bookings requestBody: description: Phone number of the patient content: application/json: schema: $ref: '#/components/schemas/OpinionRequest' examples: OpinionRequest: $ref: '#/components/examples/OpinionRequest' responses: '200': description: Successfully put opinion request '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/OpinionRequestValidationError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor not from given facility: $ref: '#/components/examples/DoctorDoesNotBelongToFacility' Requested visit not found: $ref: '#/components/examples/VisitNotFound' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' '409': description: Request would result in creating conflicted or duplicated resources content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Opinion already exists: $ref: '#/components/examples/OpinionAlreadyExist' '422': description: Request cannot be processed content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Cannot send request for opinion: $ref: '#/components/examples/CannotSendRequestForOpinion' /facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}/presence/patient: parameters: - $ref: '#/components/parameters/facilityId' - $ref: '#/components/parameters/doctorId' - $ref: '#/components/parameters/addressId' - $ref: '#/components/parameters/bookingId' post: operationId: markPatientPresence description: Mark the presence of the patient on the visit tags: - Patient Presence responses: '204': description: Successfully marked the presence '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/PostPresenceValidationError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' Visit does not belong to given doctor: $ref: '#/components/examples/VisitDoesNotBelongToDoctor' '409': description: Request would result in creating conflicted or duplicated resources content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Visit marked as canceled: $ref: '#/components/examples/VisitMarkedAsCanceled' delete: operationId: markPatientAbsence description: Mark the absence of the patient on the visit tags: - Patient Presence responses: '204': description: Successfully marked the absence '400': description: Validation of the submitted values wasn't successful content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Validation error: $ref: '#/components/examples/DeletePresenceValidationError' '403': description: You are not authorized to see this resource content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Facility: $ref: '#/components/examples/FacilityNotAuthorized' Doctor: $ref: '#/components/examples/DoctorNotAuthorized' Address: $ref: '#/components/examples/AddressNotAuthorized' '404': description: Resource not found content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Object not found: $ref: '#/components/examples/ObjectNotFound' Visit does not belong to given doctor: $ref: '#/components/examples/VisitDoesNotBelongToDoctor' '409': description: Request would result in creating conflicted or duplicated resources content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Visit marked as canceled: $ref: '#/components/examples/VisitMarkedAsCanceled' /{client-endpoint-url}: post: operationId: Push Notifications description: 'Pushing Notifications - To be able to use this method, client should give us an endpoint url, and we will be pushing notifications to this endpoint in real time. HTTP POST method will be used to push event data to endpoint. Note: Regardless of the response status (500, 200, 400) from the client endpoint, the events will be pushed only once. You can find every possible event notification requests below.' tags: - API Notification Callbacks security: [] callbacks: Slot booking: slot-booking: post: summary: Slot booking description: (optional) When patient is about to book a visit our system sends a notification to the specified 3rd party webhook, if 3rd party responds with 2xx HTTP Status Codes to the request the visit will be approved anything except 2xx HTTP Status Codes will not allow booking. Note that this notification is optional and will be enabled on request of the 3rd. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SlotBookingNotification' examples: Slot-booking notification body: $ref: '#/components/examples/SlotBookingNotification' Slot-booking notification body when visit payments are enabled: $ref: '#/components/examples/SlotBookingWhenVisitPaymentNotification' responses: '200': description: Your server returns this code when booking request is approved '400': description: Your server returns this code when booking request is denied '500': description: Your server returns this code when booking request is denied Slot booked: slot-booked: post: summary: Slot booked description: When patient books a visit from a doctor or doctor books a visit from their calendar. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SlotBookedNotification' examples: Slot-booked notification body: $ref: '#/components/examples/SlotBookedNotification' Slot-booked notification body when visit booked by doctor: $ref: '#/components/examples/SlotBookedByDoctorNotification' Slot-booked notification body when visit payments enabled: $ref: '#/components/examples/SlotBookedWhenVisitPaymentNotification' Slot-booked notification body when videocalls enabled: $ref: '#/components/examples/SlotBookedWhenVideocallNotification' responses: '200': description: Your server returns this code if it accepts the callback Booking canceled: booking-canceled: post: summary: Booking canceled description: When patient or doctor cancels a visit. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BookingCanceledNotification' examples: Booking-canceled notification body: $ref: '#/components/examples/BookingCanceledNotification' Booking-canceled notification body when visit canceled by doctor: $ref: '#/components/examples/BookingCanceledByDoctorNotification' responses: '200': description: Your server returns this code if it accepts the callback Booking moved: booking-moved: post: summary: Booking moved description: When doctor or patient changes the date or hour of the booking. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BookingMovedNotification' examples: Booking-moved notification body: $ref: '#/components/examples/BookingMovedNotification' responses: '200': description: Your server returns this code if it accepts the callback Booking moving: booking-moving: post: summary: Booking moving description: When patient is about to change a date or hour of a visit our system sends a notification to the specified 3rd party webhook, if 3rd party responds with 2xx HTTP Status Codes to the request the visit will be moved. Anything except 2xx HTTP Status Codes will not allow moving. This notification is optional and will be enabled on request of the 3rd party. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BookingMovingNotification' examples: Booking-moving notification body: $ref: '#/components/examples/BookingMovingNotification' responses: '200': description: Your server returns this code when booking moving request is approved '400': description: Your server returns this code when booking moving request is denied '500': description: Your server returns this code when booking moving request is denied Booking confirmed: booking-confirmed: post: summary: Booking confirmed description: When patient (or doctor) confirms the booking. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BookingConfirmedNotification' examples: Booking confirmed notification body: $ref: '#/components/examples/BookingConfirmedNotification' responses: '200': description: Your server returns this code if it accepts the callback Booking payment status changed: booking-payment-status-changed: post: summary: Booking payment status changed description: When status of a booking payment has changed. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BookingPaymentStatusChangedNotification' examples: Booking payment status changed notification body: $ref: '#/components/examples/BookingPaymentStatusChangedNotification' responses: '200': description: Your server returns this code if it accepts the callback Break created: break-created: post: summary: Break created description: When doctor created a break on their calendar. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BreakCreatedNotification' examples: Break-created notification body: $ref: '#/components/examples/BreakCreatedNotification' responses: '200': description: Your server returns this code if it accepts the callback Break removed: break-removed: post: summary: Break removed description: When doctor deleted the break from their calendar. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BreakRemovedNotification' examples: Break-removed notification body: $ref: '#/components/examples/BreakRemovedNotification' responses: '200': description: Your server returns this code if it accepts the callback Break moved: break-moved: post: summary: Break moved description: When doctor changed break dates. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BreakMovedNotification' examples: Break-moved notification body: $ref: '#/components/examples/BreakMovedNotification' responses: '200': description: Your server returns this code if it accepts the callback Presence marked: presence-marked: post: summary: Presence marked description: When presence was marked by doctor or patient. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PresenceMarkedNotification' examples: Presence-marked notification body: $ref: '#/components/examples/PresenceMarkedNotification' responses: '200': description: Your server returns this code if it accepts the callback Address service created: address-service-created: post: summary: Address service created description: When new address service is created. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddressServiceCreatedNotification' examples: Address-service-created notification body: $ref: '#/components/examples/AddressServiceCreatedNotification' responses: '200': description: Your server returns this code if it accepts the callback Address service deleted: address-service-deleted: post: summary: Address service deleted description: When the address service is deleted. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddressServiceDeletedNotification' examples: Address-service-deleted notification body: $ref: '#/components/examples/AddressServiceDeletedNotification' responses: '200': description: Your server returns this code if it accepts the callback Address service changed: address-service-changed: post: summary: Address service changed description: When the address service is modified. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddressServiceChangedNotification' examples: Address-service-changed notification body: $ref: '#/components/examples/AddressServiceChangedNotification' responses: '200': description: Your server returns this code if it accepts the callback Address commercial type changed: address-commercial-type-changed: post: summary: Address commercial type changed description: When the address commercial type is modified. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddressCommercialTypeChangedNotification' examples: Address-commercial-type-changed notification body: $ref: '#/components/examples/AddressCommercialTypeChangedNotification' responses: '200': description: Your server returns this code if it accepts the callback Address assigned: address-assigned: post: summary: Address assigned description: When the address is assigned to the doctor. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddressAssignedNotification' examples: Address-assigned notification body: $ref: '#/components/examples/AddressAssignedNotification' responses: '200': description: Your server returns this code if it accepts the callback Address unassigned: address-unassigned: post: summary: Address unassigned description: When the address is unassigned from the doctor. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddressUnassignedNotification' examples: Address-unassigned notification body: $ref: '#/components/examples/AddressUnassignedNotification' responses: '200': description: Your server returns this code if it accepts the callback responses: '200': description: Your server returns this code if it accepts the callback /notifications: get: operationId: Pull Notification description: 'Pulling Notifications - You can pull notifications via this endpoint. This page will respond to you with the earliest notification you haven’t been pulled yet. First In First Out (FIFO) principle applied here. This endpoint will respond with one notification per request until there aren’t any notifications left in the notification queue. Important: Notifications that are not pulled in 72 hours are marked as expired and deleted from the system.' tags: - API Notification Callbacks responses: '200': description: Notification from the the notification queue. content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/Notification' examples: Slot-booking notification body: $ref: '#/components/examples/SlotBookingNotification' Slot-booking notification body when visit payments are enabled: $ref: '#/components/examples/SlotBookingWhenVisitPaymentNotification' Slot-booked notification body: $ref: '#/components/examples/SlotBookedNotification' Slot-booked notification body when visit booked by doctor: $ref: '#/components/examples/SlotBookedByDoctorNotification' Slot-booked notification body when visit payments enabled: $ref: '#/components/examples/SlotBookedWhenVisitPaymentNotification' Slot-booked notification body when videocalls enabled: $ref: '#/components/examples/SlotBookedWhenVideocallNotification' Booking-canceled notification body: $ref: '#/components/examples/BookingCanceledNotification' Booking-canceled notification body when visit canceled by doctor: $ref: '#/components/examples/BookingCanceledByDoctorNotification' Booking-moved notification body: $ref: '#/components/examples/BookingMovedNotification' Booking-moving notification body: $ref: '#/components/examples/BookingMovingNotification' Booking-payment-status-changed notification body: $ref: '#/components/examples/BookingPaymentStatusChangedNotification' Break-created notification body: $ref: '#/components/examples/BreakCreatedNotification' Break-removed notification body: $ref: '#/components/examples/BreakRemovedNotification' Break-moved notification body: $ref: '#/components/examples/BreakMovedNotification' Presence-marked notification body: $ref: '#/components/examples/PresenceMarkedNotification' Address-service-created notification body: $ref: '#/components/examples/AddressServiceCreatedNotification' Address-service-deleted notification body: $ref: '#/components/examples/AddressServiceDeletedNotification' Address-service-changed notification body: $ref: '#/components/examples/AddressServiceChangedNotification' Address-commercial-type-changed notification body: $ref: '#/components/examples/AddressCommercialTypeChangedNotification' '404': description: Notification queue is empty. content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: No notifications found: $ref: '#/components/examples/NotificationNotFound' /notifications/multiple: parameters: - $ref: '#/components/parameters/multipleNotificationsLimit' get: operationId: Pull Multiple Notification description: 'Pulling Notifications - You can pull multiple notifications via this endpoint. This page will respond to you with the earliest notifications you haven’t been pulled yet in the quantity limited by `limit` parameter. First In First Out (FIFO) principle applied here. This endpoint will respond with the collection of notifications and amount of remaining notifications. Important: Notifications that are not pulled in 72 hours are marked as expired and deleted from the system.' tags: - API Notification Callbacks responses: '200': description: Collection of notifications from the notification queue. content: application/vnd.docplanner+json; charset=UTF-8: schema: $ref: '#/components/schemas/PullMultipleNotificationsResponse' examples: Pulling multiple notifications: $ref: '#/components/examples/PullingMultipleNotifications' Pulling all of remaining notifications: $ref: '#/components/examples/PullingAllOfRemainingNotifications' '404': description: Notification queue is empty. content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: No notifications found: $ref: '#/components/examples/NotificationNotFound' /notifications/release: post: operationId: Release Notifications description: Action allowing to trigger re-dispatching all the notifications that were not processed correctly. Call to this endpoint should be repeated periodically to ensure consistency between systems. Docplanner API allows to perform notifications release once per hour. Endpoint can be used only if Docplanner system is pushing events to the external endpoints. tags: - API Notification Callbacks responses: '204': description: Successfully queued notifications '403': description: You cannot perform this action because API client is not using PUSH communication model or API client is not enabled. content: application/vnd.error+docplanner+json: schema: $ref: '#/components/schemas/Error' examples: Missing notifications URL setup: $ref: '#/components/examples/NotificationsReleaseForbiddenError' '429': description: You have reached the limit of 1 request per hour headers: Retry-After: schema: type: integer description: Time (in seconds) until the next call is available components: securitySchemes: oauth2: name: OAuth 2.0 type: oauth2 flows: clientCredentials: tokenUrl: https://www.{domain}/oauth/v2/token scopes: integration: API integration description: | The API utilizes the industry-standard [OAuth 2.0](https://tools.ietf.org/html/rfc6749) protocol. All requests to our API must be authenticated and must include a valid access token. `NOTE! Our SSO Api version is v2 while our Integration Api version is v3` You can get a token for testing purposes with cURL ``` curl -u {client_id}:{client_secret} https://www.{domain}/oauth/v2/token -d 'grant_type=client_credentials&scope=integration' ``` A response example you can expect ``` { "access_token": "03807cb390319329bdf6c777d4dfae9c0d3b3c35", "expires_in": 3600, "token_type": "bearer", "scope": null } ``` And then with every request in the `request header` you should add your bearer token like so: ``` Authorization: Bearer {access_token} ``` parameters: facilityId: name: facility_id in: path description: ID of the Facility example: 1 required: true schema: type: string facilityWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/FacilityScopes' doctorsWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/DoctorsScopes' doctorId: name: doctor_id in: path description: ID of a doctor in a facility example: 123 required: true schema: type: string doctorWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/DoctorScopes' addressesWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/AddressesScopes' addressId: name: address_id in: path description: ID of a doctor`s address in a facility example: 123 required: true schema: type: string addressWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/AddressScopes' servicesWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/ServicesScopes' servicesSpecializationId: name: specialization_id in: query description: Filters services by specialization. When provided, only services associated with the given specialization are returned. example: 12 required: false schema: type: integer addressServicesWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/AddressServicesScopes' addressServiceId: name: address_service_id in: path description: ID of an address service example: 123 required: true schema: type: string addressServiceWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/AddressServiceScopes' insuranceProviderId: name: insurance_provider_id in: path description: ID of an insurance provider from DP dictionary example: 123 required: true schema: type: string startForAddressServices: name: start in: query description: Slot start date (parameter must be urlencoded before sending request). Limits results to only those linked to slots that start on that date. required: false schema: type: string format: date-time example: '2021-05-16T14:00:00+01:00' startRequired: name: start in: query description: Slot start date (parameter must be urlencoded before sending request) required: true schema: type: string format: date-time example: '2021-05-16T14:00:00+01:00' startRequiredPath: name: start in: path description: Slot start date (parameter must be urlencoded before sending request) required: true schema: type: string format: date-time example: '2021-05-16T14:00:00+01:00' endRequired: name: end in: query description: Slot end date (parameter must be urlencoded before sending request) required: true schema: type: string format: date-time example: '2021-05-16T15:00:00+01:00' slotsWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/SlotsScopes' bookingsWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/BookingsScopes' bookingWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/BookingScopes' moveBookingWith: name: with in: query required: false style: simple schema: type: array uniqueItems: true items: $ref: '#/components/schemas/MoveBookingScopes' breakId: name: break_id in: path description: ID of the Calendar Break required: true schema: type: string example: 123 bookingId: name: booking_id in: path description: ID of the Booking required: true schema: type: string example: 123 multipleNotificationsLimit: name: limit in: query description: Maximum number of notifications pulled. Can take value from 1 to 100. If not provided the default value of 1 is applied. required: false schema: type: integer example: 5 page: name: page in: query description: Page number to use for pagination. If not provided the pagination is not applied. required: false schema: type: integer example: 1 limit: name: limit in: query description: Maximum number of items per page. If not provided the default value of 100 is applied if pagination is used. required: false schema: type: integer example: 100 schemas: Facility: type: object properties: id: type: string example: 1 name: type: string example: Sample Clinic 1 doctors: $ref: '#/components/schemas/Doctors' FacilityScopes: type: string enum: - facility.doctors Facilities: type: object properties: _items: type: array items: $ref: '#/components/schemas/Facility' Doctor: type: object properties: id: type: string example: 123 name: type: string example: Sample surname: type: string example: Doctor 123 addresses: $ref: '#/components/schemas/Addresses' specialization: $ref: '#/components/schemas/Specializations' license_numbers: $ref: '#/components/schemas/LicenseNumbers' DoctorsScopes: type: string enum: - doctor.profile_url - doctor.specializations - doctor.license_numbers Doctors: type: object properties: _items: type: array items: $ref: '#/components/schemas/Doctor' DoctorScopes: type: string enum: - doctor.profile_url - doctor.addresses - doctor.license_numbers - address.booking_extra_fields - address.online_only - address.visit_payment - address.commercial_type Specialization: type: object properties: id: type: string example: 12 name: type: string example: Specialization example Specializations: type: object properties: _items: type: array items: $ref: '#/components/schemas/Specialization' LicenseNumber: type: object properties: id: type: string example: 12 license_number: type: string example: License number LicenseNumbers: type: object properties: _items: type: array items: $ref: '#/components/schemas/LicenseNumber' Address: type: object properties: id: type: string example: 333 name: type: string example: Test hospital nullable: true city_name: type: string example: Testing city nullable: true post_code: type: string example: XX-XXX nullable: true street: type: string example: Testing street nullable: true is_online_only: type: boolean example: false visit_payment: type: boolean example: false booking_extra_fields: type: object properties: gender: type: boolean example: true nin: type: boolean example: true birth_date: type: boolean example: true commercial_type: type: string enum: - premium - saas-only - basic example: basic insurance_support: type: string enum: - private - insurance - private_and_insurance example: private AddressScopes: type: string enum: - address.online_only - address.visit_payment - address.commercial_type - address.insurance_support Addresses: type: object properties: _items: type: array items: $ref: '#/components/schemas/Address' AddressesScopes: type: string enum: - address.online_only - address.visit_payment - address.commercial_type - address.insurance_support UpdateAddressRequest: type: object properties: insurance_support: type: string enum: - private - insurance - private_and_insurance Service: type: object properties: id: type: string example: 1 name: type: string example: Regular visit Services: type: object properties: _items: type: array items: $ref: '#/components/schemas/Service' ServicesScopes: type: string enum: - services.only_diagnostics AllowedPatientsData: type: object properties: minimum_age: type: integer example: 18 description: Minimum age of patients allowed for this service nullable: true maximum_age: type: integer example: 65 description: Maximum age of patients allowed for this service nullable: true AddressService: type: object properties: id: type: string example: 468628 name: type: string example: EEG price: type: integer example: 500 nullable: true description: Integer part of the price (decimals truncated) is_price_from: type: boolean example: true description: If true, the price is the minimum price of the service is_default: type: boolean example: false service_id: type: string nullable: true example: null description: type: string nullable: true example: null duration: type: integer example: 30 is_visible: type: boolean example: true allowed_patients: nullable: true allOf: - $ref: '#/components/schemas/AllowedPatientsData' custom_name: type: string nullable: true example: Custom Service Name AddressServiceScopes: type: string enum: - address_service.allowed_patients - address_service.custom_name - address_service.public_insurance_flow AddressServices: type: object properties: _items: type: array items: $ref: '#/components/schemas/AddressService' AddressServicesScopes: type: string enum: - address_service.allowed_patients - address_service.custom_name - address_service.public_insurance_flow AddAddressServiceRequest: type: object properties: service_id: type: string example: 123 description: ID of a service is_price_from: type: boolean example: true description: If true, the price is the minimum price of the service price: type: number example: 169.9 description: Service price. Maximum 2 decimal places; additional decimals are truncated. Invalid formats are rejected with 400 Bad Request nullable: true description: type: string example: Address service description nullable: true is_visible: type: boolean example: true default_duration: type: integer example: 20 nullable: true allowed_patients: nullable: true allOf: - $ref: '#/components/schemas/AllowedPatientsData' custom_name: type: string example: Custom USG Name nullable: true minLength: 1 description: A custom display name for the service. Cannot be an empty string. required: - service_id UpdateAddressServiceRequest: type: object properties: is_price_from: type: boolean example: true description: If true, the price is the minimum price of the service price: type: number example: 169.9 description: Service price. Maximum 2 decimal places; additional decimals are truncated. Invalid formats are rejected with 400 Bad Request nullable: true description: type: string example: Address service description nullable: true default_duration: type: integer example: 20 is_visible: type: boolean example: true allowed_patients: nullable: true allOf: - $ref: '#/components/schemas/AllowedPatientsData' custom_name: type: string example: Custom USG Name nullable: true minLength: 1 description: A custom display name for the service. Cannot be an empty string. Send null to clear the custom name. InsuranceProvider: type: object properties: insurance_provider_id: type: string example: 1 name: type: string example: Insurance Provider Sample InsuranceProviders: type: object properties: _items: type: array items: $ref: '#/components/schemas/InsuranceProvider' AddressInsuranceProvider: type: object properties: insurance_provider_id: type: string example: 1 name: type: string example: Insurance Provider with plans Sample insurance_plans: $ref: '#/components/schemas/InsurancePlans' AddressInsuranceProviders: type: object properties: _items: type: array items: $ref: '#/components/schemas/AddressInsuranceProvider' InsurancePlan: type: object properties: insurance_plan_id: type: string example: 1 name: type: string example: Insurance Plan Sample InsurancePlans: type: object properties: _items: type: array items: $ref: '#/components/schemas/InsurancePlan' AddAddressInsuranceProviderRequest: type: object properties: insurance_provider_id: type: string example: 1 description: ID of an insurance provider from DP dictionary insurance_plans: type: array items: type: object properties: insurance_plan_id: type: string example: 999 description: ID of an insurance plan from DP dictionary required: - insurance_provider_id UpdateOrCreateAddressInsuranceProviderRequest: type: object properties: insurance_provider_id: type: string example: 1 description: ID of an insurance provider from DP dictionary insurance_plans: type: array items: type: object properties: insurance_plan_id: type: string example: 999 description: ID of an insurance plan from DP dictionary required: - insurance_provider_id Calendar: type: object properties: status: type: string example: enabled enum: - enabled - disabled CalendarBreak: type: object properties: id: type: string example: 1714456 since: type: string format: date-time example: '2021-05-16T14:00:00+01:00' till: type: string format: date-time example: '2021-05-16T15:00:00+01:00' description: type: string example: Optional description nullable: true CalendarBreaks: type: object properties: _items: type: array items: $ref: '#/components/schemas/CalendarBreak' AddCalendarBreakRequest: type: object properties: since: type: string format: date-time example: '2021-05-16T14:00:00+01:00' till: type: string format: date-time example: '2021-05-16T15:00:00+01:00' description: type: string example: Optional reason for adding this particular break apply_on_coupled_addresses: type: boolean default: false description: | When true, the same break is also created on the coupled addresses of this doctor in this facility - the online-only ones for an offline address and the other way round. Those breaks are moved and removed together with this one. The response describes only the break created on the requested address. example: true required: - since - till MoveCalendarBreakRequest: type: object properties: since: type: string format: date-time example: '2021-05-16T14:00:00+01:00' till: type: string format: date-time example: '2021-05-16T15:00:00+01:00' required: - since - till Slot: type: object properties: start: type: string format: date-time example: '2021-05-16T14:00:00+01:00' address_services: nullable: true allOf: - $ref: '#/components/schemas/AddressServices' Slots: type: object properties: _items: type: array items: $ref: '#/components/schemas/Slot' SlotsScopes: type: string enum: - slot.services BookSlotRequest: type: object properties: address_service_id: type: string example: 123 is_returning: type: boolean example: false patient: $ref: '#/components/schemas/Patient' duration: type: integer example: 20 label: type: string example: label default: null nullable: true comment: type: string example: comment default: null nullable: true insurance_provider_id: type: string example: 14 default: null nullable: true insurance_plan_id: type: string example: 2 default: null nullable: true is_recurring: type: boolean example: true default: false description: Whether the visit should be marked as recurrent (there will be no confirmation notification sent to the patient) required: - address_service_id - patient - duration ReplaceSlotsRequest: type: object properties: slots: type: array items: type: object properties: address_services: description: If set to null or empty collection, it will **remove** all the slots from a given time range type: array nullable: true items: type: object properties: address_service_id: type: string example: 305686 duration: type: integer example: 30 required: - address_service_id - duration start: type: string format: date-time example: '2021-05-16T14:00:00+01:00' end: type: string format: date-time example: '2021-05-16T16:00:00+01:00' insurance_accepted: type: string nullable: true enum: - with-and-without-insurance - without-insurance-only - with-insurance-only default: with-and-without-insurance example: with-and-without-insurance description: Accepted insurance configuration. If **with-insurance-only** is passed, **insurance_providers** field MUST NOT be empty. If **without-insurance-only** is passed, **insurance_providers** MUST be empty insurance_providers: type: array nullable: true items: type: integer example: 52 required: - start - end required: - slots Booking: type: object properties: id: type: string example: '2134124' status: type: string example: booked start_at: type: string format: date-time example: '2021-05-16T14:00:00+01:00' end_at: type: string format: date-time example: '2021-05-16T14:30:00+01:00' duration: type: integer example: 30 booked_by: type: string enum: - user - doctor - integration canceled_by: type: string enum: - '' - user - doctor - integration booked_at: type: string format: date-time example: '2021-05-12T12:00:00+01:00' canceled_at: type: string format: date-time example: '2021-05-16T14:30:00+01:00' nullable: true moving: nullable: true allOf: - $ref: '#/components/schemas/BookingMoving' patient: $ref: '#/components/schemas/BookingPatient' address_service: nullable: true allOf: - $ref: '#/components/schemas/AddressService' comment: type: string nullable: true presence: type: string enum: - present - absent nullable: true insurance: nullable: true allOf: - $ref: '#/components/schemas/Insurance' visit_payment: type: boolean nullable: true visit_payment_status: type: string nullable: true videocall_url: type: string nullable: true Bookings: type: object properties: _items: type: array items: $ref: '#/components/schemas/Booking' page: type: integer example: 1 nullable: true limit: type: integer example: 100 nullable: true pages: type: integer example: 11 nullable: true total: type: integer example: 106 nullable: true BookingsScopes: type: string enum: - booking.patient - booking.address_service - booking.presence - address_service.public_insurance_flow BookingScopes: type: string enum: - booking.moving - address_service.public_insurance_flow MoveBookingScopes: type: string enum: - address_service.public_insurance_flow Insurance: type: object properties: id: type: string name: type: string plan: type: string nullable: true plan_id: type: string nullable: true BookingPatient: type: object properties: name: type: string example: Abraham surname: type: string example: Lincoln email: type: string example: example@example.com nullable: true phone: type: string example: '+48123123123' nullable: true birth_date: type: string format: date example: '1985-01-01' nullable: true nin: type: string example: '894237492' nullable: true gender: type: string enum: - m - f nullable: true is_returning: type: boolean example: false insurance_number: type: string example: CARD-7654321 nullable: true BookingMoving: type: object properties: origin_booking_id: type: string example: '2134124' newest_booking_id: type: string example: '2134125' CancelBookingRequest: type: object properties: reason: type: string example: Doctor will not be present on that day description: Reason why visit was canceled ConfirmBookingRequest: type: object properties: confirmed_by: type: string enum: - user - admin example: user description: Who confirmed the booking required: - confirmed_by MoveBookingRequest: type: object properties: address_service_id: type: string example: 112 start: type: string format: date-time example: '2021-05-26T16:00:00+01:00' duration: type: integer example: 30 address_id: type: string example: 12345789 required: - address_service_id Patient: type: object properties: name: type: string example: Abraham surname: type: string example: Lincoln email: type: string example: example@example.com nullable: true phone: type: string example: '+48123123123' nullable: true birth_date: type: string format: date example: '1985-01-01' nullable: true nin: type: string example: '894237492' nullable: true gender: type: string enum: - m - f nullable: true marketing_consent: type: boolean example: true default: null nullable: true data_privacy_consent: type: boolean example: true default: null nullable: true required: - name - phone OpinionRequest: type: object properties: phone: type: string example: '123456789' required: - phone AddressServiceNotification: type: object properties: id: type: string example: 101 name: type: string example: USG price: type: integer example: 50 description: Integer part of the price (decimals truncated) is_price_from: type: boolean example: false description: If true, the price is the minimum price of the service is_visible: type: boolean example: true VisitBookingRequestNotification: type: object properties: booking_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' booking_by: type: string enum: - user - doctor - integration duration: type: integer example: 30 start_at: type: string format: date-time example: '2021-05-26T16:00:00+01:00' end_at: type: string format: date-time example: '2021-05-26T16:30:00+01:00' address_service: nullable: true allOf: - $ref: '#/components/schemas/AddressServiceNotification' patient: $ref: '#/components/schemas/Patient' signature: type: string example: 699c9b15-a72f-741b-cd24-fdef7b00551e comment: type: string example: Additional information about the visit visit_payment: type: boolean example: true SlotBookingNotification: type: object properties: name: type: string example: slot-booking data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' visit_booking_request: $ref: '#/components/schemas/VisitBookingRequestNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' InsuranceNotification: type: object properties: id: type: string example: 1 name: type: string example: Sample Insurance 1 plan: type: string example: '' plan_id: type: string example: '' BookingNotification: type: object properties: id: type: string example: '2134124' status: type: string example: booked start_at: type: string format: date-time example: '2021-05-26T16:00:00+01:00' end_at: type: string format: date-time example: '2021-05-26T16:30:00+01:00' duration: type: integer example: 30 booked_by: type: string enum: - user - doctor - integration canceled_by: type: string enum: - '' - user - doctor - integration booked_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' canceled_at: type: string format: date-time example: '2021-05-16T10:18:34+01:00' nullable: true address_service: nullable: true allOf: - $ref: '#/components/schemas/AddressServiceNotification' patient: $ref: '#/components/schemas/Patient' signature: type: string example: 699c9b15-a72f-741b-cd24-fdef7b00551e comment: type: string example: Additional information about the visit insurance: nullable: true allOf: - $ref: '#/components/schemas/InsuranceNotification' visit_payment: type: boolean example: true videocall_url: type: string example: http://url-to-video-call SlotBookedNotification: type: object properties: name: type: string example: slot-booked data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' visit_booking: $ref: '#/components/schemas/BookingNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' BookingCanceledNotification: type: object properties: name: type: string example: booking-canceled data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' visit_booking: $ref: '#/components/schemas/BookingNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' BookingMovedNotification: type: object properties: name: type: string example: booking-moved data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' old_visit_booking: $ref: '#/components/schemas/BookingNotification' new_visit_booking: $ref: '#/components/schemas/BookingNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' BookingMovingNotification: type: object properties: name: type: string example: booking-moving data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' canceling_booking: $ref: '#/components/schemas/BookingNotification' creating_booking: $ref: '#/components/schemas/VisitBookingRequestNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' BookingConfirmedNotification: type: object properties: name: type: string example: booking-confirmed data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' visit_booking: $ref: '#/components/schemas/BookingNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' BookingPaymentStatusChangedNotification: type: object properties: name: type: string example: booking-payment-status-changed data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' visit_booking: $ref: '#/components/schemas/BookingNotification' visit_payment_status: type: object properties: status_from: type: string enum: - paid - waiting_for_confirmation - not-paid - refunded - charged_back example: not-paid status_to: type: string enum: - paid - waiting_for_confirmation - not-paid - refunded - charged_back example: paid changed_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' BreakNotification: type: object properties: id: type: string example: '2573784' since: type: string format: date-time example: '2021-05-14T10:00:00+01:00' till: type: string format: date-time example: '2021-05-14T12:00:00+01:00' BreakCreatedNotification: type: object properties: name: type: string example: break-created data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' break: $ref: '#/components/schemas/BreakNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' BreakRemovedNotification: type: object properties: name: type: string example: break-removed data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' break: $ref: '#/components/schemas/BreakNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' BreakMovedNotification: type: object properties: name: type: string example: break-moved data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' break: $ref: '#/components/schemas/BreakNotification' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' PresenceMarkedNotification: type: object properties: name: type: string example: presence-marked data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' visit_booking: $ref: '#/components/schemas/BookingNotification' presence: type: string enum: - ABSENT - PRESENT example: ABSENT created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' AddressServiceCreatedNotification: type: object properties: name: type: string example: address-service-created data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' address_service: $ref: '#/components/schemas/AddressService' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' AddressServiceDeletedNotification: type: object properties: name: type: string example: address-service-deleted data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' address_service: $ref: '#/components/schemas/AddressService' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' AddressServiceChangedNotification: type: object properties: name: type: string example: address-service-changed data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' address_service: $ref: '#/components/schemas/AddressService' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' AddressCommercialTypeChangedNotification: type: object properties: name: type: string example: address-commercial-type-changed data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' AddressAssignedNotification: type: object properties: name: type: string example: address-assigned data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' AddressUnassignedNotification: type: object properties: name: type: string example: address-unassigned data: type: object properties: facility: $ref: '#/components/schemas/Facility' doctor: $ref: '#/components/schemas/Doctor' address: $ref: '#/components/schemas/Address' created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' Notification: type: object properties: name: type: string enum: - slot-booking - slot-booked - booking-canceled - booking-moved - booking-moving - booking-confirmed - break-created - break-moved - break-removed - presence-marked - address-service-created - address-service-deleted - address-service-changed - address-commercial-type-changed example: slot-booked data: type: object created_at: type: string format: date-time example: '2021-05-12T10:18:34+01:00' PullMultipleNotificationsResponse: type: object properties: notifications: type: array items: $ref: '#/components/schemas/Notification' remaining: type: integer example: 2 Error: type: object properties: errors: type: array items: type: string message: type: string examples: SlotBookingNotification: value: name: slot-booking data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking_request: booking_at: '2021-05-12T10:18:24+01:00' booking_by: user duration: 30 start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 comment: Additional information about the visit created_at: '2021-05-12T10:18:34+01:00' SlotBookingWhenVisitPaymentNotification: value: name: slot-booking data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking_request: booking_at: '2021-05-12T10:18:24+01:00' booking_by: user duration: 30 start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 comment: Additional information about the visit visit_payment: true created_at: '2021-05-12T10:18:34+01:00' SlotBookedNotification: value: name: slot-booked data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6263715' status: booked start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T10:18:24+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 comment: Additional information about the visit insurance: id: '1' name: Sample Insurance 1 plan: '' plan_id: '' created_at: '2021-05-12T10:18:34+01:00' SlotBookedByDoctorNotification: value: name: slot-booked data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6263715' status: booked start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: doctor canceled_by: '' booked_at: '2021-05-12T10:18:24+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 comment: Additional information about the visit created_at: '2021-05-12T10:18:34+01:00' SlotBookedWhenVisitPaymentNotification: value: name: slot-booked data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6263715' status: booked start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T10:18:24+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 comment: Additional information about the visit visit_payment: true created_at: '2021-05-12T10:18:34+01:00' SlotBookedWhenVideocallNotification: value: name: slot-booked data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6263715' status: booked start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T10:18:24+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 comment: Additional information about the visit videocall_url: http://url-to-video-call created_at: '2021-05-12T10:18:34+01:00' BookingCanceledNotification: value: name: booking-canceled data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6263715' status: canceled start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceled_by: user booked_at: '2021-05-12T10:18:24+01:00' canceled_at: '2021-05-14T15:45:57+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 created_at: '2021-05-14T15:46:34+01:00' BookingCanceledByDoctorNotification: value: name: booking-canceled data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6263715' status: canceled start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceled_by: doctor booked_at: '2021-05-12T10:18:24+01:00' canceled_at: '2021-05-14T15:45:57+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 created_at: '2021-05-14T15:46:34+01:00' BookingMovedNotification: value: name: booking-moved data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx old_visit_booking: id: '6263715' status: canceled start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceled_by: doctor booked_at: '2021-05-12T10:18:24+01:00' canceled_at: '2021-05-14T15:45:57+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 new_visit_booking: id: '6264532' status: booked start_at: '2021-05-27T11:00:00+01:00' end_at: '2021-05-27T11:30:00+01:00' duration: 30 booked_by: doctor canceled_by: '' booked_at: '2021-05-14T10:19:02+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 created_at: '2021-05-14T15:46:34+01:00' BookingMovingNotification: value: name: booking-moving data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx canceling_booking: id: '6263715' start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceling_by: doctor booked_at: '2021-05-12T10:18:24+01:00' canceling_at: '2021-05-14T15:45:57+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true creating_booking: start_at: '2021-05-27T11:00:00+01:00' end_at: '2021-05-27T11:30:00+01:00' duration: 30 booking_by: doctor booking_at: '2021-05-14T10:19:02+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true signature: 699c9b15-a72f-741b-cd24-fdef7b00551e created_at: '2021-05-14T15:46:34+01:00' BookingConfirmedNotification: value: name: booking-confirmed data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6263715' status: booked start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T10:18:24+01:00' address_service: id: '243665' name: biopsja nerki price: 50 is_price_from: false is_visible: true patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 comment: Additional information about the visit created_at: '2021-05-12T10:18:34+01:00' BookingPaymentStatusChangedNotification: value: name: booking-payment-status-changed data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6263715' status: booked start_at: '2021-05-26T16:00:00+01:00' end_at: '2021-05-26T16:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T10:18:24+01:00' canceled_at: null, comment: Additional information about the visit patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m insurance_number: CARD-7654321 signature: f6b9b2fc-4faa-feab-58d9-26a3767f1426 visit_payment_status: status_from: not-paid status_to: paid changed_at: '2021-05-12T10:18:34+01:00' created_at: '2021-05-12T10:18:34+01:00' BreakCreatedNotification: value: name: break-created data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx break: id: '2573784' since: '2021-05-25T10:00:00+01:00' till: '2021-05-25T12:00:00+01:00' created_at: '2021-05-14T15:46:34+01:00' BreakRemovedNotification: value: name: break-removed data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx break: id: '2573784' since: '2021-05-25T10:00:00+01:00' till: '2021-05-25T12:00:00+01:00' created_at: '2021-05-14T15:46:34+01:00' BreakMovedNotification: value: name: break-moved data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx break: id: '2573784' since: '2021-05-25T10:00:00+01:00' till: '2021-05-25T12:00:00+01:00' created_at: '2021-05-14T15:46:34+01:00' PresenceMarkedNotification: value: name: presence-marked data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6264532' status: booked start_at: '2021-05-27T11:00:00+01:00' end_at: '2021-05-27T11:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-14T10:19:02+01:00' patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m is_returning: true insurance_number: CARD-7654321 signature: f6b9b2fc-4faa-feab-58d9-26a3767f1426 presence: ABSENT created_at: '2021-05-14T15:46:34+01:00' AddressServiceCreatedNotification: value: name: address-service-created data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx address_service: id: '111' name: USG price: 150 is_price_from: false is_default: true description: Address service description 1 service_id: '1' is_visible: true created_at: '2021-05-14T15:46:34+01:00' AddressServiceDeletedNotification: value: name: address-service-deleted data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx address_service: id: '111' name: USG price: 150 is_price_from: false is_default: true description: Address service description 1 service_id: '1' is_visible: true created_at: '2021-05-14T15:46:34+01:00' AddressServiceChangedNotification: value: name: address-service-changed data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx address_service: id: '111' name: USG price: 150 is_price_from: false is_default: true description: Address service description 1 service_id: '1' is_visible: true created_at: '2021-05-14T15:46:34+01:00' AddressCommercialTypeChangedNotification: value: name: address-commercial-type-changed data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx commercial_type: premium created_at: '2021-05-14T15:46:34+01:00' AddressAssignedNotification: value: name: address-assigned data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx commercial_type: premium created_at: '2021-05-14T15:46:34+01:00' AddressUnassignedNotification: value: name: address-unassigned data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx commercial_type: premium created_at: '2021-05-14T15:46:34+01:00' PullingMultipleNotifications: value: notifications: - name: break-created data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx break: id: '2573784' since: '2021-05-25T10:00:00+01:00' till: '2021-05-25T12:00:00+01:00' created_at: '2021-05-14T15:46:34+01:00' - name: presence-marked data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx visit_booking: id: '6264532' status: booked start_at: '2021-05-27T11:00:00+01:00' end_at: '2021-05-27T11:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-14T10:19:02+01:00' patient: name: Abraham surname: Lincoln email: example@example.com phone: '+48123123123' birth_date: '1985-01-01' nin: '894237492' gender: m is_returning: true insurance_number: CARD-7654321 signature: f6b9b2fc-4faa-feab-58d9-26a3767f1426 presence: ABSENT created_at: '2021-05-14T15:46:34+01:00' remaining: 5 PullingAllOfRemainingNotifications: value: notifications: - name: break-created data: facility: id: '1' name: Sample hospital doctor: id: '123' name: Sample surname: Doctor 123 address: id: '111' name: Example hospital street: Some street post_code: xx-xxx break: id: '2573784' since: '2021-05-25T10:00:00+01:00' till: '2021-05-25T12:00:00+01:00' created_at: '2021-05-14T15:46:34+01:00' remaining: 0 Facilities: value: _items: - id: '1' name: Sample hospital - id: '2' name: Another sample hospital Facility: value: id: '1' name: Sample hospital FacilityWithDoctors: value: id: '1' name: Sample hospital doctors: _items: - id: '123' name: Sample surname: Doctor 123 - id: '234' name: Sample surname: Doctor 234 Doctors: value: _items: - id: '123' name: Sample surname: Doctor 123 - id: '234' name: Sample surname: Doctor 234 DoctorsWithProfileUrl: value: _items: - id: '123' name: Sample surname: Doctor 123 profile_url: http://url-to-doctors-profile - id: '234' name: Sample surname: Doctor 234 profile_url: http://url-to-doctors-profile DoctorsWithSpecializations: value: _items: - id: '123' name: Sample surname: Doctor 123 specializations: _items: - id: '12' name: Specialization example 12 - id: '234' name: Sample surname: Doctor 234 specializations: _items: - id: '23' name: Specialization example 23 DoctorsWithLicenseNumbers: value: _items: - id: '123' name: Sample surname: Doctor 123 license_numbers: _items: - id: '12' license_number: License number 1 - id: '234' name: Sample surname: Doctor 234 license_numbers: _items: - id: '23' license_number: License number 2 Doctor: value: id: '123' name: Sample surname: Doctor 123 specializations: _items: - id: '12' name: Specialization example 12 DoctorWithProfileUrl: value: id: '123' name: Sample surname: Doctor 123 profile_url: http://url-to-doctors-profile DoctorWithAddresses: value: id: '123' name: Sample surname: Doctor 123 addresses: _items: - id: '111' name: Example hospital post_code: xx-xxx street: Some street specializations: _items: - id: '12' name: Specialization example 12 DoctorWithOnlineOnlyAddresses: value: id: '123' name: Sample surname: Doctor 123 addresses: _items: - id: '111' name: Example hospital post_code: xx-xxx street: Some street is_online_only: true specializations: _items: - id: '12' name: Specialization example 12 DoctorWithVisitPaymentAddresses: value: id: '123' name: Sample surname: Doctor 123 addresses: _items: - id: '111' name: Example hospital post_code: xx-xxx street: Some street visit_payment: false specializations: _items: - id: '12' name: Specialization example 12 DoctorWithAddressBookingExtraFields: value: id: '123' name: Sample surname: Doctor 123 addresses: _items: - id: '111' name: Example hospital post_code: xx-xxx street: Some street booking_extra_fields: birth_date: true gender: true nin: true specializations: _items: - id: '12' name: Specialization example 12 DoctorWithAddressCommercialType: value: id: '123' name: Sample surname: Doctor 123 addresses: _items: - id: '111' name: Example hospital post_code: xx-xxx street: Some street commercial_type: basic specializations: _items: - id: '12' name: Specialization example 12 DoctorWithLicenseNumbers: value: id: '123' name: Sample surname: Doctor 123 license_numbers: _items: - id: '12' license_number: License number 1 Addresses: value: _items: - id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street booking_extra_fields: birth_date: false gender: false nin: false AddressesWithOnlineOnly: value: _items: - id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street is_online_only: true booking_extra_fields: birth_date: false gender: false nin: false AddressesWithVisitPayment: value: _items: - id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street booking_extra_fields: birth_date: false gender: false nin: false visit_payment: false AddressesWithCommercialType: value: _items: - id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street booking_extra_fields: birth_date: false gender: false nin: false commercial_type: basic AddressesWithInsuranceSupport: value: _items: - id: '111' name: Example hospital post_code: xx-xxx street: Some street booking_extra_fields: birth_date: false gender: false nin: false insurance_support: private Address: value: id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street booking_extra_fields: birth_date: false gender: false nin: false AddressWithOnlineOnly: value: id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street is_online_only: true booking_extra_fields: birth_date: false gender: false nin: false AddressWithVisitPayment: value: id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street booking_extra_fields: birth_date: false gender: false nin: false visit_payment: true AddressWithCommercialType: value: id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street booking_extra_fields: birth_date: false gender: false nin: false commercial_type: basic AddressWithInsuranceSupport: value: id: '111' name: Example hospital city_name: Some city post_code: xx-xxx street: Some street booking_extra_fields: birth_date: false gender: false nin: false insurance_support: private UpdateAddress: value: insurance_support: private_and_insurance Services: value: _items: - id: '1' name: USG - id: '2' name: EKG - id: '3' name: EEG AddressServices: value: _items: - id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' is_visible: true allowed_patients: minimum_age: 18 maximum_age: 65 - id: '103' name: EEG is_default: true is_price_from: false price: null description: Description of service service_id: '3' is_visible: false allowed_patients: null AddressServicesWithStartDate: value: _items: - id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' duration: 15 is_visible: true - id: '103' name: EEG is_default: true is_price_from: false price: null description: Description of service service_id: '3' duration: 30 is_visible: false AddressServicesWithCustomName: value: _items: - id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' duration: 15 is_visible: true custom_name: Custom USG Name - id: '103' name: EEG is_default: true is_price_from: false price: null description: Description of service service_id: '3' duration: 30 is_visible: false custom_name: EEG AddressServicesWithAllowedPatients: value: _items: - id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' duration: 15 is_visible: true allowed_patients: minimum_age: 18 maximum_age: 65 - id: '103' name: EEG is_default: true is_price_from: false price: null description: Description of service service_id: '3' duration: 30 is_visible: false allowed_patients: minimum_age: null maximum_age: 65 - id: '104' name: Service name is_default: true is_price_from: false price: null description: Description of service service_id: '14' duration: 30 is_visible: false allowed_patients: minimum_age: 5 maximum_age: null AddressServicesWithPublicInsuranceFlow: value: _items: - id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' is_visible: true allowed_patients: minimum_age: 18 maximum_age: 65 is_public_insurance_flow: true - id: '103' name: EEG is_default: true is_price_from: false price: null description: Description of service service_id: '3' is_visible: false allowed_patients: null is_public_insurance_flow: true AddAddressService: value: service_id: '2' is_price_from: true price: 200 description: Address service description is_visible: true default_duration: 20 allowed_patients: minimum_age: 18 maximum_age: 65 custom_name: Custom USG Name AddressService: value: id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' is_visible: true AddressServiceWithAllowedPatients: value: id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' is_visible: true allowed_patients: minimum_age: 18 maximum_age: 65 AddressServiceWithCustomName: value: id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' is_visible: true custom_name: Custom USG Name AddressServiceWithPublicInsuranceFlow: value: id: '101' name: USG is_default: true is_price_from: false price: 100 description: Description of service service_id: '1' is_visible: true is_public_insurance_flow: false PatchAddressService: value: price: 200 is_price_from: true description: Address service description default_duration: 20 is_visible: true allowed_patients: minimum_age: 21 maximum_age: 60 custom_name: Custom USG Name PatchAddressServiceResponse: value: id: '101' name: USG is_default: true is_price_from: true price: 200 description: Address service description service_id: '1' is_visible: true DictionaryInsuranceProviders: value: _items: - insurance_provider_id: '1' name: Insurance provider 1 - insurance_provider_id: '2' name: Insurance provider 2 - insurance_provider_id: '3' name: Insurance provider 3 DictionaryInsurancePlans: value: _items: - insurance_plan_id: '999' name: Insurance plan 999 - insurance_plan_id: '1000' name: Insurance plan 1000 AddressInsuranceProviders: value: _items: - insurance_provider_id: '1' name: Insurance provider 1 insurance_plans: _items: - insurance_plan_id: '999' name: Insurance plan 999 - insurance_plan_id: '1000' name: Insurance plan 1000 - insurance_provider_id: '2' name: Insurance provider 2 insurance_plans: _items: [] AddAddressInsuranceProvider: value: insurance_provider_id: '3' AddAddressInsuranceProviderWithPlans: value: insurance_provider_id: '3' insurance_plans: - insurance_plan_id: '999' - insurance_plan_id: '1000' UpdateOrCreateAddressInsuranceProvider: value: insurance_provider_id: '3' insurance_plans: - insurance_plan_id: '999' - insurance_plan_id: '1000' CalendarEnabled: value: status: enabled CalendarDisabled: value: status: disabled CalendarBreak: value: id: '567' since: '2020-12-16T14:00:00+01:00' till: '2020-12-16T14:30:00+01:00' description: Optional description Slots: value: _items: - start: '2020-12-16T14:00:00+01:00' - start: '2020-12-16T14:30:00+01:00' SlotsWithServices: value: _items: - start: '2020-12-16T14:00:00+01:00' address_services: _items: - id: '111' name: USG price: 150 is_price_from: false is_default: true description: Address service description 1 service_id: '1' is_visible: true - id: '112' name: EEG price: 100 is_price_from: false is_default: true description: Address service description 2 service_id: '2' is_visible: true - start: '2020-12-16T14:30:00+01:00' address_services: _items: - id: '111' name: USG price: 150 is_price_from: false is_default: true description: Address service description 1 service_id: '1' is_visible: true ReplaceSlots: value: slots: - address_services: - address_service_id: '111' duration: 30 - address_service_id: '112' duration: 15 start: '2021-05-16T14:00:00+01:00' end: '2021-05-16T15:00:00+01:00' insurance_accepted: with-insurance-only insurance_providers: - 52 - 67 - address_services: - address_service_id: '112' duration: 15 start: '2021-05-16T15:00:00+01:00' end: '2021-05-16T16:00:00+01:00' BookSlot: value: address_service_id: '113' is_returning: false duration: 30 label: label comment: comment insurance_provider_if: '14' insurance_plan_id: 'null' is_recurring: false patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m marketing_consent: true data_privacy_consent: true Slot: value: id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' comment: comment Bookings: value: _items: - id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null comment: comment insurance: id: '11' name: Axa plan: null plan_id: null - id: '2134125' status: booked start_at: '2021-05-16T17:00:00+01:00' end_at: '2021-05-16T17:30:00+01:00' duration: 15 booked_by: doctor canceled_by: doctor booked_at: '2021-05-12T13:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' comment: null insurance: id: '11' name: Axa plan: null plan_id: null BookingsPaginated: value: page: 1 limit: 2 pages: 11 total: 25 _items: - id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null comment: comment insurance: id: '11' name: Axa plan: null plan_id: null - id: '2134125' status: booked start_at: '2021-05-16T17:00:00+01:00' end_at: '2021-05-16T17:30:00+01:00' duration: 15 booked_by: doctor canceled_by: doctor booked_at: '2021-05-12T13:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' comment: null insurance: id: '11' name: Axa plan: null plan_id: null BookingsVisitPaymentsEnabled: value: _items: - id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null comment: comment insurance: id: '11' name: Axa plan: null plan_id: null visit_payment: true visit_payment_status: successful - id: '2134125' status: booked start_at: '2021-05-16T17:00:00+01:00' end_at: '2021-05-16T17:30:00+01:00' duration: 15 booked_by: doctor canceled_by: doctor booked_at: '2021-05-12T13:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' comment: null insurance: id: '11' name: Axa plan: null plan_id: null visit_payment: true visit_payment_status: paid BookingsWithPatient: value: _items: - id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: CARD-7654321 comment: comment insurance: id: '11' name: Axa plan: null plan_id: null - id: '2134125' status: booked start_at: '2021-05-16T17:00:00+01:00' end_at: '2021-05-16T17:30:00+01:00' duration: 15 booked_by: doctor canceled_by: doctor booked_at: '2021-05-12T13:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: CARD-7654321 comment: null insurance: id: '11' name: Axa plan: null plan_id: null BookingsWithAddressService: value: _items: - id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: comment insurance: id: '11' name: Axa plan: null plan_id: null - id: '2134125' status: booked start_at: '2021-05-16T17:00:00+01:00' end_at: '2021-05-16T17:30:00+01:00' duration: 15 booked_by: doctor canceled_by: doctor booked_at: '2021-05-12T13:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: null insurance: id: '11' name: Axa plan: null plan_id: null BookingsWithPresence: value: _items: - id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null comment: comment presence: null insurance: id: '11' name: Axa plan: null plan_id: null - id: '2134125' status: booked start_at: '2021-05-16T17:00:00+01:00' end_at: '2021-05-16T17:30:00+01:00' duration: 15 booked_by: doctor canceled_by: doctor booked_at: '2021-05-12T13:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' comment: null presence: present insurance: id: '11' name: Axa plan: null plan_id: null BookingsWithConfirmation: value: _items: - id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null comment: comment confirmed: false insurance: id: '11' name: Axa plan: null plan_id: null - id: '2134125' status: booked start_at: '2021-05-16T17:00:00+01:00' end_at: '2021-05-16T17:30:00+01:00' duration: 15 booked_by: doctor canceled_by: doctor booked_at: '2021-05-12T13:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' comment: null confirmed: true insurance: id: '11' name: Axa plan: null plan_id: null BookingsWithPublicInsuranceFlow: value: _items: - id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: comment insurance: id: '11' name: Axa plan: null plan_id: null - id: '2134125' status: booked start_at: '2021-05-16T17:00:00+01:00' end_at: '2021-05-16T17:30:00+01:00' duration: 15 booked_by: doctor canceled_by: doctor booked_at: '2021-05-12T13:00:00+01:00' canceled_at: '2021-05-16T14:30:00+01:00' address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true is_public_insurance_flow: false comment: null insurance: id: '11' name: Axa plan: null plan_id: null Booking: value: id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: null address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: comment insurance: id: '11' name: Axa plan: null plan_id: null BookingVisitPaymentsEnabled: value: id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: CARD-7654321 address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: comment insurance: id: '11' name: Axa plan: null plan_id: null visit_payment: true visit_payment_status: successful BookingVideocallEnabled: value: id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: CARD-7654321 address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: comment insurance: id: '11' name: Axa plan: null plan_id: null videocall_url: http://url-to-video-call BookingWithMovingMoved: value: id: '2134124' status: canceled start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '2021-05-13T15:12:00+01:00' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null moving: origin_booking_id: '2134101' newest_booking_id: '2134135' patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: CARD-7654321 address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: comment insurance: id: '11' name: Axa plan: null plan_id: null BookingWithMovingNotMoved: value: id: '2134124' status: canceled start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '2021-05-13T15:12:00+01:00' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null moving: origin_booking_id: '2134124' newest_booking_id: '2134124' patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: CARD-7654321 address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: comment insurance: id: '11' name: Axa plan: null plan_id: null BookingWithMovingNoDataAvailable: value: id: '2134124' status: canceled start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '2021-05-13T15:12:00+01:00' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null moving: null patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: CARD-7654321 address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true comment: comment insurance: id: '11' name: Axa plan: null plan_id: null BookingWithPublicInsuranceFlow: value: id: '2134124' status: booked start_at: '2021-05-16T14:00:00+01:00' end_at: '2021-05-16T14:30:00+01:00' duration: 30 booked_by: user canceled_by: '' booked_at: '2021-05-12T12:00:00+01:00' canceled_at: null patient: name: Abraham surname: Lincoln email: example@example.com phone: 48123123123 birth_date: '1985-01-01' nin: 894237492 gender: m is_returning: false insurance_number: CARD-7654321 address_service: id: '101' name: USG price: 100 is_price_from: false is_default: true service_id: '1' description: Description of service is_visible: true is_public_insurance_flow: false comment: comment insurance: id: '11' name: Axa plan: null plan_id: null CancelBookingWithPatientNotificationAndReason: value: reason: Doctor will not be present on that day in the clinic ConfirmBooking: value: confirmed_by: user MoveBooking: value: address_service_id: '112' start: '2021-05-26T16:00:00+01:00' duration: 30 MoveBookingToOtherAddress: value: address_service_id: '113' start: '2021-05-26T16:00:00+01:00' duration: 30 address_id: '112233' OpinionRequest: value: phone: '123456789' ObjectNotFound: value: errors: [] message: Object not found FacilityNotAuthorized: value: errors: [] message: You are not authorized to see this facility DoctorNotAuthorized: value: errors: [] message: You are not authorized to see this doctor DoctorDoesNotBelongToFacility: value: errors: [] message: Doctor is not related with facility AddressDoesNotBelongToFacility: value: errors: [] message: This address does not belong to this facility AddressDoesNotBelongToDoctor: value: errors: [] message: This address does not belong to this doctor BookingDoesNotBelongToAddress: value: errors: [] message: This booking does not belong to this address AddressNotAuthorized: value: errors: [] message: You are not authorized to see this address FeatureNotAuthorized: value: errors: [] message: You are not authorized to use this feature CalendarEditionNotAuthorized: value: errors: [] message: You are not authorized to make changes on this calendar AddressServiceMismatch: value: errors: [] message: This service does not belong to this address AddressServiceValidationError: value: errors: [] message: 'Validation error message, e.g.: Invalid price value for service. Price should be either null or integer greater or equal 0.' AddressServiceAlreadyExists: value: errors: [] message: The address service you are trying to add already exists in the system AddAddressInsuranceValidationError: value: errors: [] message: 'Validation error message, e.g.: Insurance provider with given ID is already assigned to this address.' DeleteAddressInsuranceValidationError: value: errors: [] message: 'Validation error message, e.g.: Insurance provider with given ID is not assigned to this address.' InsuranceProviderNotFromDictionary: value: errors: [] message: Provided insurance provider ID not found in dictionary NoSlotsOnAddress: value: errors: [] message: No slots found on given address CalendarNotFoundForAddress: value: errors: [] message: Calendar not found for this address CalendarBreakAlreadyExists: value: errors: [] message: Break for given address, date range and description exists InvalidDateRange: value: errors: [] message: Invalid date range DateRangeExceedsMaximum: value: errors: [] message: Date range must not exceed 180 days InvalidDate: value: errors: [] message: Invalid date given. BreakNotFoundForGivenAddress: value: errors: [] message: Invalid break ID ParameterRequiredSince: value: errors: [] message: Param "since" is required! ParameterRequiredTill: value: errors: [] message: Param "till" is required! SameDateRange: value: errors: [] message: Same Date Range TillEarlierThanSince: value: errors: [] message: Till (%s) cannot be set before since (%s) DoctorOrAddressNotCommercial: value: errors: [] message: Cannot activate calendar on address 123, profile/address is not commercial AddressServiceDoesNotExist: value: errors: [] message: Address service does not exist SlotsFromFurtherThen12Weeks: value: errors: slots[1].end: - End date should be less than or equal to 15.05.2021, 11:45. message: Invalid arguments InsuranceProviderDoesNotExist: value: errors: [] message: Insurance provider(s) with id (%s) not found for address id (%d)' InsuranceProvidersMissing: value: errors: [] message: Slot requires insurance (with-insurance-only), but insurance providers are missing InsuranceProvidersNotSupported: value: errors: [] message: Insurance providers are not supported. Slot does not allow insurances (without-insurance-only) SlotExceedsSingleDayBoundary: value: errors: [] message: Slot for date range %s - %s exceeds a single day boundary SlotDurationIsLessThanOneMinute: value: errors: slots[1].minimumDifferenceBetweenDates: - The end date must be at least 1 minute after the start date message: Invalid arguments UnableToBookForAddress: value: errors: [] message: Unable to book a visit for this address ServiceDoesNotExist: value: errors: [] message: Service does not exist ServiceDoesNotBelongToAddress: value: errors: [] message: Service does not belong to the address AddressDoesNotExist: value: errors: [] message: Address does not exist UnableToPerformBookingWithSlot: value: errors: [] message: Unable to perform booking. Requested target slot (2021-05-16T14:00:00+02:00) not found UnableToPerformBookingWithService: value: errors: [] message: Unable to perform booking. Slot (2021-05-16T14:00:00+02:00) does not support service 113 UnableToCancelForAddress: value: errors: [] message: Unable to cancel a visit for this address VisitAlreadyMovedOrDeleted: value: errors: [] message: The visit has already been canceled or moved BookingCannotCrossPaymentAccounts: value: errors: [] message: This booking has a payment on it and the target address bills through a different payment account. Cancel the booking and create a new one instead. VisitMarkedAsCanceled: value: errors: [] message: Visit is marked as canceled CannotSendRequestForOpinion: value: errors: [] message: Cannot send request OpinionAlreadyExist: value: errors: [] message: Opinion already exists VisitNotFound: value: errors: [] message: Visit not found VisitDoesNotBelongToDoctor: value: errors: [] message: This visit does not belong to this doctor PutSlotsValidationError: value: errors: [] message: 'Validation error message, e.g.: Slots comes from different days' PostBookValidationError: value: errors: [] message: Validation error message DeleteBookingValidationError: value: errors: [] message: 'Validation error message, e.g.: Visit 12345 cannot be canceled because it is not booked' ConfirmBookingValidationError: value: errors: [] message: 'Validation error message, e.g.: confirmed_by value is invalid' ConfirmBookingInvalidIntegration: value: errors: [] message: Integration is not authorized for this address ConfirmBookingAlreadyConfirmed: value: errors: [] message: Visit has already been confirmed ConfirmBookingVisitCanceled: value: errors: [] message: Visit has been canceled ConfirmBookingVisitDeleted: value: errors: [] message: Visit has been deleted ConfirmBookingPastVisit: value: errors: [] message: Visit is in the past MoveBookingValidationError: value: errors: [] message: Invalid arguments OpinionRequestValidationError: value: errors: [] message: 'Validation error message, e.g.: Phone number is invalid.' PostPresenceValidationError: value: errors: [] message: 'Validation error message, e.g.: Visit is in the future' DeletePresenceValidationError: value: errors: [] message: 'Validation error message, e.g.: Visit is in the future' NotificationNotFound: value: errors: [] message: No notifications found NotificationsReleaseForbiddenError: value: errors: [] message: You are not allowed to use this method CalendarAlreadyEnabled: value: errors: [] message: Calendar already enabled CalendarAlreadyDisabled: value: errors: [] message: Calendar already disabled AddressDisabled: value: errors: [] message: Could not enable calendar on disabled address CalendarNotFound: value: errors: [] message: Calendar does not exist InvalidArgumentsError: value: errors: [] message: Invalid arguments