Skip to content

QUBS Integrations API (v1)

Partner-facing API providing read access to selected QUBS configuration and scheduling data, plus reporting submission endpoints for tele reporting workflows.

Authentication is via a bearer JWT in the Authorization header. Authorization is domain-scoped; all requests include a {domain} path parameter. Tokens are issued via the OAuth 2.0 client credentials flow (see Authentication below).

Token lifetimes:

  • Authentication flow session duration: 3 minutes.
  • Access token expiration: 60 minutes.
  • ID token expiration: 60 minutes.
  • Refresh token expiration: 5 days.

Refresh tokens (when issued) can be exchanged for new access tokens until they expire; after expiration, request a new token via the client credentials flow.

Scopes/audience: no additional scopes are required for current integrations; authorization is domain-scoped via claims. Audience is managed by QUBS; use the client credentials provisioned for your integration.

Sandbox: no public sandbox environment is currently available.

Errors are returned as RFC7807 Problem Details (application/problem+json) and include a requestId plus the X-Correlation-Id response header.

Data handling: responses may include PHI (patient name/date of birth). Treat all such data as sensitive, apply least-privilege access, and avoid logging or storing longer than required.

Date/time conventions: date values use ISO 8601 yyyy-MM-dd. time values use HH:mm:ss in the scheduled site's local timezone (see SiteSettings.timeZone). date-time values are returned in UTC. Numeric values are JSON numbers (integers/decimals), not strings.

Pagination: cursor endpoints return page objects with items and nextToken, while offset endpoints return arrays. For cursor paging, stop when nextToken is empty/omitted; for offset paging, stop when the response count is less than take. Ordering is not guaranteed and should not be assumed to be chronological.

Retry guidance: for 429 responses, honor the Retry-After header and use exponential backoff with jitter. GET requests are safe to retry. Reporting POST endpoints support the Idempotency-Key header; use a stable ASCII token (recommend a UUID) up to 128 characters and reuse the same key with the same payload to receive the original response. For timeouts or transient transport errors, retry the POST with the same key and exponential backoff; reuse with a different payload returns 409 Conflict. Keys are retained for 24 hours (comments/reports) or 15 minutes (report attachment uploads). Without the header, retries can create duplicates.

Rate limits: no fixed quotas or standard rate-limit headers are guaranteed. Use 429 responses and Retry-After when present.

Getting started

Base URL

  • Production: https://partners.qubs.io

Authentication

  1. Request an access token using the OAuth 2.0 client credentials flow.
  2. Send it in the Authorization header as Bearer <token>.

Token endpoint: https://authenticate.qubs.io/oauth2/token

Token request examples:

curl -X POST "https://authenticate.qubs.io/oauth2/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  --data-urlencode "grant_type=client_credentials" \
  --data-urlencode "client_id=<client_id>" \
  --data-urlencode "client_secret=<client_secret>"
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://authenticate.qubs.io/oauth2/token")
  .header("Content-Type", "application/x-www-form-urlencoded")
  .field("grant_type", "client_credentials")
  .field("client_id", "<client_id>")
  .field("client_secret", "<client_secret>")
  .asString();
using var client = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Post, "https://authenticate.qubs.io/oauth2/token");
request.Content = new FormUrlEncodedContent(new Dictionary<string, string>
{
    ["grant_type"] = "client_credentials",
    ["client_id"] = "<client_id>",
    ["client_secret"] = "<client_secret>"
});
using var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
var tokenPayload = await response.Content.ReadAsStringAsync();

Use the access_token value from the response as your bearer token.

If a refresh_token is issued, you can exchange it for new access tokens until it expires (5 days). When a refresh token is expired or not provided, request a new token via client credentials.

Example requests

curl -X GET "https://partners.qubs.io/integrations/v1/acme/reporting/appointments/pending?pageSize=1" \
  -H "Authorization: Bearer <token>"
curl -X POST "https://partners.qubs.io/integrations/v1/acme/reporting/appointments/A123456/report" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"reportText":"Preliminary report text","reportStatus":"preliminary","reportedAtUtc":"2025-01-10T03:04:05Z"}'

Reporting workflow (example)

  1. List pending reporting appointments.
curl -X GET "https://partners.qubs.io/integrations/v1/acme/reporting/appointments/pending?pageSize=1" \
  -H "Authorization: Bearer <token>"

Example response:

{
  "items": [
    {
      "domain": "acme",
      "appointmentId": "A123456",
      "status": "PENDING REPORTING",
      "scheduledSite": "Central Clinic",
      "appointmentDate": "2025-01-12",
      "startTime": "13:45:00",
      "patientName": "Jane Doe"
    }
  ],
  "nextToken": "DDB_NEXT_TOKEN"
}
  1. (Optional) Create report attachment upload URLs.
curl -X POST "https://partners.qubs.io/integrations/v1/acme/reporting/appointments/A123456/report/attachments" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: <idempotency-key>" \
  -d '{"items":[{"fileName":"report.pdf","contentType":"application/pdf"}]}'

Example response:

{
  "items": [
    {
      "guid": "989dd0c7-13bb-4bba-b7a0-53a28bdf5155",
      "fileName": "report.pdf",
      "category": "report",
      "uploadUrl": "https://example.com/upload/report.pdf",
      "uploadUrlExpiresAtUtc": "2025-01-10T03:19:05Z"
    }
  ]
}
  1. Upload the report artifact bytes with a PUT to uploadUrl.
curl -X PUT "https://example.com/upload/report.pdf" \
  -H "Content-Type: application/pdf" \
  --data-binary "@report.pdf"
  1. Submit the report content. Submissions overwrite any existing report for the appointment; you can submit a preliminary report and later submit a final report.
curl -X POST "https://partners.qubs.io/integrations/v1/acme/reporting/appointments/A123456/report" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: <idempotency-key>" \
  -d '{"reportText":"No acute abnormality detected.","reportStatus":"preliminary","reportedAtUtc":"2025-01-10T03:04:05Z"}'

Example response:

{
  "reportGuid": "4b7f0a91-b4f5-4f2a-9a21-23456789abcd",
  "reportStatus": "preliminary",
  "reportedAtUtc": "2025-01-10T03:04:05Z"
}
  1. (Optional) Create an appointment comment/alert.
curl -X POST "https://partners.qubs.io/integrations/v1/acme/reporting/appointments/A123456/comments" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: <idempotency-key>" \
  -d '{"commentText":"Report sent to referrer.","commentType":"AC","isAlert":false}'
Download OpenAPI description
Languages
Servers
Mock server
https://partnerdocs.qubs.io/_mock/openapi
Production API
https://partners.qubs.io
Relative to the current host
https://partnerdocs.qubs.io

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

Operations

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

Operations

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

Operations

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(int32)[ 1 .. 500 ]

Maximum number of items to return in a page. Defaults to 100 when omitted. Must be between 1 and 500.

Default 100
Example: pageSize=100
nextTokenstring

Opaque, URL-safe continuation token returned as nextToken in a previous paged response. Omit for the first page.

Example: nextToken=DDB_NEXT_TOKEN
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/operational/by-status/NOT ARRIVED?pageSize=100&nextToken=DDB_NEXT_TOKEN' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

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

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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[].​appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
items[].​startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
items[].​endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
items[].​modalitystring
Example: "Example modality"
items[].​studyDescriptionstring
Example: "Example description"
items[].​roomstring
Example: "Example room"
items[].​prioritystring
Example: "Example priority"
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(double)
Example: 1.23
items[].​waitingTotalTimenull or number(double)
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": "DDB_NEXT_TOKEN" }

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
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/operational/by-id/A123456 \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

Operational appointment view for the requested domain and appointment id.

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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"
appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
roomstring
Example: "Example room"
prioritystring
Example: "Example priority"
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(double)
Example: 1.23
waitingTotalTimenull or number(double)
Example: 1.23
examCodesArray of objects(AppointmentExamCodeResponse)

Exam codes attached to the appointment.

Response
application/json
{ "domain": "acme", "appointmentId": "A123456", "scheduledSite": "Central Clinic", "status": "ARRIVED", "appointmentDate": "2025-01-12", "startTime": "13:45:00", "endTime": "14:15:00", "modality": "CT", "studyDescription": "CT Chest", "room": "Room 2", "priority": "Routine", "arrivalDateTime": "2025-01-12T03:40:00Z", "scanStartDateTime": "2025-01-12T03:45:00Z", "scanEndDateTime": "2025-01-12T04:05:00Z", "scanTotalTime": 20.5, "waitingTotalTime": 5, "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.

Response body is a JSON array. Fields below apply to each array item.

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(date)

Optional appointment date filter (ISO 8601 date, yyyy-MM-dd) in the scheduled site's local timezone.

Example: appointmentDate=2025-01-01
startDatestring(date)
endDatestring(date)
clientUtcOffsetMinutesinteger(int32)
scheduledSitestring

Optional scheduled site filter.

Example: scheduledSite=Example Site
skipinteger(int32)[ 0 .. 10000 ]

Optional number of items to skip. Defaults to 0 when omitted. Must be between 0 and 10000.

Default 0
Example: skip=0
takeinteger(int32)[ 1 .. 500 ]

Optional maximum number of items to return. Defaults to 100 when omitted. Must be between 1 and 500.

Default 100
Example: take=100
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/operational?appointmentDate=2025-01-01&startDate=2019-08-24&endDate=2019-08-24&clientUtcOffsetMinutes=0&scheduledSite=Example+Site&skip=0&take=100' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

Array of operational appointments for the requested domain.

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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"
appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
roomstring
Example: "Example room"
prioritystring
Example: "Example priority"
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(double)
Example: 1.23
waitingTotalTimenull or number(double)
Example: 1.23
examCodesArray of objects(AppointmentExamCodeResponse)

Exam codes attached to the appointment.

]
Response
application/json
[ { "domain": "acme", "appointmentId": "A123456", "scheduledSite": "Central Clinic", "status": "ARRIVED", "appointmentDate": "2025-01-12", "startTime": "13:45:00", "endTime": "14:15:00", "modality": "CT", "studyDescription": "CT Chest", "room": "Room 2", "priority": "Routine", "arrivalDateTime": "2025-01-12T03:40:00Z", "scanStartDateTime": "2025-01-12T03:45:00Z", "scanEndDateTime": "2025-01-12T04:05:00Z", "scanTotalTime": 20.5, "waitingTotalTime": 5, "examCodes": [ … ] } ]

List operational appointments by status for referrers and specialists

Request

Returns operational appointments filtered by provider number when the caller is authorized and scoped to referrer/specialist grants. Provider numbers are resolved from the authenticated principal's access grants and are not supplied as query parameters. 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(int32)[ 1 .. 500 ]

Maximum number of items to return in a page. Defaults to 100 when omitted. Must be between 1 and 500.

Default 100
Example: pageSize=100
nextTokenstring

Opaque, URL-safe continuation token returned as nextToken in a previous paged response. Omit for the first page.

Example: nextToken=DDB_NEXT_TOKEN
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/referrer/operational/by-status/NOT ARRIVED?pageSize=100&nextToken=DDB_NEXT_TOKEN' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

OK

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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[].​appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
items[].​startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
items[].​endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
items[].​modalitystring
Example: "Example modality"
items[].​studyDescriptionstring
Example: "Example description"
items[].​roomstring
Example: "Example room"
items[].​prioritystring
Example: "Example priority"
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(double)
Example: 1.23
items[].​waitingTotalTimenull or number(double)
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": "DDB_NEXT_TOKEN" }

List operational appointments for referrers and specialists

Request

Returns operational appointments filtered by provider number when the caller is authorized and scoped to referrer/specialist grants. Provider numbers are resolved from the authenticated principal's access grants and are not supplied as query parameters. Supports optional filters via query string and offset paging via skip and take.

Response body is a JSON array. Fields below apply to each array item.

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(date)

Optional appointment date filter (ISO 8601 date, yyyy-MM-dd) in the scheduled site's local timezone.

Example: appointmentDate=2025-01-01
startDatestring(date)
endDatestring(date)
clientUtcOffsetMinutesinteger(int32)
scheduledSitestring

Optional scheduled site filter.

Example: scheduledSite=Example Site
skipinteger(int32)[ 0 .. 10000 ]

Optional number of items to skip. Defaults to 0 when omitted. Must be between 0 and 10000.

Default 0
Example: skip=0
takeinteger(int32)[ 1 .. 500 ]

Optional maximum number of items to return. Defaults to 100 when omitted. Must be between 1 and 500.

Default 100
Example: take=100
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/referrer/operational?appointmentDate=2025-01-01&startDate=2019-08-24&endDate=2019-08-24&clientUtcOffsetMinutes=0&scheduledSite=Example+Site&skip=0&take=100' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

OK

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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"
appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
roomstring
Example: "Example room"
prioritystring
Example: "Example priority"
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(double)
Example: 1.23
waitingTotalTimenull or number(double)
Example: 1.23
examCodesArray of objects(AppointmentExamCodeResponse)

Exam codes attached to the appointment.

]
Response
application/json
[ { "domain": "acme", "appointmentId": "A123456", "scheduledSite": "Central Clinic", "status": "ARRIVED", "appointmentDate": "2025-01-12", "startTime": "13:45:00", "endTime": "14:15:00", "modality": "CT", "studyDescription": "CT Chest", "room": "Room 2", "priority": "Routine", "arrivalDateTime": "2025-01-12T03:40:00Z", "scanStartDateTime": "2025-01-12T03:45:00Z", "scanEndDateTime": "2025-01-12T04:05:00Z", "scanTotalTime": 20.5, "waitingTotalTime": 5, "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(int32)[ 1 .. 500 ]

Maximum number of items to return in a page. Defaults to 100 when omitted. Must be between 1 and 500.

Default 100
Example: pageSize=100
nextTokenstring

Opaque, URL-safe continuation token returned as nextToken in a previous paged response. Omit for the first page.

Example: nextToken=DDB_NEXT_TOKEN
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/by-status/NOT ARRIVED?pageSize=100&nextToken=DDB_NEXT_TOKEN' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

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

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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[].​appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
items[].​startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
items[].​endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
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": "DDB_NEXT_TOKEN" }

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
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

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

Responses

Appointment summary view for the requested domain and appointment id.

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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"
appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
Response
application/json
{ "domain": "acme", "appointmentId": "A123456", "scheduledSite": "Central Clinic", "status": "ARRIVED", "appointmentDate": "2025-01-12", "startTime": "13:45:00", "endTime": "14:15:00", "modality": "CT", "studyDescription": "CT Chest" }

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.

Response body is a JSON array. Fields below apply to each array item.

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(date)

Optional appointment date filter (ISO 8601 date, yyyy-MM-dd) in the scheduled site's local timezone.

Example: appointmentDate=2025-01-01
startDatestring(date)
endDatestring(date)
clientUtcOffsetMinutesinteger(int32)
scheduledSitestring

Optional scheduled site filter.

Example: scheduledSite=Example Site
skipinteger(int32)[ 0 .. 10000 ]

Optional number of items to skip. Defaults to 0 when omitted. Must be between 0 and 10000.

Default 0
Example: skip=0
takeinteger(int32)[ 1 .. 500 ]

Optional maximum number of items to return. Defaults to 100 when omitted. Must be between 1 and 500.

Default 100
Example: take=100
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments?appointmentDate=2025-01-01&startDate=2019-08-24&endDate=2019-08-24&clientUtcOffsetMinutes=0&scheduledSite=Example+Site&skip=0&take=100' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

Array of appointment summaries for the requested domain.

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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"
appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
]
Response
application/json
[ { "domain": "acme", "appointmentId": "A123456", "scheduledSite": "Central Clinic", "status": "ARRIVED", "appointmentDate": "2025-01-12", "startTime": "13:45:00", "endTime": "14:15:00", "modality": "CT", "studyDescription": "CT Chest" }, { "domain": "acme", "appointmentId": "A123457", "scheduledSite": "North Clinic", "status": "PENDING REPORTING", "appointmentDate": "2025-01-13", "startTime": "09:00:00", "endTime": "09:30:00", "modality": "XR", "studyDescription": "XR Chest" } ]

List appointment summaries by status for referrers and specialists

Request

Returns appointment summaries filtered by provider number when the caller is authorized and scoped to referrer/specialist grants. Provider numbers are resolved from the authenticated principal's access grants and are not supplied as query parameters. 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(int32)[ 1 .. 500 ]

Maximum number of items to return in a page. Defaults to 100 when omitted. Must be between 1 and 500.

Default 100
Example: pageSize=100
nextTokenstring

Opaque, URL-safe continuation token returned as nextToken in a previous paged response. Omit for the first page.

Example: nextToken=DDB_NEXT_TOKEN
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/referrer/by-status/NOT ARRIVED?pageSize=100&nextToken=DDB_NEXT_TOKEN' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

OK

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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[].​appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
items[].​startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
items[].​endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
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": "DDB_NEXT_TOKEN" }

List appointment summaries for referrers and specialists

Request

Returns appointment summaries filtered by provider number when the caller is authorized and scoped to referrer/specialist grants. Provider numbers are resolved from the authenticated principal's access grants and are not supplied as query parameters. Supports optional filters via query string and offset paging via skip and take.

Response body is a JSON array. Fields below apply to each array item.

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(date)

Optional appointment date filter (ISO 8601 date, yyyy-MM-dd) in the scheduled site's local timezone.

Example: appointmentDate=2025-01-01
startDatestring(date)
endDatestring(date)
clientUtcOffsetMinutesinteger(int32)
scheduledSitestring

Optional scheduled site filter.

Example: scheduledSite=Example Site
skipinteger(int32)[ 0 .. 10000 ]

Optional number of items to skip. Defaults to 0 when omitted. Must be between 0 and 10000.

Default 0
Example: skip=0
takeinteger(int32)[ 1 .. 500 ]

Optional maximum number of items to return. Defaults to 100 when omitted. Must be between 1 and 500.

Default 100
Example: take=100
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  'https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/referrer?appointmentDate=2025-01-01&startDate=2019-08-24&endDate=2019-08-24&clientUtcOffsetMinutes=0&scheduledSite=Example+Site&skip=0&take=100' \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

OK

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
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"
appointmentDatenull or string(date)

Appointment date (ISO 8601, yyyy-MM-dd) in the scheduled site's local timezone.

Example: "2020-01-01"
startTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled start time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
endTimenull or string^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

Scheduled end time (ISO 8601, HH:mm:ss) in the scheduled site's local timezone.

Example: "13:45:00"
modalitystring
Example: "Example modality"
studyDescriptionstring
Example: "Example description"
]
Response
application/json
[ { "domain": "acme", "appointmentId": "A123456", "scheduledSite": "Central Clinic", "status": "ARRIVED", "appointmentDate": "2025-01-12", "startTime": "13:45:00", "endTime": "14:15:00", "modality": "CT", "studyDescription": "CT Chest" }, { "domain": "acme", "appointmentId": "A123457", "scheduledSite": "North Clinic", "status": "PENDING REPORTING", "appointmentDate": "2025-01-13", "startTime": "09:00:00", "endTime": "09:30:00", "modality": "XR", "studyDescription": "XR Chest" } ]

Get appointment billing details by domain and appointment id

Request

Returns billing and service item details for the specified appointment when the caller has appointments:read_billing access.

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
Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: 4b7f0a91b4f54f2a
curl -i -X GET \
  https://partnerdocs.qubs.io/_mock/openapi/integrations/v1/acme/appointments/A123456/billing \
  -H 'Authorization: Bearer <YOUR_JWT_HERE>' \
  -H 'X-Correlation-Id: 4b7f0a91b4f54f2a'

Responses

Billing details for the requested appointment.

Headers
X-Correlation-Idstring

Request correlation identifier. Echoes the incoming X-Correlation-Id header when provided.

Example: "4b7f0a91b4f54f2a"
Bodyapplication/json
domainstringrequired

Domain this appointment belongs to.

Example: "Example domain"
appointmentIdstringrequired

Appointment identifier.

Example: "123"
batchSkstring
Example: "Example batchSk"
billingStatusstring

Billing status for the appointment.

Example: "active"
billingTypestring

Billing type for the appointment.

Example: "Example billingType"
invoiceCreationErrorstring

Latest billing error when available.

Example: "Example invoiceCreationError"
invoiceNumberstring

Invoice number when available.

Example: "Example invoiceNumber"
invoiceSkstring

Invoice record key when available.

Example: "Example invoiceSk"
isBillingsCheckedboolean

Whether billing validation has been completed.

Example: true
medicareExpiryDatenull or string(date)
Example: "2020-01-01"
medicareIrnstring
Example: "Example medicareIrn"
medicareNumberstring
Example: "Example medicareNumber"
providerNumberstring
Example: "Example providerNumber"
serviceItemNumbersstring

Concatenated service item numbers when available.

Example: "Example serviceItemNumbers"
serviceItemsArray of objects(AppointmentServiceItemResponse)

Service item details attached to the appointment.

Response
application/json
{ "domain": "acme", "appointmentId": "A123456", "batchSk": "BATCH#202501", "billingStatus": "active", "billingType": "bulk", "invoiceNumber": "INV-1001", "invoiceSk": "INV#1001", "isBillingsChecked": true, "medicareNumber": "1234567890", "medicareIrn": "1", "providerNumber": "1234567A", "serviceItemNumbers": "XR001", "serviceItems": [ { … } ] }

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

Operations

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

Operations

Partner-facing endpoints for retrieving patients within a domain.

Operations

Partner-facing endpoints for retrieving appointments that are pending reporting and submitting tele reporting artifacts. Typical workflow: list pending reporting appointments, create upload URLs for report artifacts (optional), upload with PUT, then submit report content.

Operations