Docplanner Integrations API
OAuth 2.0 REST API (v1.14.0) for medical-software vendors integrating a practice-management system with the ZnanyLekarz marketplace. 44 operations across facilities, doctors, addresses, services, insurance providers, calendars, calendar breaks, slots, bookings and patient presence, plus 17 push/pull event notification callbacks. The Polish locale resolves the templated server host to www.znanylekarz.pl, as stated in the specification's own locale table.
GET
/facilities/{facility_id}
#
GET
/facilities/{facility_id}/doctors
#
GET
/facilities/{facility_id}/doctors/{doctor_id}
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}
#
PATCH
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}
#
DELETE
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/integration
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/services
#
POST
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/services
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/services/{address_service_id}
#
PATCH
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/services/{address_service_id}
#
DELETE
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/services/{address_service_id}
#
GET
/insurance-providers
#
GET
/insurance-providers/{insurance_provider_id}/plans
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/insurance-providers
#
POST
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/insurance-providers
#
PUT
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/insurance-providers
#
DELETE
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/insurance-providers/{insurance_provider_id}
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/calendar
#
POST
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/calendar/enable
#
POST
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/calendar/disable
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/breaks
#
POST
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/breaks
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/breaks/{break_id}
#
PATCH
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/breaks/{break_id}
#
DELETE
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/breaks/{break_id}
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/slots
#
PUT
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/slots
#
POST
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/slots/{start}/book
#
DELETE
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/slots/{date}
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings
#
GET
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}
#
DELETE
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}
#
POST
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}/move
#
PUT
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}/confirm
#
PUT
/facilities/{facility_id}/doctors/{doctor_id}/opinion-request
#
POST
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}/presence/patient
#
DELETE
/facilities/{facility_id}/doctors/{doctor_id}/addresses/{address_id}/bookings/{booking_id}/presence/patient
#
POST
/{client-endpoint-url}
#
GET
/notifications/multiple
#
POST
/notifications/release
#
Specifications
Other Resources
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/docplanner-integrations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no email required.
A second provider on the same verified email joins the account you already have.
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:
<table>
<tr>
<th>Country</th>
<th>Locale</th>
<th>{domain}</th>
</tr>
<tr>
<td>Argentina</td>
<td>ar</td>
<td>doctoraliar.com</td>
</tr>
<tr>
<td>Brazil</td>
<td>br</td>
<td>doctoralia.com.br</td>
</tr>
<tr>
<td>Chile</td>
<td>cl</td>
<td>doctoralia.cl</td>
</tr>
<tr>
<td>Colombia</td>
<td>co</td>
<td>doctoralia.co</td>
</tr>
<tr>
<td>Czech Republic</td>
<td>cz</td>
<td>znamylekar.cz</td>
</tr>
<tr>
<td>Spain</td>
<td>es</td>
<td>doctoralia.es</td>
</tr>
<tr>
<td>Italy</td>
<td>it</td>
<td>miodottore.it</td>
</tr>
<tr>
<td>Mexico</td>
<td>mx</td>
<td>doctoralia.mx</td>
</tr>
<tr>
<td>Peru</td>
<td>pe</td>
<td>doctoralia.pe</td>
</tr>
<tr>
<td>Portugal</td>
<td>pt</td>
<td>doctoralia.com.pt</td>
</tr>
<tr>
<td>Turkey</td>
<td>tr</td>
<td>doktortakvimi.com</td>
</tr>
<tr>
<td>Poland</td>
<td>pl</td>
<td>znanylekarz.pl</td>
</tr>
<tr>
<td>Germany</td>
<td>de</td>
<td>jameda.de</td>
</tr>
</table>
## 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:
<table>
<tr>
<th>Verb</th>
<th>Description</th>
</tr>
<tr>
<td>GET</td>
<td>Retrieve resources</td>
</tr>
<tr>
<td>POST</td>
<td>Creates resources or execute custom actions</td>
</tr>
<tr>
<td>PUT</td>
<td>Replace resources</td>
</tr>
<tr>
<td>PATCH</td>
<td>Partial update of resources</td>
</tr>
<tr>
<td>DELETE</td>
<td>Delete resources</td>
</tr>
</table>
## 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
<year>-<month>-<day>T<hour>:<minute>:<second>+<timezone>
// 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
<table>
<tr>
<th>Field</th>
<th>Description</th>
</tr>
<tr>
<td>page</td>
<td>Current page of results</td>
</tr>
<tr>
<td>limit</td>
<td>Number of items in current page</td>
</tr>
<tr>
<td>pages</td>
<td>Total number of pages</td>
</tr>
<tr>
<td>total</td>
<td>Total number of items</td>
</tr>
</table>
Also, a few relations are defined in the `_links` section:
<table>
<tr>
<th>Relation</th>
<th>Description</th>
</tr>
<tr>
<td>self</td>
<td>Link to the current page of results</td>
</tr>
<tr>
<td>first</td>
<td>Link to the first page of results</td>
</tr>
<tr>
<td>last</td>
<td>Link to the last page of results</td>
</tr>
<tr>
<td>next</td>
<td>Link to the next page of results</td>
</tr>
<tr>
<td>previous</td>
<td>Link to the previous page of results</td>
</tr>
</table>
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.
<table>
<tr>
<th>HTTP status code</th>
<th>Description</th>
</tr>
<tr>
<td>200 - OK</td>
<td>Everything worked as expected</td>
</tr>
<tr>
<td>400 - Bad Request</td>
<td>Validation error message</td>
</tr>
<tr>
<td>403 - Forbidden</td>
<td>You don't have the access rights to perform this action</td>
</tr>
<tr>
<td>404 - Not Found</td>
<td>We couldn't find the resource you were asking for</td>
</tr>
<tr>
<td>409 - Conflict</td>
<td>This response is sent when a request conflicts with the current state of the server</td>
</tr>
<tr>
<td>429 - Too many requests</td>
<td>You have sent too many requests in a given amount of time</td>
</tr>
<tr>
<td>5XX - Server error</td>
<td>An error occurred on our servers</td>
</tr>
</table>
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.
<table>
<tr>
<th>RateLimit Header</th>
<th>Description</th>
</tr>
<tr>
<td>X-RateLimit-Limit</td>
<td>Request limit for the current time span</td>
</tr>
<tr>
<td>X-RateLimit-Reset</td>
<td>Rate limiter reset date in in ISO8601 format</td>
</tr>
<tr>
<td>X-RateLimit-Used</td>
<td>Number of requests made in current time span</td>
</tr>
<tr>
<td>X-RateLimit-Remaining</td>
<td>Number of requests remaining in current time span</td>
</tr>
</table>
`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** <a href="#operation/bookSlot">`bookSlot`</a> endpoint from <a href="#tag/Slots">`Slots`</a> 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
# --- truncated at 32 KB (246 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/znanylekarz/refs/heads/main/openapi/znanylekarz-integrations-api.yml