Skip to content

QUBS Integrations API (v1)

Partner-facing API providing read-only access to selected QUBS configuration and scheduling data for integration purposes.

Authentication is via a bearer JWT in the Authorization header. Authorization is domain-scoped; all requests include a {domain} path parameter.

Errors are returned as RFC7807 Problem Details (application/problem+json).

Download OpenAPI description
Languages
Servers
Mock server
https://partners.qubs.io/_mock/openapi/
Relative to the current host
https://partners.qubs.io/

Site Settings

Partner-facing endpoints for listing sites and retrieving site configuration within a domain.

Operations

Exam Codes

Partner-facing endpoints for retrieving exam code configuration for a site within a domain.

Operations

Staff Skills

Partner-facing endpoints for retrieving the staff skill grid and related metadata for a site within a domain.

Operations

Appointments

Partner-facing endpoints for retrieving appointments within a domain.

Operations

List operational appointments by status

Request

Returns the operational appointment view filtered by status when the caller is authorized. Supports cursor-based pagination via pageSize and nextToken.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
statusstringrequired

Appointment status filter value. Must match one of the known QUBS appointment status strings.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: NOT ARRIVED
Query
pageSizeinteger or string(int32)^-?(?:0|[1-9]\d*)$

Maximum number of items to return in a page. Defaults to 100 when omitted.

Example: pageSize=100
nextTokenstring

Opaque continuation token from a previous paged response. Omit for the first page.

Example: nextToken=eyJwYWdlIjoyfQ==
curl -i -X GET \
  'https://partners.qubs.io/_mock/openapi/integrations/v1/acme/appointments/operational/by-status/NOT ARRIVED?pageSize=100&nextToken=eyJwYWdlIjoyfQ%3D%3D' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Page of operational appointments matching the requested status for the requested domain.

Bodyapplication/json
itemsArray of objects(AppointmentOperationalResponse)required

Operational appointments in the current page.

items[].​domainstringrequired

Domain this appointment belongs to.

Example: "Example domain"
items[].​appointmentIdstringrequired

Appointment identifier.

Example: "123"
items[].​scheduledSitestringrequired

Scheduled site name.

Example: "Example scheduledSite"
items[].​statusstringrequired

Appointment status.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: "NOT ARRIVED"
items[].​appointmentDatestring

Appointment date string as stored in QUBS.

Example: "Example appointmentDate"
items[].​startTimestring

Scheduled start time string as stored in QUBS.

Example: "Example startTime"
items[].​endTimestring

Scheduled end time string as stored in QUBS.

Example: "Example endTime"
items[].​modalitystring
Example: "Example modality"
items[].​studyDescriptionstring
Example: "Example description"
items[].​roomstring
Example: "Example room"
items[].​prioritystring
Example: "Example priority"
items[].​billingStatusstring
Example: "active"
items[].​billingTypestring
Example: "Example billingType"
items[].​arrivalDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
items[].​scanStartDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
items[].​scanEndDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
items[].​scanTotalTimenull or number or string(double)^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$...
Example: 1.23
items[].​waitingTotalTimenull or number or string(double)^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$...
Example: 1.23
items[].​examCodesArray of objects(AppointmentExamCodeResponse)

Exam codes attached to the appointment.

nextTokennull or string

Opaque continuation token to fetch the next page, when more results are available.

Example: "Example nextToken"
Response
application/json
{ "items": [ { … } ], "nextToken": "Example nextToken" }

Get operational appointment by domain and appointment id

Request

Returns the operational appointment view for the specified domain and appointment id when the caller is authorized.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
appointmentIdstringrequired

Appointment identifier within the specified domain.

Example: A123456
curl -i -X GET \
  https://partners.qubs.io/_mock/openapi/integrations/v1/acme/appointments/operational/A123456 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Operational appointment view for the requested domain and appointment id.

Bodyapplication/json
domainstringrequired

Domain this appointment belongs to.

Example: "Example domain"
appointmentIdstringrequired

Appointment identifier.

Example: "123"
scheduledSitestringrequired

Scheduled site name.

Example: "Example scheduledSite"
statusstringrequired

Appointment status.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: "NOT ARRIVED"
appointmentDatestring

Appointment date string as stored in QUBS.

Example: "Example appointmentDate"
startTimestring

Scheduled start time string as stored in QUBS.

Example: "Example startTime"
endTimestring

Scheduled end time string as stored in QUBS.

Example: "Example endTime"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
roomstring
Example: "Example room"
prioritystring
Example: "Example priority"
billingStatusstring
Example: "active"
billingTypestring
Example: "Example billingType"
arrivalDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
scanStartDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
scanEndDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
scanTotalTimenull or number or string(double)^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$...
Example: 1.23
waitingTotalTimenull or number or string(double)^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$...
Example: 1.23
examCodesArray of objects(AppointmentExamCodeResponse)

Exam codes attached to the appointment.

Response
application/json
{ "domain": "Example domain", "appointmentId": "123", "scheduledSite": "Example scheduledSite", "status": "NOT ARRIVED", "appointmentDate": "Example appointmentDate", "startTime": "Example startTime", "endTime": "Example endTime", "modality": "Example modality", "studyDescription": "Example description", "room": "Example room", "priority": "Example priority", "billingStatus": "active", "billingType": "Example billingType", "arrivalDateTime": "2020-01-01T00:00:00Z", "scanStartDateTime": "2020-01-01T00:00:00Z", "scanEndDateTime": "2020-01-01T00:00:00Z", "scanTotalTime": 1.23, "waitingTotalTime": 1.23, "examCodes": [ { … } ] }

List operational appointments for a domain

Request

Returns the operational appointment view for the specified domain when the caller is authorized. Supports optional filters via query string and offset paging via skip and take.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
Query
appointmentDatestring

Optional appointment date filter. Format is integration-specific and typically matches the QUBS date string for the domain.

Example: appointmentDate=01-01-2025
scheduledSitestring

Optional scheduled site filter.

Example: scheduledSite=Example Site
skipinteger or string(int32)^-?(?:0|[1-9]\d*)$

Optional number of items to skip. Defaults to 0 when omitted.

Example: skip=0
takeinteger or string(int32)^-?(?:0|[1-9]\d*)$

Optional maximum number of items to return. Defaults to 100 when omitted.

Example: take=100
curl -i -X GET \
  'https://partners.qubs.io/_mock/openapi/integrations/v1/acme/appointments/operational?appointmentDate=01-01-2025&scheduledSite=Example+Site&skip=0&take=100' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

List of operational appointments for the requested domain.

Bodyapplication/jsonArray [
domainstringrequired

Domain this appointment belongs to.

Example: "Example domain"
appointmentIdstringrequired

Appointment identifier.

Example: "123"
scheduledSitestringrequired

Scheduled site name.

Example: "Example scheduledSite"
statusstringrequired

Appointment status.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: "NOT ARRIVED"
appointmentDatestring

Appointment date string as stored in QUBS.

Example: "Example appointmentDate"
startTimestring

Scheduled start time string as stored in QUBS.

Example: "Example startTime"
endTimestring

Scheduled end time string as stored in QUBS.

Example: "Example endTime"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
roomstring
Example: "Example room"
prioritystring
Example: "Example priority"
billingStatusstring
Example: "active"
billingTypestring
Example: "Example billingType"
arrivalDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
scanStartDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
scanEndDateTimenull or string(date-time)
Example: "2020-01-01T00:00:00Z"
scanTotalTimenull or number or string(double)^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$...
Example: 1.23
waitingTotalTimenull or number or string(double)^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?$...
Example: 1.23
examCodesArray of objects(AppointmentExamCodeResponse)

Exam codes attached to the appointment.

]
Response
application/json
[ { "domain": "Example domain", "appointmentId": "123", "scheduledSite": "Example scheduledSite", "status": "NOT ARRIVED", "appointmentDate": "Example appointmentDate", "startTime": "Example startTime", "endTime": "Example endTime", "modality": "Example modality", "studyDescription": "Example description", "room": "Example room", "priority": "Example priority", "billingStatus": "active", "billingType": "Example billingType", "arrivalDateTime": "2020-01-01T00:00:00Z", "scanStartDateTime": "2020-01-01T00:00:00Z", "scanEndDateTime": "2020-01-01T00:00:00Z", "scanTotalTime": 1.23, "waitingTotalTime": 1.23, "examCodes": [ … ] } ]

List appointment summaries by status

Request

Returns the appointment summary view filtered by status when the caller is authorized. Supports cursor-based pagination via pageSize and nextToken.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
statusstringrequired

Appointment status filter value. Must match one of the known QUBS appointment status strings.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: NOT ARRIVED
Query
pageSizeinteger or string(int32)^-?(?:0|[1-9]\d*)$

Maximum number of items to return in a page. Defaults to 100 when omitted.

Example: pageSize=100
nextTokenstring

Opaque continuation token from a previous paged response. Omit for the first page.

Example: nextToken=eyJwYWdlIjoyfQ==
curl -i -X GET \
  'https://partners.qubs.io/_mock/openapi/integrations/v1/acme/appointments/by-status/NOT ARRIVED?pageSize=100&nextToken=eyJwYWdlIjoyfQ%3D%3D' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Page of appointment summaries matching the requested status for the requested domain.

Bodyapplication/json
itemsArray of objects(AppointmentSummaryResponse)required

Appointment summaries in the current page.

items[].​domainstringrequired

Domain this appointment belongs to.

Example: "Example domain"
items[].​appointmentIdstringrequired

Appointment identifier.

Example: "123"
items[].​scheduledSitestringrequired

Scheduled site name.

Example: "Example scheduledSite"
items[].​statusstringrequired

Appointment status.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: "NOT ARRIVED"
items[].​appointmentDatestring

Appointment date string as stored in QUBS.

Example: "Example appointmentDate"
items[].​startTimestring

Scheduled start time string as stored in QUBS.

Example: "Example startTime"
items[].​endTimestring

Scheduled end time string as stored in QUBS.

Example: "Example endTime"
items[].​modalitystring
Example: "Example modality"
items[].​studyDescriptionstring
Example: "Example description"
nextTokennull or string

Opaque continuation token to fetch the next page, when more results are available.

Example: "Example nextToken"
Response
application/json
{ "items": [ { … } ], "nextToken": "Example nextToken" }

Get appointment summary by domain and appointment id

Request

Returns the appointment summary view for the specified domain and appointment id when the caller is authorized.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
appointmentIdstringrequired

Appointment identifier within the specified domain.

Example: A123456
curl -i -X GET \
  https://partners.qubs.io/_mock/openapi/integrations/v1/acme/appointments/A123456 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

Appointment summary view for the requested domain and appointment id.

Bodyapplication/json
domainstringrequired

Domain this appointment belongs to.

Example: "Example domain"
appointmentIdstringrequired

Appointment identifier.

Example: "123"
scheduledSitestringrequired

Scheduled site name.

Example: "Example scheduledSite"
statusstringrequired

Appointment status.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: "NOT ARRIVED"
appointmentDatestring

Appointment date string as stored in QUBS.

Example: "Example appointmentDate"
startTimestring

Scheduled start time string as stored in QUBS.

Example: "Example startTime"
endTimestring

Scheduled end time string as stored in QUBS.

Example: "Example endTime"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
Response
application/json
{ "domain": "Example domain", "appointmentId": "123", "scheduledSite": "Example scheduledSite", "status": "NOT ARRIVED", "appointmentDate": "Example appointmentDate", "startTime": "Example startTime", "endTime": "Example endTime", "modality": "Example modality", "studyDescription": "Example description" }

List appointment summaries for a domain

Request

Returns the appointment summary view for the specified domain when the caller is authorized. Supports optional filters via query string and offset paging via skip and take.

Security
Bearer
Path
domainstringrequired

Partner domain identifier. Your bearer token is scoped to one or more domains and requests outside that scope are rejected.

Example: acme
Query
appointmentDatestring

Optional appointment date filter. Format is integration-specific and typically matches the QUBS date string for the domain.

Example: appointmentDate=01-01-2025
scheduledSitestring

Optional scheduled site filter.

Example: scheduledSite=Example Site
skipinteger or string(int32)^-?(?:0|[1-9]\d*)$

Optional number of items to skip. Defaults to 0 when omitted.

Example: skip=0
takeinteger or string(int32)^-?(?:0|[1-9]\d*)$

Optional maximum number of items to return. Defaults to 100 when omitted.

Example: take=100
curl -i -X GET \
  'https://partners.qubs.io/_mock/openapi/integrations/v1/acme/appointments?appointmentDate=01-01-2025&scheduledSite=Example+Site&skip=0&take=100' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>'

Responses

List of appointment summaries for the requested domain.

Bodyapplication/jsonArray [
domainstringrequired

Domain this appointment belongs to.

Example: "Example domain"
appointmentIdstringrequired

Appointment identifier.

Example: "123"
scheduledSitestringrequired

Scheduled site name.

Example: "Example scheduledSite"
statusstringrequired

Appointment status.

Enum"NOT ARRIVED""ARRIVED""DID NOT ATTEND""APPPOINTMENT CANCELLED""CANCELLATION LIST""DICTATION INPROGRESS""DICTATED""TYPED""AUTHORISING""AUTHORISED"
Example: "NOT ARRIVED"
appointmentDatestring

Appointment date string as stored in QUBS.

Example: "Example appointmentDate"
startTimestring

Scheduled start time string as stored in QUBS.

Example: "Example startTime"
endTimestring

Scheduled end time string as stored in QUBS.

Example: "Example endTime"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
]
Response
application/json
[ { "domain": "Example domain", "appointmentId": "123", "scheduledSite": "Example scheduledSite", "status": "NOT ARRIVED", "appointmentDate": "Example appointmentDate", "startTime": "Example startTime", "endTime": "Example endTime", "modality": "Example modality", "studyDescription": "Example description" } ]

Attachments

Partner-facing endpoints for retrieving appointment attachments and generating short-lived presigned URLs.

Operations

Comments

Partner-facing endpoints for retrieving appointment and patient comments/alerts associated with an appointment.

Operations

Patients

Partner-facing endpoints for retrieving patients within a domain.

Operations

Reporting

Partner-facing endpoints for retrieving appointments that are pending reporting.

Operations