{"openapi":"3.1.0","info":{"title":"GELYPTIC MD Public API","version":"1.0.0-v1","description":"Versioned public API for approved GELYPTIC MD integration partners. Clinical data is limited to records the calling application created itself; global health endpoints are aggregated and de-identified by design. This document describes security controls only and makes no regulatory compliance claim."},"servers":[{"url":"https://gelypticmd.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Send `Authorization: Bearer <api key>`. Keys are server-side credentials issued in the developer portal and shown once at creation. Sandbox keys are prefixed `smd_sk_test_`, production keys `smd_sk_live_`."}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","request_id"],"properties":{"code":{"type":"string","enum":["INVALID_REQUEST","UNAUTHORIZED","INVALID_CREDENTIALS","INVALID_SCOPE","APPLICATION_SUSPENDED","NOT_FOUND","NOT_IMPLEMENTED","CONFLICT","PAYLOAD_TOO_LARGE","RATE_LIMITED","INTERNAL_ERROR"]},"message":{"type":"string"},"request_id":{"type":"string","examples":["req_9f2c4b1e8a7d4c2fb0a1d3e5f6071829"]}}}}},"Pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}},"ValidatedLoincBlock":{"type":"object","additionalProperties":false,"required":["system","code","display"],"properties":{"system":{"const":"http://loinc.org"},"code":{"type":"string","pattern":"^[0-9]+-[0-9]$"},"display":{"type":"string"}},"description":"Source-backed LOINC order candidate, not a measured result or confirmed local laboratory orderable. Clinician/laboratory review required."},"PublicSoap":{"type":"object","required":["subjective","objective","assessment","plan","loinc"],"properties":{"subjective":{"type":"string"},"objective":{"type":"string"},"assessment":{"type":"string"},"plan":{"type":"string"},"loinc":{"type":"array","items":{"$ref":"#/components/schemas/ValidatedLoincBlock"},"description":"Computed in request memory from explicit plan orders; never saved to consultations, mapping tables or webhook deliveries. Empty for unsupported/ambiguous orders. Clients control retention after receipt."}}},"PublicNote":{"type":"object","properties":{"encounter_id":{"type":"string"},"external_encounter_id":{"type":["string","null"]},"state":{"enum":["draft","approved"]},"language":{"type":["string","null"]},"soap_note":{"$ref":"#/components/schemas/PublicSoap"},"updated_at":{"type":"string"}}}}},"x-rate-limits":{"default_requests_per_minute":120,"scope":"per application","exceeded_response":"429 with a Retry-After header and a RATE_LIMITED error body"},"x-request-ids":{"response_header":"X-Request-ID","note":"Every response and every error body carries the same request id. Quote it in support requests."},"x-sdks":{"typescript":{"status":"available","runtime":"Node 18+","source":"https://gelypticmd.com/sdk/typescript/gelyptic-md.ts","readme":"https://gelypticmd.com/sdk/typescript/README.md"},"python":{"status":"available","runtime":"Python 3.10+","source":"https://gelypticmd.com/sdk/python/gelyptic_md.py","readme":"https://gelypticmd.com/sdk/python/README.md"}},"x-webhooks":{"signature_header":"x-scribemd-signature","signature_format":"t=<unix timestamp>,v1=<hex HMAC-SHA256 of `${timestamp}.${rawBody}`>","payload":{"id":"evt_...","type":"consultation.created","created_at":"2026-09-21T09:14:22Z","api_version":"v1","data":{"consultation_id":"…","external_consultation_id":"…","job_id":"…"}},"events":["consultation.created","consultation.processing","transcription.completed","transcription.failed","transcription.partial","soap.generated","quality_review.completed","consultation.completed","consultation.failed","clinical.note.created","clinical.note.updated","subscription.updated","payment.completed","academy.course.completed","academy.certificate.issued","early_warning.signal.created"],"planned_events":[],"note":"Payloads carry identifiers only. Clinical content is fetched afterwards through a scoped API call."},"x-scopes":{"clinical.read":"Read encounters and SOAP notes the application itself created.","clinical.write":"Create and update encounters owned by the application.","transcription.create":"Submit audio for transcription and SOAP drafting.","transcription.stream":"Open live transcription sessions and send audio chunks while the visit runs.","codes.read":"Search the ICD-10-CM reference list.","global_health.read":"Read aggregated, de-identified global health indicators. Never clinical records.","surveillance.read":"Read aggregated syndromic surveillance summaries.","early_warning.read":"Read aggregated early-warning status and trends.","academy.read":"Read the public Academy course catalogue.","billing.read":"Read the calling organisation's own subscription state.","consultations:create":"Create consultation records owned by the application.","consultations:read":"Read consultation metadata owned by the application.","consultations:update":"Update consultation records owned by the application.","audio:upload":"Upload consultation audio for transcription.","transcripts:read":"Read transcripts for the application's own consultations.","soap_notes:read":"Read SOAP drafts and approved notes for the application's own consultations.","clinical_summaries:read":"Read generated clinical summaries for the application's own consultations.","quality_reviews:read":"Read automated quality-review results.","patient_summaries:read":"Read de-identified patient-facing summaries the application generated.","coding_suggestions:read":"Read suggested billing codes for the application's own consultations.","webhooks:manage":"Register and remove webhook endpoints for the application."},"paths":{"/api/public/v1/health":{"get":{"summary":"Service status and API version.","description":"Service status and API version.","operationId":"get_health","tags":["health"],"security":[],"x-status":"live","x-required-scope":null,"parameters":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/clinical/encounters":{"get":{"summary":"List encounters created by the calling application.","description":"List encounters created by the calling application.","operationId":"get_clinical_encounters","tags":["clinical"],"security":[{"bearerAuth":["clinical.read"]}],"x-status":"live","x-required-scope":"clinical.read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}},"post":{"summary":"Create an encounter using opaque partner-side references only.","description":"Create an encounter using opaque partner-side references only.","operationId":"post_clinical_encounters","tags":["clinical"],"security":[{"bearerAuth":["clinical.write"]}],"x-status":"live","x-required-scope":"clinical.write","parameters":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/clinical/notes":{"get":{"summary":"List SOAP notes for the application's own encounters.","description":"List SOAP notes for the application's own encounters. SOAP includes transient, bounded LOINC order candidates. Existing saved data and webhook payloads remain unchanged; responses use Cache-Control: private, no-store.","operationId":"get_clinical_notes","tags":["clinical"],"security":[{"bearerAuth":["clinical.read"]}],"x-status":"live","x-required-scope":"clinical.read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"SOAP note with response-only LOINC candidates.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PublicNote"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/clinical/notes/{id}":{"get":{"summary":"Retrieve one SOAP note by encounter id.","description":"Retrieve one SOAP note by encounter id. SOAP includes transient, bounded LOINC order candidates. Existing saved data and webhook payloads remain unchanged; responses use Cache-Control: private, no-store.","operationId":"get_clinical_notes_id","tags":["clinical"],"security":[{"bearerAuth":["clinical.read"]}],"x-status":"live","x-required-scope":"clinical.read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"SOAP note with response-only LOINC candidates.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicNote"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/clinical/notes/{id}/fhir":{"get":{"summary":"Export a clinician-approved note as a FHIR R4 collection Bundle.","description":"Export a clinician-approved note as a FHIR R4 collection Bundle.","operationId":"get_clinical_notes_id_fhir","tags":["clinical"],"security":[{"bearerAuth":["clinical.read"]}],"x-status":"live","x-required-scope":"clinical.read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Clinician-approved FHIR R4 collection Bundle. Opaque identifiers only.","content":{"application/fhir+json":{"schema":{"type":"object","required":["resourceType","type","entry"],"properties":{"resourceType":{"const":"Bundle"},"type":{"const":"collection"},"entry":{"type":"array","items":{"type":"object"}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/clinical/notes/{id}/hl7":{"get":{"summary":"Export a clinician-approved note as an HL7 v2.5.1 ORU R01 message.","description":"Export a clinician-approved note as an HL7 v2.5.1 ORU R01 message.","operationId":"get_clinical_notes_id_hl7","tags":["clinical"],"security":[{"bearerAuth":["clinical.read"]}],"x-status":"live","x-required-scope":"clinical.read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Clinician-approved HL7 v2.5.1 ORU R01 message. Opaque identifiers only.","content":{"application/hl7-v2":{"schema":{"type":"string"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/transcription":{"post":{"summary":"Submit encounter audio for transcription and SOAP drafting.","description":"Submit encounter audio for transcription and SOAP drafting.","operationId":"post_transcription","tags":["transcription"],"security":[{"bearerAuth":["transcription.create"]}],"x-status":"live","x-required-scope":"transcription.create","parameters":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/soap":{"post":{"summary":"One-call SOAP intake: submit a transcript or encounter audio and receive the note, ICD-10 candidates, WHO/IMCI triage and NHIS billing items.","description":"One-call SOAP intake: submit a transcript or encounter audio and receive the note, ICD-10 candidates, WHO/IMCI triage and NHIS billing items.","operationId":"post_soap","tags":["soap"],"security":[{"bearerAuth":["transcription.create"]}],"x-status":"live","x-required-scope":"transcription.create","parameters":[],"responses":{"202":{"description":"Accepted. The job is queued; the SOAP note, ICD-10 candidates, WHO/IMCI triage and NHIS billing items are delivered on the signed soap.generated webhook, or pollable via GET /jobs/{job_id}.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/academy/courses":{"get":{"summary":"Public Academy course catalogue.","description":"Public Academy course catalogue.","operationId":"get_academy_courses","tags":["academy"],"security":[{"bearerAuth":["academy.read"]}],"x-status":"live","x-required-scope":"academy.read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/academy/courses/{slug}":{"get":{"summary":"One Academy course with its module outline.","description":"One Academy course with its module outline.","operationId":"get_academy_courses_slug","tags":["academy"],"security":[{"bearerAuth":["academy.read"]}],"x-status":"live","x-required-scope":"academy.read","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/global-health/signals":{"get":{"summary":"Aggregated, de-identified syndromic signal counts.","description":"Aggregated, de-identified syndromic signal counts.","operationId":"get_global_health_signals","tags":["global-health"],"security":[{"bearerAuth":["global_health.read"]}],"x-status":"live","x-required-scope":"global_health.read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/global-health/surveillance":{"get":{"summary":"Aggregated surveillance series.","description":"Aggregated surveillance series.","operationId":"get_global_health_surveillance","tags":["global-health"],"security":[{"bearerAuth":["surveillance.read"]}],"x-status":"live","x-required-scope":"surveillance.read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/early-warning/signals":{"get":{"summary":"Aggregated early-warning status and trends.","description":"Aggregated early-warning status and trends.","operationId":"get_early_warning_signals","tags":["early-warning"],"security":[{"bearerAuth":["early_warning.read"]}],"x-status":"live","x-required-scope":"early_warning.read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/academy/certificates/{certificateId}":{"get":{"summary":"Verify an Academy credential.","description":"Verify an Academy credential.","operationId":"get_academy_certificates_certificateId","tags":["academy"],"security":[{"bearerAuth":["academy.read"]}],"x-status":"live","x-required-scope":"academy.read","parameters":[{"name":"certificateId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/billing/subscription":{"get":{"summary":"The calling organisation's subscription state.","description":"The calling organisation's subscription state.","operationId":"get_billing_subscription","tags":["billing"],"security":[{"bearerAuth":["billing.read"]}],"x-status":"live","x-required-scope":"billing.read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/stream/sessions":{"post":{"summary":"Open a live transcription session for an encounter.","description":"Open a live transcription session for an encounter.","operationId":"post_stream_sessions","tags":["stream"],"security":[{"bearerAuth":["transcription.stream"]}],"x-status":"live","x-required-scope":"transcription.stream","parameters":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/stream/sessions/{sessionId}/chunks":{"post":{"summary":"Send one numbered audio chunk; returns its text and the running transcript.","description":"Send one numbered audio chunk; returns its text and the running transcript.","operationId":"post_stream_sessions_sessionId_chunks","tags":["stream"],"security":[{"bearerAuth":["transcription.stream"]}],"x-status":"live","x-required-scope":"transcription.stream","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/stream/sessions/{sessionId}":{"get":{"summary":"Running transcript and any missing chunk numbers.","description":"Running transcript and any missing chunk numbers.","operationId":"get_stream_sessions_sessionId","tags":["stream"],"security":[{"bearerAuth":["transcription.stream"]}],"x-status":"live","x-required-scope":"transcription.stream","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/stream/sessions/{sessionId}/finalize":{"post":{"summary":"Close the session and queue note drafting.","description":"Close the session and queue note drafting.","operationId":"post_stream_sessions_sessionId_finalize","tags":["stream"],"security":[{"bearerAuth":["transcription.stream"]}],"x-status":"live","x-required-scope":"transcription.stream","parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/codes/icd10":{"get":{"summary":"Search ICD-10-CM codes by description.","description":"Search ICD-10-CM codes by description.","operationId":"get_codes_icd10","tags":["codes"],"security":[{"bearerAuth":["codes.read"]}],"x-status":"live","x-required-scope":"codes.read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}},"/api/public/v1/specialties":{"get":{"summary":"List specialty documentation engines (behavioral health, refugee health, PT/OT and core specialties).","description":"List specialty documentation engines (behavioral health, refugee health, PT/OT and core specialties).","operationId":"get_specialties","tags":["specialties"],"security":[{"bearerAuth":["consultations:read"]}],"x-status":"live","x-required-scope":"consultations:read","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object"}},"pagination":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"maximum":100},"offset":{"type":"integer","minimum":0},"count":{"type":"integer"},"total":{"type":["integer","null"]},"has_more":{"type":"boolean"}}}}}}}},"400":{"description":"Validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, revoked or expired credentials."},"403":{"description":"The credential does not carry the required scope."},"404":{"description":"Resource not found, or not owned by the calling application."},"409":{"description":"The clinical note exists but has not been approved by a clinician."},"429":{"description":"Rate limit exceeded. Includes a `Retry-After` header.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Unexpected failure. Never contains internal details."}}}}}}