Download OpenAPI specification:
Public REST surface for Dentolize plugins. All requests require a plugin token (Authorization: Bearer) whose granted scopes gate each route; PII-tier patient fields additionally require the 'patients:read.pii' scope. POST writes require an Idempotency-Key header.
| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| searchTerm | string [ 2 .. 100 ] characters |
{- "data": [
- {
- "object": "patient",
- "id": "string",
- "fileNumber": 0,
- "clinicFileNumber": "string",
- "gender": "string",
- "isLead": true,
- "disabled": true,
- "pending": true,
- "branchId": "string",
- "doctorId": "string",
- "phoneNumberMasked": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "firstName": "string",
- "lastName": "string",
- "fullName": "string",
- "phoneNumber": "string",
- "email": "string",
- "birthDate": "string",
- "address": "string",
- "nationalId": "string",
- "insuranceCompanyId": "string",
- "insurance": {
- "companyId": "string",
- "policyId": "string",
- "classId": "string",
- "number": "string",
- "group": "string",
- "percentage": 0,
- "limit": 0,
- "unlimited": true,
- "endDate": "string"
}
}
], - "hasMore": true,
- "nextCursor": "string"
}| branchId required | string [ 1 .. 64 ] characters |
| firstName required | string [ 1 .. 100 ] characters |
| lastName required | string [ 1 .. 100 ] characters |
| phoneNumber | string [ 5 .. 24 ] characters |
| phoneNumber2 | string [ 5 .. 24 ] characters |
string <email> <= 120 characters | |
| gender | string <= 20 characters |
| title | string <= 30 characters |
| birthDate | string <date> |
| address | string <= 500 characters |
| nationality | string <= 60 characters |
| maritalStatus | string <= 30 characters |
| nationalId | string <= 50 characters |
| identifierType | string <= 30 characters |
| clinicFileNumber | string <= 50 characters |
| details | string <= 2000 characters |
| doctorId | string [ 1 .. 64 ] characters |
{- "branchId": "string",
- "firstName": "string",
- "lastName": "string",
- "phoneNumber": "string",
- "phoneNumber2": "string",
- "email": "user@example.com",
- "gender": "string",
- "title": "string",
- "birthDate": "2019-08-24",
- "address": "string",
- "nationality": "string",
- "maritalStatus": "string",
- "nationalId": "string",
- "identifierType": "string",
- "clinicFileNumber": "string",
- "details": "string",
- "doctorId": "string"
}{- "data": {
- "object": "patient",
- "id": "string",
- "fileNumber": 0,
- "clinicFileNumber": "string",
- "gender": "string",
- "isLead": true,
- "disabled": true,
- "pending": true,
- "branchId": "string",
- "doctorId": "string",
- "phoneNumberMasked": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "firstName": "string",
- "lastName": "string",
- "fullName": "string",
- "phoneNumber": "string",
- "email": "string",
- "birthDate": "string",
- "address": "string",
- "nationalId": "string",
- "insuranceCompanyId": "string",
- "insurance": {
- "companyId": "string",
- "policyId": "string",
- "classId": "string",
- "number": "string",
- "group": "string",
- "percentage": 0,
- "limit": 0,
- "unlimited": true,
- "endDate": "string"
}
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "patient",
- "id": "string",
- "fileNumber": 0,
- "clinicFileNumber": "string",
- "gender": "string",
- "isLead": true,
- "disabled": true,
- "pending": true,
- "branchId": "string",
- "doctorId": "string",
- "phoneNumberMasked": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "firstName": "string",
- "lastName": "string",
- "fullName": "string",
- "phoneNumber": "string",
- "email": "string",
- "birthDate": "string",
- "address": "string",
- "nationalId": "string",
- "insuranceCompanyId": "string",
- "insurance": {
- "companyId": "string",
- "policyId": "string",
- "classId": "string",
- "number": "string",
- "group": "string",
- "percentage": 0,
- "limit": 0,
- "unlimited": true,
- "endDate": "string"
}
}
}| id required | string [ 1 .. 64 ] characters |
| firstName | string [ 1 .. 100 ] characters |
| lastName | string [ 1 .. 100 ] characters |
| phoneNumber | string [ 5 .. 24 ] characters |
| phoneNumber2 | string [ 5 .. 24 ] characters |
string <email> <= 120 characters | |
| gender | string <= 20 characters |
| title | string <= 30 characters |
| birthDate | string <date> |
| address | string <= 500 characters |
| nationality | string <= 60 characters |
| maritalStatus | string <= 30 characters |
| nationalId | string <= 50 characters |
| identifierType | string <= 30 characters |
| clinicFileNumber | string <= 50 characters |
| details | string <= 2000 characters |
| doctorId | string [ 1 .. 64 ] characters |
{- "firstName": "string",
- "lastName": "string",
- "phoneNumber": "string",
- "phoneNumber2": "string",
- "email": "user@example.com",
- "gender": "string",
- "title": "string",
- "birthDate": "2019-08-24",
- "address": "string",
- "nationality": "string",
- "maritalStatus": "string",
- "nationalId": "string",
- "identifierType": "string",
- "clinicFileNumber": "string",
- "details": "string",
- "doctorId": "string"
}{- "data": {
- "object": "patient",
- "id": "string",
- "fileNumber": 0,
- "clinicFileNumber": "string",
- "gender": "string",
- "isLead": true,
- "disabled": true,
- "pending": true,
- "branchId": "string",
- "doctorId": "string",
- "phoneNumberMasked": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "firstName": "string",
- "lastName": "string",
- "fullName": "string",
- "phoneNumber": "string",
- "email": "string",
- "birthDate": "string",
- "address": "string",
- "nationalId": "string",
- "insuranceCompanyId": "string",
- "insurance": {
- "companyId": "string",
- "policyId": "string",
- "classId": "string",
- "number": "string",
- "group": "string",
- "percentage": 0,
- "limit": 0,
- "unlimited": true,
- "endDate": "string"
}
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| doctorId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
| status | string Enum: "OPEN" "CONFIRMED" "CHECKEDIN" "COMPLETED" "CANCELED" "NOSHOW" "INPROGRESS" "DELAYED" "WAITING" |
{- "data": [
- {
- "object": "appointment",
- "id": "string",
- "status": "OPEN",
- "start": "string",
- "end": "string",
- "durationMinutes": 0,
- "room": "string",
- "title": "string",
- "details": "string",
- "type": "string",
- "urgent": true,
- "isOnline": true,
- "videoCall": {
- "id": "string",
- "createdAt": "string"
}, - "pending": true,
- "cancelReason": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| start required | string <date-time> |
| end required | string <date-time> |
| branchId required | string [ 1 .. 64 ] characters |
| doctorId required | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
| title | string <= 200 characters |
| details | string <= 2000 characters |
| room | string <= 50 characters |
| urgent | boolean |
{- "start": "2019-08-24T14:15:22Z",
- "end": "2019-08-24T14:15:22Z",
- "branchId": "string",
- "doctorId": "string",
- "patientId": "string",
- "title": "string",
- "details": "string",
- "room": "string",
- "urgent": true
}{- "data": {
- "object": "appointment",
- "id": "string",
- "status": "OPEN",
- "start": "string",
- "end": "string",
- "durationMinutes": 0,
- "room": "string",
- "title": "string",
- "details": "string",
- "type": "string",
- "urgent": true,
- "isOnline": true,
- "videoCall": {
- "id": "string",
- "createdAt": "string"
}, - "pending": true,
- "cancelReason": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "appointment",
- "id": "string",
- "status": "OPEN",
- "start": "string",
- "end": "string",
- "durationMinutes": 0,
- "room": "string",
- "title": "string",
- "details": "string",
- "type": "string",
- "urgent": true,
- "isOnline": true,
- "videoCall": {
- "id": "string",
- "createdAt": "string"
}, - "pending": true,
- "cancelReason": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
| start | string <date-time> |
| end | string <date-time> |
| title | string <= 200 characters |
| details | string <= 2000 characters |
| room | string <= 50 characters |
{- "start": "2019-08-24T14:15:22Z",
- "end": "2019-08-24T14:15:22Z",
- "title": "string",
- "details": "string",
- "room": "string"
}{- "data": {
- "object": "appointment",
- "id": "string",
- "status": "OPEN",
- "start": "string",
- "end": "string",
- "durationMinutes": 0,
- "room": "string",
- "title": "string",
- "details": "string",
- "type": "string",
- "urgent": true,
- "isOnline": true,
- "videoCall": {
- "id": "string",
- "createdAt": "string"
}, - "pending": true,
- "cancelReason": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
| cancelReason | string <= 500 characters |
{- "cancelReason": "string"
}{- "data": {
- "object": "appointment",
- "id": "string",
- "status": "OPEN",
- "start": "string",
- "end": "string",
- "durationMinutes": 0,
- "room": "string",
- "title": "string",
- "details": "string",
- "type": "string",
- "urgent": true,
- "isOnline": true,
- "videoCall": {
- "id": "string",
- "createdAt": "string"
}, - "pending": true,
- "cancelReason": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "invoice",
- "id": "string",
- "referenceId": 0,
- "total": 0,
- "subtotal": 0,
- "tax": 0,
- "taxPercent": 0,
- "discount": 0,
- "discountPercent": 0,
- "paid": 0,
- "pendingPayment": 0,
- "insurance": 0,
- "paidInFull": true,
- "balanceInvoice": true,
- "chart": "string",
- "eInvoiceStatus": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "createdFromAppointmentId": "string",
- "insuranceCompanyId": "string",
- "claimId": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "releasedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "invoice",
- "id": "string",
- "referenceId": 0,
- "total": 0,
- "subtotal": 0,
- "tax": 0,
- "taxPercent": 0,
- "discount": 0,
- "discountPercent": 0,
- "paid": 0,
- "pendingPayment": 0,
- "insurance": 0,
- "paidInFull": true,
- "balanceInvoice": true,
- "chart": "string",
- "eInvoiceStatus": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "createdFromAppointmentId": "string",
- "insuranceCompanyId": "string",
- "claimId": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "releasedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "payment",
- "id": "string",
- "type": "string",
- "amount": 0,
- "tax": 0,
- "balance": 0,
- "claimed": true,
- "claimedAt": "string",
- "refunded": true,
- "refundedAt": "string",
- "chart": "string",
- "invoiceId": "string",
- "patientId": "string",
- "branchId": "string",
- "doctorId": "string",
- "appointmentId": "string",
- "insuranceCompanyId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}For POS/gateway partners that collect money outside Dentolize. Runs the full platform money path (treasury routing via branch defaults, invoice/patient totals, events). BALANCE and INSURANCE types are not accepted.
| invoiceId required | string [ 1 .. 64 ] characters |
| amount required | number > 0 Must not exceed the invoice pending amount |
| type required | string Enum: "CARD" "CASH" "BANK_TRANSFER" "MOBILE_WALLET" "CHEQUE" "OTHER" |
| treasuryId | string [ 1 .. 64 ] characters Target treasury; defaults to the invoice branch's default treasury for the payment type |
| reference | string [ 1 .. 500 ] characters External reference (gateway/POS transaction id), stored on the payment |
{- "invoiceId": "string",
- "amount": 0,
- "type": "CARD",
- "treasuryId": "string",
- "reference": "string"
}{- "data": {
- "object": "payment",
- "id": "string",
- "type": "string",
- "amount": 0,
- "tax": 0,
- "balance": 0,
- "claimed": true,
- "claimedAt": "string",
- "refunded": true,
- "refundedAt": "string",
- "chart": "string",
- "invoiceId": "string",
- "patientId": "string",
- "branchId": "string",
- "doctorId": "string",
- "appointmentId": "string",
- "insuranceCompanyId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "payment",
- "id": "string",
- "type": "string",
- "amount": 0,
- "tax": 0,
- "balance": 0,
- "claimed": true,
- "claimedAt": "string",
- "refunded": true,
- "refundedAt": "string",
- "chart": "string",
- "invoiceId": "string",
- "patientId": "string",
- "branchId": "string",
- "doctorId": "string",
- "appointmentId": "string",
- "insuranceCompanyId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
| doctorId | string [ 1 .. 64 ] characters |
| status | string Enum: "EXISTING" "PLANNED" "COMPLETED" "IN_PROGRESS" "REJECTED" "CONDITION" |
| approvalRequired | string Enum: "true" "false" Filter treatments needing insurance pre-authorization |
| approved | string Enum: "true" "false" Filter treatments by pre-authorization approval state |
{- "data": [
- {
- "object": "treatment",
- "id": "string",
- "name": "string",
- "code": "string",
- "status": "EXISTING",
- "chart": "string",
- "diagnosis": "string",
- "details": "string",
- "price": 0,
- "total": 0,
- "amount": 0,
- "discount": 0,
- "tax": 0,
- "paid": 0,
- "completedPercent": 0,
- "paidInFull": true,
- "tooth": [
- 0
], - "toothPart": [
- "string"
], - "child": true,
- "start": "string",
- "end": "string",
- "expires": "string",
- "hasSteps": true,
- "quotationId": "string",
- "steps": [
- {
- "object": "treatment_step",
- "id": "string",
- "name": "string",
- "status": "EXISTING",
- "order": 0,
- "appointmentId": "string",
- "start": "string",
- "end": "string"
}
], - "approvalRequired": true,
- "approved": true,
- "preAuth": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "invoiceId": "string",
- "procedureId": "string",
- "insuranceCompanyId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "treatment",
- "id": "string",
- "name": "string",
- "code": "string",
- "status": "EXISTING",
- "chart": "string",
- "diagnosis": "string",
- "details": "string",
- "price": 0,
- "total": 0,
- "amount": 0,
- "discount": 0,
- "tax": 0,
- "paid": 0,
- "completedPercent": 0,
- "paidInFull": true,
- "tooth": [
- 0
], - "toothPart": [
- "string"
], - "child": true,
- "start": "string",
- "end": "string",
- "expires": "string",
- "hasSteps": true,
- "quotationId": "string",
- "steps": [
- {
- "object": "treatment_step",
- "id": "string",
- "name": "string",
- "status": "EXISTING",
- "order": 0,
- "appointmentId": "string",
- "start": "string",
- "end": "string"
}
], - "approvalRequired": true,
- "approved": true,
- "preAuth": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "invoiceId": "string",
- "procedureId": "string",
- "insuranceCompanyId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| branchId required | string [ 1 .. 64 ] characters |
| doctorId required | string [ 1 .. 64 ] characters |
| date | string^\d{4}-\d{2}-\d{2}$ Return slots for this single day (within the next 60 days) |
| days | integer [ 1 .. 30 ] Number of upcoming days with slots to return (default 7); ignored when date is set |
{- "data": {
- "object": "availability",
- "branchId": "string",
- "doctorId": "string",
- "days": [
- {
- "date": "string",
- "slots": [
- {
- "start": "string",
- "end": "string"
}
]
}
]
}
}{- "data": {
- "object": "clinic",
- "id": "string",
- "name": "string",
- "logoUrl": "string",
- "country": "string",
- "currency": "string",
- "timeZone": "string",
- "locale": "string",
- "taxPercent": 0,
- "charts": [
- "string"
], - "brandingColor": "string",
- "businessRegistration": {
- "vatNumber": "string",
- "vatName": "string",
- "crnNumber": "string",
- "commercialName": "string",
- "city": "string",
- "isValid": true
}, - "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
{- "data": [
- {
- "object": "branch",
- "id": "string",
- "name": "string",
- "address": "string",
- "location": "string",
- "phones": [
- "string"
], - "rooms": [
- "string"
], - "specialities": [
- "string"
], - "appointmentTypes": [
- "string"
], - "opens": [
- "string"
], - "closes": [
- "string"
], - "closedDays": [
- 0
], - "holidays": [
- 0
], - "firstDayOfWeek": 0,
- "active": true,
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "branch",
- "id": "string",
- "name": "string",
- "address": "string",
- "location": "string",
- "phones": [
- "string"
], - "rooms": [
- "string"
], - "specialities": [
- "string"
], - "appointmentTypes": [
- "string"
], - "opens": [
- "string"
], - "closes": [
- "string"
], - "closedDays": [
- 0
], - "holidays": [
- 0
], - "firstDayOfWeek": 0,
- "active": true,
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| isDoctor | string Enum: "true" "false" Filter to bookable doctors only |
{- "data": [
- {
- "object": "practitioner",
- "id": "string",
- "displayName": "string",
- "role": "string",
- "isDoctor": true,
- "specialty": "string",
- "color": "string",
- "order": 0,
- "branchIds": [
- "string"
], - "active": true,
- "createdAt": "string",
- "updatedAt": "string",
- "phoneNumber": "string",
- "phoneNumber2": "string",
- "email": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| groupId | string [ 1 .. 64 ] characters |
| searchTerm | string [ 2 .. 100 ] characters Matches procedure name or code |
{- "data": [
- {
- "object": "procedure",
- "id": "string",
- "name": "string",
- "code": "string",
- "price": 0,
- "groupId": "string",
- "groupName": "string",
- "chart": "string",
- "order": 0,
- "active": true,
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
{- "data": [
- {
- "object": "medication",
- "id": "string",
- "name": "string",
- "category": "string",
- "dosage": 0,
- "dispense": "string",
- "sig": "string",
- "duration": 0,
- "method": "string",
- "strength": "string",
- "details": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}{- "data": {
- "object": "installation",
- "id": "string",
- "status": "string",
- "pluginSlug": "string",
- "pluginVersion": "string",
- "grantedScopes": [
- "string"
], - "grantedEvents": [
- "string"
], - "settings": {
- "property1": null,
- "property2": null
}, - "installedAt": "string"
}
}| property name* additional property | any |
{- "property1": null,
- "property2": null
}{- "data": {
- "object": "installation_settings",
- "installationId": "string",
- "settings": {
- "property1": null,
- "property2": null
}
}
}{- "data": [
- {
- "object": "webhook_endpoint",
- "id": "string",
- "url": "string",
- "events": [
- "string"
], - "mode": "LIVE",
- "active": true,
- "disabledReason": "string",
- "consecutiveFailures": 0,
- "createdAt": "string",
- "updatedAt": "string"
}
]
}| url required | string <uri> https:// endpoint (http allowed in test mode) |
| events required | Array of strings non-empty Event types; must be covered by the installation consent |
{- "events": [
- "string"
]
}{- "data": {
- "object": "webhook_endpoint",
- "id": "string",
- "url": "string",
- "events": [
- "string"
], - "mode": "LIVE",
- "active": true,
- "disabledReason": "string",
- "consecutiveFailures": 0,
- "createdAt": "string",
- "updatedAt": "string",
- "signingSecret": "string"
}
}| id required | string [ 1 .. 64 ] characters |
| url | string <uri> |
| events | Array of strings non-empty |
| active | boolean |
{- "events": [
- "string"
], - "active": true
}{- "data": {
- "object": "webhook_endpoint",
- "id": "string",
- "url": "string",
- "events": [
- "string"
], - "mode": "LIVE",
- "active": true,
- "disabledReason": "string",
- "consecutiveFailures": 0,
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "webhook_endpoint",
- "id": "string",
- "url": "string",
- "events": [
- "string"
], - "mode": "LIVE",
- "active": true,
- "disabledReason": "string",
- "consecutiveFailures": 0,
- "createdAt": "string",
- "updatedAt": "string",
- "signingSecret": "string"
}
}| id required | string [ 1 .. 64 ] characters |
| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
{- "data": [
- {
- "object": "webhook_delivery",
- "id": "string",
- "eventId": "string",
- "eventType": "string",
- "status": "string",
- "attempts": 0,
- "responseStatus": 0,
- "errorMessage": "string",
- "lastAttemptAt": "string",
- "nextRetryAt": "string",
- "durationMs": 0,
- "createdAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
| eventType | string Defaults to the first subscribed event |
{- "eventType": "string"
}{- "data": {
- "object": "webhook_delivery",
- "id": "string",
- "status": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
{- "data": [
- {
- "object": "lab",
- "id": "string",
- "name": "string",
- "number": "string",
- "email": "string",
- "details": "string",
- "disabled": true,
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| labId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "lab_item",
- "id": "string",
- "labId": "string",
- "name": "string",
- "price": 0,
- "details": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
| labId | string [ 1 .. 64 ] characters |
| status | string Enum: "pending" "received" "delivered" |
{- "data": [
- {
- "object": "lab_order",
- "id": "string",
- "name": "string",
- "status": "pending",
- "received": true,
- "delivered": true,
- "receivedAt": "string",
- "due": "string",
- "details": "string",
- "tooth": [
- 0
], - "shade": "string",
- "child": true,
- "items": 0,
- "labId": "string",
- "labItemId": "string",
- "branchId": "string",
- "patientId": "string",
- "doctorId": "string",
- "appointmentId": "string",
- "operationId": "string",
- "operationStepId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "lab_order",
- "id": "string",
- "name": "string",
- "status": "pending",
- "received": true,
- "delivered": true,
- "receivedAt": "string",
- "due": "string",
- "details": "string",
- "tooth": [
- 0
], - "shade": "string",
- "child": true,
- "items": 0,
- "labId": "string",
- "labItemId": "string",
- "branchId": "string",
- "patientId": "string",
- "doctorId": "string",
- "appointmentId": "string",
- "operationId": "string",
- "operationStepId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
| received | boolean Value: true Mark the order received back from the lab (sets receivedAt) |
| delivered | boolean Value: true Mark the order delivered to the patient |
| shade | string <= 100 characters |
| details | string <= 2000 characters |
{- "received": true,
- "delivered": true,
- "shade": "string",
- "details": "string"
}{- "data": {
- "object": "lab_order",
- "id": "string",
- "name": "string",
- "status": "pending",
- "received": true,
- "delivered": true,
- "receivedAt": "string",
- "due": "string",
- "details": "string",
- "tooth": [
- 0
], - "shade": "string",
- "child": true,
- "items": 0,
- "labId": "string",
- "labItemId": "string",
- "branchId": "string",
- "patientId": "string",
- "doctorId": "string",
- "appointmentId": "string",
- "operationId": "string",
- "operationStepId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
| signed | string Enum: "true" "false" Filter by acceptance (signature) state |
{- "data": [
- {
- "object": "quotation",
- "id": "string",
- "name": "string",
- "total": 0,
- "subtotal": 0,
- "tax": 0,
- "taxPercent": 0,
- "discount": 0,
- "discountPercent": 0,
- "diagnosticFee": 0,
- "insurance": 0,
- "completedPercent": 0,
- "seen": true,
- "signed": true,
- "signedAt": "string",
- "diagnosis": "string",
- "chart": "string",
- "operationIds": [
- "string"
], - "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "quotation",
- "id": "string",
- "name": "string",
- "total": 0,
- "subtotal": 0,
- "tax": 0,
- "taxPercent": 0,
- "discount": 0,
- "discountPercent": 0,
- "diagnosticFee": 0,
- "insurance": 0,
- "completedPercent": 0,
- "seen": true,
- "signed": true,
- "signedAt": "string",
- "diagnosis": "string",
- "chart": "string",
- "operationIds": [
- "string"
], - "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "prescription",
- "id": "string",
- "name": "string",
- "details": "string",
- "seen": true,
- "medications": [
- {
- "object": "medication_line",
- "id": "string",
- "name": "string",
- "dosage": 0,
- "dispense": "string",
- "type": "string",
- "sig": "string",
- "duration": 0,
- "method": "string",
- "strength": "string",
- "details": "string",
- "order": 0
}
], - "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "prescription",
- "id": "string",
- "name": "string",
- "details": "string",
- "seen": true,
- "medications": [
- {
- "object": "medication_line",
- "id": "string",
- "name": "string",
- "dosage": 0,
- "dispense": "string",
- "type": "string",
- "sig": "string",
- "duration": 0,
- "method": "string",
- "strength": "string",
- "details": "string",
- "order": 0
}
], - "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
{- "data": [
- {
- "object": "medication",
- "id": "string",
- "name": "string",
- "category": "string",
- "dosage": 0,
- "dispense": "string",
- "sig": "string",
- "duration": 0,
- "method": "string",
- "strength": "string",
- "details": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
{- "data": [
- {
- "object": "form",
- "id": "string",
- "title": "string",
- "active": true,
- "multipleSubmissionsAllowed": true,
- "currentVersion": {
- "id": "string",
- "versionNum": 0,
- "schema": [
- null
]
}, - "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| formId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
| status | string Enum: "DRAFT" "SUBMITTED" |
{- "data": [
- {
- "object": "form_submission",
- "id": "string",
- "formId": "string",
- "versionId": "string",
- "patientId": "string",
- "ref": "string",
- "status": "DRAFT",
- "answers": {
- "property1": null,
- "property2": null
}, - "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| formId required | string [ 1 .. 64 ] characters |
| patientId required | string [ 1 .. 64 ] characters |
| ref | string <= 200 characters |
required | object |
{- "formId": "string",
- "patientId": "string",
- "ref": "string",
- "answers": {
- "property1": null,
- "property2": null
}
}{- "data": {
- "object": "form_submission",
- "id": "string",
- "formId": "string",
- "versionId": "string",
- "patientId": "string",
- "ref": "string",
- "status": "DRAFT",
- "answers": {
- "property1": null,
- "property2": null
}, - "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "form_submission",
- "id": "string",
- "formId": "string",
- "versionId": "string",
- "patientId": "string",
- "ref": "string",
- "status": "DRAFT",
- "answers": {
- "property1": null,
- "property2": null
}, - "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
| signed | string Enum: "true" "false" |
{- "data": [
- {
- "object": "consent_form",
- "id": "string",
- "name": "string",
- "signed": true,
- "signRequired": true,
- "signedAt": "string",
- "witnessSigned": true,
- "expiresAt": "string",
- "templateId": "string",
- "patientId": "string",
- "branchId": "string",
- "doctorId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "encounter",
- "id": "string",
- "chiefComplaint": "string",
- "symptoms": "string",
- "diagnosis": "string",
- "testsOrdered": [
- "string"
], - "imagingOrdered": [
- "string"
], - "testResults": "string",
- "imagingResults": "string",
- "clinicalNotes": "string",
- "consultationNotes": "string",
- "dischargeSummary": "string",
- "last": true,
- "measurements": [
- {
- "object": "measurement",
- "id": "string",
- "name": "BLOOD_PRESSURE_SYSTOLIC",
- "value": 0,
- "improvement": 0,
- "overallImprovement": 0,
- "difference": 0,
- "overallDifference": 0,
- "status": 0,
- "durationDays": 0,
- "overallDurationDays": 0,
- "last": true,
- "encounterId": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "encounter",
- "id": "string",
- "chiefComplaint": "string",
- "symptoms": "string",
- "diagnosis": "string",
- "testsOrdered": [
- "string"
], - "imagingOrdered": [
- "string"
], - "testResults": "string",
- "imagingResults": "string",
- "clinicalNotes": "string",
- "consultationNotes": "string",
- "dischargeSummary": "string",
- "last": true,
- "measurements": [
- {
- "object": "measurement",
- "id": "string",
- "name": "BLOOD_PRESSURE_SYSTOLIC",
- "value": 0,
- "improvement": 0,
- "overallImprovement": 0,
- "difference": 0,
- "overallDifference": 0,
- "status": 0,
- "durationDays": 0,
- "overallDurationDays": 0,
- "last": true,
- "encounterId": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
| name required | string Enum: "BLOOD_PRESSURE_SYSTOLIC" "BLOOD_PRESSURE_DIASTOLIC" "HEART_RATE" "RESPIRATORY_RATE" "TEMPERATURE" "OXYGEN_SATURATION" "HEIGHT" "WEIGHT" "BMI" "BLOOD_GLUCOSE_FASTING" "BLOOD_GLUCOSE_POSTPRANDIAL" "TOTAL_CHOLESTEROL" "HDL_CHOLESTEROL" "LDL_CHOLESTEROL" "TRIGLYCERIDES" "HEMOGLOBIN" "HEMATOCRIT" "WBC_COUNT" "RBC_COUNT" "PLATELET_COUNT" "EJECTION_FRACTION" "CREATININE" "MAP" "BSA" "IBW" "BMR" "BUN" "GFR" "ALT" "AST" "BILIRUBIN" "ALBUMIN" "TSH" "FREE_T4" "FREE_T3" "HBA1C" "CAPILLARY_REFILL_TIME" "CVP" "ICP" "ETCO2" "URINE_OUTPUT" "GCS" "PAIN_SCORE" "APGAR_SCORE" "PUPIL_SIZE" "PA_O2" "PA_CO2" "PH" "WAIST_CIRCUMFERENCE" |
| value required | number |
{- "name": "BLOOD_PRESSURE_SYSTOLIC",
- "value": 0
}{- "data": {
- "object": "measurement",
- "id": "string",
- "name": "BLOOD_PRESSURE_SYSTOLIC",
- "value": 0,
- "improvement": 0,
- "overallImprovement": 0,
- "difference": 0,
- "overallDifference": 0,
- "status": 0,
- "durationDays": 0,
- "overallDurationDays": 0,
- "last": true,
- "encounterId": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| operationId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "file",
- "id": "string",
- "name": "string",
- "contentType": "string",
- "sizeBytes": 0,
- "order": 0,
- "downloadUrl": "string",
- "patientId": "string",
- "operationId": "string",
- "appointmentId": "string",
- "encounterId": "string",
- "xrayId": "string",
- "folderId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
| fileName required | string [ 1 .. 200 ] characters |
| contentType required | string Enum: "image/jpeg" "image/png" "image/webp" "image/tiff" "image/bmp" "application/pdf" "application/dicom" |
| sizeBytes required | integer [ 10 .. 104857600 ] |
| kind required | string Enum: "file" "xray" |
| operationId | string [ 1 .. 64 ] characters |
{- "fileName": "string",
- "contentType": "image/jpeg",
- "sizeBytes": 10,
- "kind": "file",
- "operationId": "string"
}{- "data": {
- "object": "file_upload",
- "fileId": "string",
- "uploadUrl": "string",
- "fields": {
- "property1": "string",
- "property2": "string"
}, - "method": "POST",
- "expiresInSeconds": 0
}
}| id required | string [ 1 .. 64 ] characters |
| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| operationId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "xray",
- "id": "string",
- "name": "string",
- "type": "string",
- "details": "string",
- "files": [
- {
- "object": "file",
- "id": "string",
- "name": "string",
- "contentType": "string",
- "sizeBytes": 0,
- "order": 0,
- "downloadUrl": "string",
- "patientId": "string",
- "operationId": "string",
- "appointmentId": "string",
- "encounterId": "string",
- "xrayId": "string",
- "folderId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "patientId": "string",
- "operationId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
| fileId required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "file",
- "id": "string",
- "name": "string",
- "contentType": "string",
- "sizeBytes": 0,
- "order": 0,
- "downloadUrl": "string",
- "patientId": "string",
- "operationId": "string",
- "appointmentId": "string",
- "encounterId": "string",
- "xrayId": "string",
- "folderId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| searchTerm | string [ 2 .. 100 ] characters |
{- "data": [
- {
- "object": "insurance_company",
- "id": "string",
- "name": "string",
- "number": "string",
- "email": "string",
- "taxNumber": "string",
- "insuranceLimit": 0,
- "insuranceUnlimited": true,
- "insurancePercentage": 0,
- "approvalRequired": true,
- "insuranceStartMonth": 0,
- "taxPercent": 0,
- "totalPolicies": 0,
- "forcePolicySelect": true,
- "disabled": true,
- "city": "string",
- "countryCode": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "insurance_company",
- "id": "string",
- "name": "string",
- "number": "string",
- "email": "string",
- "taxNumber": "string",
- "insuranceLimit": 0,
- "insuranceUnlimited": true,
- "insurancePercentage": 0,
- "approvalRequired": true,
- "insuranceStartMonth": 0,
- "taxPercent": 0,
- "totalPolicies": 0,
- "forcePolicySelect": true,
- "disabled": true,
- "city": "string",
- "countryCode": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| insuranceCompanyId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "insurance_policy",
- "id": "string",
- "insuranceCompanyId": "string",
- "policyNumber": "string",
- "holderName": "string",
- "coverageType": "string",
- "relationship": "string",
- "status": "string",
- "sponsorNumber": "string",
- "inception": "string",
- "due": "string",
- "disabled": true,
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| policyId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "policy_class",
- "id": "string",
- "insurancePolicyId": "string",
- "name": "string",
- "maxLimit": 0,
- "insuranceLimit": 0,
- "insuranceUnlimited": true,
- "insurancePercentage": 0,
- "approvalRequired": true,
- "disabled": true,
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| status | string Enum: "PLANNING" "IN_REVIEW" "PARTIALLY_CLAIMED" "FULLY_CLAIMED" |
| insuranceCompanyId | string [ 1 .. 64 ] characters |
| branchId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "claim",
- "id": "string",
- "referenceId": 0,
- "name": "string",
- "status": "PLANNING",
- "startDate": "string",
- "endDate": "string",
- "totalInsuranceAmount": 0,
- "invoiceCount": 0,
- "partialPaymentPercent": 0,
- "promptPaymentPercent": 0,
- "partialPaymentAmount": 0,
- "promptPaymentDeduction": 0,
- "netPartialPayment": 0,
- "rejectedAmount": 0,
- "remainingAmount": 0,
- "totalReceivedAmount": 0,
- "branchId": "string",
- "insuranceCompanyId": "string",
- "reviewedAt": "string",
- "partiallyClaimedAt": "string",
- "fullyClaimedAt": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "invoiceIds": [
- "string"
]
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "claim",
- "id": "string",
- "referenceId": 0,
- "name": "string",
- "status": "PLANNING",
- "startDate": "string",
- "endDate": "string",
- "totalInsuranceAmount": 0,
- "invoiceCount": 0,
- "partialPaymentPercent": 0,
- "promptPaymentPercent": 0,
- "partialPaymentAmount": 0,
- "promptPaymentDeduction": 0,
- "netPartialPayment": 0,
- "rejectedAmount": 0,
- "remainingAmount": 0,
- "totalReceivedAmount": 0,
- "branchId": "string",
- "insuranceCompanyId": "string",
- "reviewedAt": "string",
- "partiallyClaimedAt": "string",
- "fullyClaimedAt": "string",
- "createdAt": "string",
- "updatedAt": "string",
- "invoiceIds": [
- "string"
]
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| status | string Enum: "CREATED" "PENDING" "SUCCESS" "FAILED" "REFUND" |
| invoiceId | string [ 1 .. 64 ] characters |
| branchId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "online_payment",
- "id": "string",
- "amount": 0,
- "extraFees": 0,
- "provider": "string",
- "status": "CREATED",
- "paymentLink": "string",
- "paidAt": "string",
- "invoiceId": "string",
- "paymentId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "online_payment",
- "id": "string",
- "amount": 0,
- "extraFees": 0,
- "provider": "string",
- "status": "CREATED",
- "paymentLink": "string",
- "paidAt": "string",
- "invoiceId": "string",
- "paymentId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}Creates a gateway payment link using the clinic's configured payment provider. Returns 409 payment_provider_not_configured when the clinic has no usable payment option.
| invoiceId required | string [ 1 .. 64 ] characters |
| amount | number > 0 Amount to collect; defaults to the invoice pending amount |
{- "invoiceId": "string",
- "amount": 0
}{- "data": {
- "object": "online_payment",
- "id": "string",
- "amount": 0,
- "extraFees": 0,
- "provider": "string",
- "status": "CREATED",
- "paymentLink": "string",
- "paidAt": "string",
- "invoiceId": "string",
- "paymentId": "string",
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| status | string Enum: "NOT_STARTED" "PENDING" "IN_PROGRESS" "SUBMITTED" "CLEARED" "REJECTED" "CANCELLED" |
| invoiceId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "einvoice_submission",
- "id": "string",
- "invoiceId": "string",
- "claimId": "string",
- "provider": "string",
- "transactionType": "SIMPLIFIED",
- "status": "NOT_STARTED",
- "attemptNumber": 0,
- "submissionTime": "string",
- "clearanceTime": "string",
- "statusChangedAt": "string",
- "infoMessages": [
- "string"
], - "warningMessages": [
- "string"
], - "errorMessages": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "einvoice_submission",
- "id": "string",
- "invoiceId": "string",
- "claimId": "string",
- "provider": "string",
- "transactionType": "SIMPLIFIED",
- "status": "NOT_STARTED",
- "attemptNumber": 0,
- "submissionTime": "string",
- "clearanceTime": "string",
- "statusChangedAt": "string",
- "infoMessages": [
- "string"
], - "warningMessages": [
- "string"
], - "errorMessages": [
- "string"
], - "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| stageId | string [ 1 .. 64 ] characters |
| assignedToId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "lead",
- "id": "string",
- "referenceId": 0,
- "name": "string",
- "phone": "string",
- "email": "string",
- "branchId": "string",
- "dealSize": 0,
- "score": 0,
- "due": "string",
- "order": 0,
- "stageId": "string",
- "patientId": "string",
- "assignedToId": "string",
- "leadLinkId": "string",
- "rejectReasonId": "string",
- "referralSourceId": "string",
- "referralSubSourceId": "string",
- "stagedAt": "string",
- "journeyedAt": "string",
- "lastInteraction": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}Mirrors the public lead-capture path: creates the lead and its contact record on the selected pipeline stage with round-robin auto-assignment. Duplicate phone numbers are rejected with 409 lead_exists.
| name required | string [ 1 .. 200 ] characters |
| phone required | string^\+?[0-9][0-9 _-]{4,19}$ |
| stageId | string [ 1 .. 64 ] characters Defaults to the clinic's first pipeline stage |
| branchId | string [ 1 .. 64 ] characters Defaults to the clinic's first branch |
| sourceId | string [ 1 .. 64 ] characters Referral source id (campaign attribution) |
| subSourceId | string [ 1 .. 64 ] characters Referral sub-source id; requires sourceId |
| dealSize | number [ 0 .. 100000000 ] |
| notes | string [ 1 .. 2000 ] characters |
{- "name": "string",
- "phone": "string",
- "stageId": "string",
- "branchId": "string",
- "sourceId": "string",
- "subSourceId": "string",
- "dealSize": 100000000,
- "notes": "string"
}{- "data": {
- "object": "lead",
- "id": "string",
- "referenceId": 0,
- "name": "string",
- "phone": "string",
- "email": "string",
- "branchId": "string",
- "dealSize": 0,
- "score": 0,
- "due": "string",
- "order": 0,
- "stageId": "string",
- "patientId": "string",
- "assignedToId": "string",
- "leadLinkId": "string",
- "rejectReasonId": "string",
- "referralSourceId": "string",
- "referralSubSourceId": "string",
- "stagedAt": "string",
- "journeyedAt": "string",
- "lastInteraction": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "lead",
- "id": "string",
- "referenceId": 0,
- "name": "string",
- "phone": "string",
- "email": "string",
- "branchId": "string",
- "dealSize": 0,
- "score": 0,
- "due": "string",
- "order": 0,
- "stageId": "string",
- "patientId": "string",
- "assignedToId": "string",
- "leadLinkId": "string",
- "rejectReasonId": "string",
- "referralSourceId": "string",
- "referralSubSourceId": "string",
- "stagedAt": "string",
- "journeyedAt": "string",
- "lastInteraction": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}Stage moves run the full platform pipeline semantics: order shuffling, per-stage lead counters, due-date recalculation and a StageTimeline history row.
| id required | string [ 1 .. 64 ] characters |
| stageId | string [ 1 .. 64 ] characters |
| assignedToId | string or null [ 1 .. 64 ] characters Assignee user id; null unassigns |
| score | integer or null [ 0 .. 100 ] |
| dealSize | number [ 0 .. 100000000 ] |
{- "stageId": "string",
- "assignedToId": "string",
- "score": 100,
- "dealSize": 100000000
}{- "data": {
- "object": "lead",
- "id": "string",
- "referenceId": 0,
- "name": "string",
- "phone": "string",
- "email": "string",
- "branchId": "string",
- "dealSize": 0,
- "score": 0,
- "due": "string",
- "order": 0,
- "stageId": "string",
- "patientId": "string",
- "assignedToId": "string",
- "leadLinkId": "string",
- "rejectReasonId": "string",
- "referralSourceId": "string",
- "referralSubSourceId": "string",
- "stagedAt": "string",
- "journeyedAt": "string",
- "lastInteraction": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
{- "data": [
- {
- "object": "leadStage",
- "id": "string",
- "name": "string",
- "color": "string",
- "order": 0,
- "dueDays": 0,
- "totalLeads": 0,
- "requireReject": true,
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}Creates a pending communication dispatched by the platform message pipeline. The patient phone number is resolved internally and never returned. WhatsApp sends are restricted to APPROVED templates; SMS accepts free text. Responds 202 with the queued communication id.
| patientId required | string [ 1 .. 64 ] characters |
| channel required | string Enum: "whatsapp" "sms" |
| templateId | string [ 1 .. 64 ] characters APPROVED WhatsApp template id (required for whatsapp) |
| variables | Array of strings <= 20 items [ items <= 500 characters ] Ordered values for the template placeholders (whatsapp only) |
| text | string [ 1 .. 1000 ] characters Free-text body (sms only) |
{- "patientId": "string",
- "channel": "whatsapp",
- "templateId": "string",
- "variables": [
- "string"
], - "text": "string"
}{- "data": {
- "object": "message",
- "communicationId": "string",
- "channel": "whatsapp",
- "status": "queued"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| patientId | string [ 1 .. 64 ] characters |
| channel | string Enum: "whatsapp" "sms" "email" |
{- "data": [
- {
- "object": "communication",
- "id": "string",
- "channels": [
- "string"
], - "status": true,
- "pending": true,
- "canceled": true,
- "attempts": 0,
- "whatsappAttempts": 0,
- "emailAttempts": 0,
- "whatsappStatus": true,
- "whatsappPending": true,
- "emailStatus": true,
- "emailPending": true,
- "sentAt": "string",
- "whatsappSentAt": "string",
- "emailSentAt": "string",
- "contentPreview": "string",
- "patientId": "string",
- "userId": "string",
- "labId": "string",
- "leadId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| resolved | string Enum: "true" "false" |
| assignedTo | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "conversation",
- "id": "string",
- "phone": "string",
- "name": "string",
- "language": "string",
- "blocked": true,
- "resolved": true,
- "unseenCount": 0,
- "messagesCount": 0,
- "lastMessageAt": "string",
- "lastActivityAt": "string",
- "patientId": "string",
- "leadId": "string",
- "assignedToId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
| assignedToId | string or null [ 1 .. 64 ] characters Assignee user id; null unassigns |
| resolved | boolean |
{- "assignedToId": "string",
- "resolved": true
}{- "data": {
- "object": "conversation",
- "id": "string",
- "phone": "string",
- "name": "string",
- "language": "string",
- "blocked": true,
- "resolved": true,
- "unseenCount": 0,
- "messagesCount": 0,
- "lastMessageAt": "string",
- "lastActivityAt": "string",
- "patientId": "string",
- "leadId": "string",
- "assignedToId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
{- "data": [
- {
- "object": "conversationMessage",
- "id": "string",
- "conversationId": "string",
- "message": "string",
- "incoming": true,
- "header": "string",
- "footer": "string",
- "options": [
- "string"
], - "fileType": "string",
- "sentByUserId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}Sends a free-text WhatsApp reply through the clinic WhatsApp Business account. Only allowed within the 24-hour customer-service window (409 conversation_expired otherwise). Requires the clinic to have official WhatsApp configured (409 whatsapp_not_configured otherwise).
| id required | string [ 1 .. 64 ] characters |
| text required | string [ 1 .. 4096 ] characters |
{- "text": "string"
}{- "data": {
- "object": "conversationMessage",
- "id": "string",
- "conversationId": "string",
- "message": "string",
- "incoming": true,
- "header": "string",
- "footer": "string",
- "options": [
- "string"
], - "fileType": "string",
- "sentByUserId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "patientPoints",
- "patientId": "string",
- "total": 0,
- "used": 0,
- "remaining": 0,
- "expired": 0,
- "firstToExpire": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| patientId | string [ 1 .. 64 ] characters |
| action | string Enum: "PAYMENT" "REFERRAL" "FEEDBACK" "REFERRAL_FEEDBACK" "MANUAL" "TRANSFER" "DISCOUNT" |
{- "data": [
- {
- "object": "pointsTransaction",
- "id": "string",
- "points": 0,
- "remaining": 0,
- "expiresAt": "string",
- "action": "PAYMENT",
- "reason": "string",
- "patientId": "string",
- "branchId": "string",
- "invoiceId": "string",
- "paymentId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}Creates a MANUAL points transaction through the platform loyalty core: earned points expire per the clinic loyalty settings, redemptions consume earliest-expiring points first, and a redemption exceeding the remaining balance is rejected with 409 insufficient_points.
| patientId required | string [ 1 .. 64 ] characters |
| points required | integer Positive to earn, negative to redeem |
| reason | string [ 1 .. 500 ] characters |
{- "patientId": "string",
- "points": 0,
- "reason": "string"
}{- "data": {
- "object": "pointsTransaction",
- "id": "string",
- "points": 0,
- "remaining": 0,
- "expiresAt": "string",
- "action": "PAYMENT",
- "reason": "string",
- "patientId": "string",
- "branchId": "string",
- "invoiceId": "string",
- "paymentId": "string",
- "appointmentId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| doctorId | string [ 1 .. 64 ] characters |
| patientId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "appointmentFeedback",
- "id": "string",
- "rating": 0,
- "feedback": "string",
- "patientId": "string",
- "doctorId": "string",
- "branchId": "string",
- "appointmentId": "string",
- "answers": [
- {
- "questionId": "string",
- "rating": 0
}
], - "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| completed | string Enum: "true" "false" |
| dueFrom | string <date-time> Only tasks due at/after this instant |
| dueTo | string <date-time> Only tasks due at/before this instant |
| branchId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "task",
- "id": "string",
- "title": "string",
- "details": "string",
- "notes": "string",
- "completed": true,
- "approved": true,
- "approvalRequired": true,
- "completedAt": "string",
- "approvedAt": "string",
- "due": "string",
- "date": "string",
- "priority": "HIGH",
- "taskId": "string",
- "patientId": "string",
- "appointmentId": "string",
- "invoiceId": "string",
- "branchId": "string",
- "assigneeIds": [
- "string"
], - "completedById": "string",
- "approvedById": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| title required | string [ 1 .. 200 ] characters |
| details | string [ 1 .. 2000 ] characters |
| due | string <date-time> |
| priority | string Enum: "HIGH" "MEDIUM" "LOW" |
| assigneeIds | Array of strings <= 50 items [ items [ 1 .. 64 ] characters ] |
| branchId | string [ 1 .. 64 ] characters Defaults to the clinic's first branch |
{- "title": "string",
- "details": "string",
- "due": "2019-08-24T14:15:22Z",
- "priority": "HIGH",
- "assigneeIds": [
- "string"
], - "branchId": "string"
}{- "data": {
- "object": "task",
- "id": "string",
- "title": "string",
- "details": "string",
- "notes": "string",
- "completed": true,
- "approved": true,
- "approvalRequired": true,
- "completedAt": "string",
- "approvedAt": "string",
- "due": "string",
- "date": "string",
- "priority": "HIGH",
- "taskId": "string",
- "patientId": "string",
- "appointmentId": "string",
- "invoiceId": "string",
- "branchId": "string",
- "assigneeIds": [
- "string"
], - "completedById": "string",
- "approvedById": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}Mirrors the in-app completion flow: tasks with approvalRequired stay pending approval (approved=false) after completion; approval itself remains staff-only. Completing an already-completed task is a no-op returning the current state.
| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "task",
- "id": "string",
- "title": "string",
- "details": "string",
- "notes": "string",
- "completed": true,
- "approved": true,
- "approvalRequired": true,
- "completedAt": "string",
- "approvedAt": "string",
- "due": "string",
- "date": "string",
- "priority": "HIGH",
- "taskId": "string",
- "patientId": "string",
- "appointmentId": "string",
- "invoiceId": "string",
- "branchId": "string",
- "assigneeIds": [
- "string"
], - "completedById": "string",
- "approvedById": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters Only items stocked in a storage of this branch |
| belowMin | string Value: "true" Only items whose stock amount is below their minimum threshold |
{- "data": [
- {
- "object": "inventory_item",
- "id": "string",
- "name": "string",
- "details": "string",
- "amount": 0,
- "minAmount": 0,
- "preferredAmount": 0,
- "averageUsage": 0,
- "runOutDays": 0,
- "due": "string",
- "lastUsed": "string",
- "unitType": "string",
- "price": 0,
- "sku": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "inventory_item",
- "id": "string",
- "name": "string",
- "details": "string",
- "amount": 0,
- "minAmount": 0,
- "preferredAmount": 0,
- "averageUsage": 0,
- "runOutDays": 0,
- "due": "string",
- "lastUsed": "string",
- "unitType": "string",
- "price": 0,
- "sku": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
{- "data": [
- {
- "object": "supplier",
- "id": "string",
- "name": "string",
- "number": "string",
- "email": "string",
- "details": "string",
- "disabled": true,
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| status | string Enum: "CREATED" "CANCELED" "ACCEPTED" "CONFIRMED" "IN_PROGRESS" "IN_TRANSIT" "COMPLETED" |
| supplierId | string [ 1 .. 64 ] characters |
| branchId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "inventory_order",
- "id": "string",
- "type": "PURCHASE",
- "status": "CREATED",
- "subtotal": 0,
- "total": 0,
- "quantity": 0,
- "discount": 0,
- "delivery": 0,
- "discountIsPercent": true,
- "notes": "string",
- "deliveryTimeHours": 0,
- "startedAt": "string",
- "receivedAt": "string",
- "branchId": "string",
- "supplierId": "string",
- "patientId": "string",
- "appointmentId": "string",
- "receivedById": "string",
- "items": [
- {
- "object": "inventory_order_item",
- "id": "string",
- "name": "string",
- "quantity": 0,
- "price": 0,
- "total": 0,
- "discount": 0,
- "status": "CREATED",
- "due": "string",
- "inventoryItemId": "string",
- "inventorySubItemId": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}Creates a PURCHASE order in CREATED status against a supplier. Line totals default to quantity × the item's catalog price when no unit price is given. Receiving stock stays clinic-side.
| supplierId required | string [ 1 .. 64 ] characters |
| branchId required | string [ 1 .. 64 ] characters |
required | Array of objects [ 1 .. 200 ] items |
| notes | string [ 1 .. 2000 ] characters |
{- "supplierId": "string",
- "branchId": "string",
- "items": [
- {
- "inventoryItemId": "string",
- "quantity": 1000000,
- "price": 0
}
], - "notes": "string"
}{- "data": {
- "object": "inventory_order",
- "id": "string",
- "type": "PURCHASE",
- "status": "CREATED",
- "subtotal": 0,
- "total": 0,
- "quantity": 0,
- "discount": 0,
- "delivery": 0,
- "discountIsPercent": true,
- "notes": "string",
- "deliveryTimeHours": 0,
- "startedAt": "string",
- "receivedAt": "string",
- "branchId": "string",
- "supplierId": "string",
- "patientId": "string",
- "appointmentId": "string",
- "receivedById": "string",
- "items": [
- {
- "object": "inventory_order_item",
- "id": "string",
- "name": "string",
- "quantity": 0,
- "price": 0,
- "total": 0,
- "discount": 0,
- "status": "CREATED",
- "due": "string",
- "inventoryItemId": "string",
- "inventorySubItemId": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "inventory_order",
- "id": "string",
- "type": "PURCHASE",
- "status": "CREATED",
- "subtotal": 0,
- "total": 0,
- "quantity": 0,
- "discount": 0,
- "delivery": 0,
- "discountIsPercent": true,
- "notes": "string",
- "deliveryTimeHours": 0,
- "startedAt": "string",
- "receivedAt": "string",
- "branchId": "string",
- "supplierId": "string",
- "patientId": "string",
- "appointmentId": "string",
- "receivedById": "string",
- "items": [
- {
- "object": "inventory_order_item",
- "id": "string",
- "name": "string",
- "quantity": 0,
- "price": 0,
- "total": 0,
- "discount": 0,
- "status": "CREATED",
- "due": "string",
- "inventoryItemId": "string",
- "inventorySubItemId": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}
}Only CONFIRMED and IN_TRANSIT may be set by an integration; COMPLETED (receiving, which affects stock) and CANCELED remain clinic-side and are rejected with 403.
| id required | string [ 1 .. 64 ] characters |
| status required | string Enum: "CREATED" "CANCELED" "ACCEPTED" "CONFIRMED" "IN_PROGRESS" "IN_TRANSIT" "COMPLETED" |
{- "status": "CREATED"
}{- "data": {
- "object": "inventory_order",
- "id": "string",
- "type": "PURCHASE",
- "status": "CREATED",
- "subtotal": 0,
- "total": 0,
- "quantity": 0,
- "discount": 0,
- "delivery": 0,
- "discountIsPercent": true,
- "notes": "string",
- "deliveryTimeHours": 0,
- "startedAt": "string",
- "receivedAt": "string",
- "branchId": "string",
- "supplierId": "string",
- "patientId": "string",
- "appointmentId": "string",
- "receivedById": "string",
- "items": [
- {
- "object": "inventory_order_item",
- "id": "string",
- "name": "string",
- "quantity": 0,
- "price": 0,
- "total": 0,
- "discount": 0,
- "status": "CREATED",
- "due": "string",
- "inventoryItemId": "string",
- "inventorySubItemId": "string"
}
], - "createdAt": "string",
- "updatedAt": "string"
}
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| mainType | string Enum: "COST_OF_REVENUE" "OPERATING_EXPENSES" "TAX" "OTHER" |
| branchId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "expense",
- "id": "string",
- "name": "string",
- "amount": 0,
- "items": 0,
- "date": "string",
- "type": "string",
- "mainType": "COST_OF_REVENUE",
- "otherType": "string",
- "paid": 0,
- "confirmed": true,
- "automatic": true,
- "isDebt": true,
- "isInstallments": true,
- "branchId": "string",
- "supplierId": "string",
- "labId": "string",
- "userId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "income",
- "id": "string",
- "name": "string",
- "amount": 0,
- "date": "string",
- "type": "string",
- "paymentType": "CARD",
- "otherType": "string",
- "branchId": "string",
- "patientId": "string",
- "expenseId": "string",
- "userId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| from | string <date-time> |
| to | string <date-time> |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| treasuryId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "transaction",
- "id": "string",
- "referenceNumber": 0,
- "type": "CARD",
- "amount": 0,
- "incoming": true,
- "pending": true,
- "confirmed": true,
- "deleted": true,
- "balanceAfter": 0,
- "treasuryId": "string",
- "branchId": "string",
- "paymentId": "string",
- "billingPaymentId": "string",
- "incomeId": "string",
- "receivedTreasuryId": "string",
- "receivedAt": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| cursor | string <= 500 characters Opaque cursor from a previous page |
| limit | integer [ 1 .. 100 ] Page size, 1-100 (default 25) |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
| branchId | string [ 1 .. 64 ] characters |
{- "data": [
- {
- "object": "treasury",
- "id": "string",
- "name": "string",
- "publicName": "string",
- "type": "CARD",
- "balance": 0,
- "branchId": "string",
- "createdAt": "string",
- "updatedAt": "string"
}
], - "hasMore": true,
- "nextCursor": "string"
}| from | string <date-time> |
| to | string <date-time> |
| branchId | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "analytics.revenue",
- "from": "2019-08-24T14:15:22Z",
- "to": "2019-08-24T14:15:22Z",
- "branchId": "string",
- "totals": {
- "invoiced": 0,
- "paid": 0,
- "pending": 0
}, - "byPaymentType": [
- {
- "type": "string",
- "amount": 0
}
]
}
}| from | string <date-time> |
| to | string <date-time> |
| branchId | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "analytics.appointments",
- "from": "2019-08-24T14:15:22Z",
- "to": "2019-08-24T14:15:22Z",
- "branchId": "string",
- "total": 0,
- "byStatus": [
- {
- "status": "string",
- "count": 0
}
], - "noShowRate": 0
}
}| from | string <date-time> |
| to | string <date-time> |
{- "data": {
- "object": "analytics.treatments",
- "from": "2019-08-24T14:15:22Z",
- "to": "2019-08-24T14:15:22Z",
- "byStatus": [
- {
- "status": "string",
- "count": 0
}
], - "topProcedures": [
- {
- "procedureId": "string",
- "name": "string",
- "count": 0
}
]
}
}Requires the read scope of the exported resource; serialized rows apply the same PII tiers as the list routes (e.g. patients without patients:read.pii export masked). Capped at 50,000 rows — larger datasets must be windowed with updatedAfter. v1 runs the export inline and responds when the file is ready; poll GET /exports/{id} for the download URL.
| resource required | string Enum: "patients" "appointments" "invoices" "payments" "treatments" |
| updatedAfter | string <date-time> Only return records updated strictly after this instant (delta sync) |
{- "resource": "patients",
- "updatedAfter": "2019-08-24T14:15:22Z"
}{- "data": {
- "object": "export",
- "exportId": "string",
- "resource": "patients",
- "status": "processing",
- "rows": 0,
- "url": "string"
}
}| id required | string [ 1 .. 64 ] characters |
{- "data": {
- "object": "export",
- "exportId": "string",
- "resource": "patients",
- "status": "processing",
- "rows": 0,
- "url": "string"
}
}{- "data": [
- {
- "id": "string",
- "object": "event",
- "type": "string",
- "apiVersion": "string",
- "resourceType": "string",
- "resourceId": "string",
- "payload": {
- "property1": null,
- "property2": null
}, - "createdAt": "2019-08-24T14:15:22Z"
}
], - "hasMore": true,
- "nextCursor": "string"
}{- "data": {
- "id": "string",
- "object": "event",
- "type": "string",
- "apiVersion": "string",
- "resourceType": "string",
- "resourceId": "string",
- "payload": {
- "property1": null,
- "property2": null
}, - "createdAt": "2019-08-24T14:15:22Z"
}
}