openapi: 3.0.3 info: title: Ambra Health (InteleShare) v3 Services Public API description: >- OpenAPI description of the Ambra Health / InteleShare v3 Services Public API (historically the DICOM Grid API). Ambra Health is a cloud-based medical image management, exchange, and interoperability platform, now part of Intelerad Medical Systems. The API is JSON over HTTPS and is authenticated with a session id (sid) obtained from POST /session/login; the sid is then supplied on subsequent requests as a parameter or via the X-AmbraHealth-SID header. Endpoint paths, HTTP verbs, and the sid/bundle mechanics are grounded in the public v3 API reference at https://access.dicomgrid.com/api/v3/api.html and the open-source Python SDK (github.com/dicomgrid/sdk-python). Request and response bodies below are HONESTLY MODELED representative schemas: the public reference documents commands and parameters but does not publish per-field JSON Schemas, so the schemas here are illustrative of shape rather than an exhaustive contract. Operations grounded directly in the reference are marked x-endpoint-status = confirmed; illustrative body schemas are marked x-schema-status = modeled. version: v3 contact: name: Ambra Health / Intelerad url: https://ambrahealth.com/platform/developer-tools/apis/ license: name: Proprietary - Ambra Health / Intelerad url: https://ambrahealth.com servers: - url: https://access.dicomgrid.com/api/v3 description: Ambra Health / DICOM Grid production API (access.ambrahealth.com is an alias) tags: - name: Session description: Authentication, session, OAuth, and permissions - name: Studies description: DICOM study lifecycle, routing, download, and audit - name: Patients description: Patient records and merges - name: Users description: User administration and tokens - name: Groups description: User groups - name: Accounts description: Account (tenant) administration - name: Namespaces description: Namespace permissions, settings, and audit - name: Sharing description: Study and filter sharing / image exchange - name: Storage & Images description: DICOM data, storage, and annotations - name: Webhooks description: Event webhooks paths: /session/login: post: operationId: sessionLogin tags: [Session] summary: Log in and obtain a session id (sid) description: Authenticate with credentials to obtain a session id (sid) used to authorize subsequent calls. x-endpoint-status: confirmed requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/LoginRequest' responses: '200': description: Session established content: application/json: schema: $ref: '#/components/schemas/Session' '401': $ref: '#/components/responses/Error' /session/user: get: operationId: sessionUser tags: [Session] summary: Get the current session user x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' responses: '200': description: Current user content: application/json: schema: $ref: '#/components/schemas/User' '401': $ref: '#/components/responses/Error' /session/permissions: get: operationId: sessionPermissions tags: [Session] summary: Get the user's permissions for an account x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - name: account_id in: query schema: { type: string } responses: '200': description: Permission map content: application/json: schema: type: object x-schema-status: modeled additionalProperties: true '401': $ref: '#/components/responses/Error' /session/logout: post: operationId: sessionLogout tags: [Session] summary: End the current session x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' responses: '200': $ref: '#/components/responses/Status' /session/oauth/start: post: operationId: sessionOauthStart tags: [Session] summary: Begin the OAuth flow x-endpoint-status: confirmed responses: '200': $ref: '#/components/responses/Status' /session/oauth: post: operationId: sessionOauth tags: [Session] summary: OAuth callback / token exchange x-endpoint-status: confirmed responses: '200': description: Session established via OAuth content: application/json: schema: $ref: '#/components/schemas/Session' /session/pin/generate: post: operationId: sessionPinGenerate tags: [Session] summary: Generate a PIN for PIN-based authentication x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' responses: '200': $ref: '#/components/responses/Status' /study/add: post: operationId: studyAdd tags: [Studies] summary: Add a study x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' requestBody: content: application/json: schema: $ref: '#/components/schemas/StudyWrite' responses: '200': $ref: '#/components/responses/StudyResponse' /study/list: get: operationId: studyList tags: [Studies] summary: List studies with filtering, sorting, and pagination description: >- Supports the filter.FIELD.CONDITION syntax (equals, like, gt, lt, in, ...), sort_by, and page.rows / page.number pagination documented in the reference. x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - name: namespace_id in: query schema: { type: string } - name: page.rows in: query schema: { type: integer, default: 25 } - name: page.number in: query schema: { type: integer, default: 1 } - name: sort_by in: query schema: { type: string } responses: '200': description: Page of studies content: application/json: schema: $ref: '#/components/schemas/StudyList' /study/get: get: operationId: studyGet tags: [Studies] summary: Get a study x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/StudyResponse' /study/set: post: operationId: studySet tags: [Studies] summary: Update study metadata x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' requestBody: content: application/json: schema: $ref: '#/components/schemas/StudyWrite' responses: '200': $ref: '#/components/responses/StudyResponse' /study/delete: post: operationId: studyDelete tags: [Studies] summary: Delete a study x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/Status' /study/share: post: operationId: studyShare tags: [Studies, Sharing] summary: Share a study with users, groups, or accounts x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' requestBody: content: application/json: schema: $ref: '#/components/schemas/ShareRequest' responses: '200': $ref: '#/components/responses/Status' /study/share/list: get: operationId: studyShareList tags: [Studies, Sharing] summary: List active shares on a study x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: Shares content: application/json: schema: type: array items: { $ref: '#/components/schemas/Share' } /study/share/stop: post: operationId: studyShareStop tags: [Studies, Sharing] summary: Revoke a study share x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' requestBody: content: application/json: schema: $ref: '#/components/schemas/ShareRequest' responses: '200': $ref: '#/components/responses/Status' /study/approve: post: operationId: studyApprove tags: [Studies] summary: Approve a pending study x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/Status' /study/reject: post: operationId: studyReject tags: [Studies] summary: Reject a study x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/Status' /study/push: post: operationId: studyPush tags: [Studies] summary: Push a study to an external destination x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: uuid: { type: string } destination_id: { type: string } responses: '200': $ref: '#/components/responses/Status' /study/download: post: operationId: studyDownload tags: [Studies] summary: Download / export study files x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } - name: bundle in: query schema: { type: string, enum: [dicom, iso, zip] } responses: '200': description: Study export content: application/octet-stream: schema: { type: string, format: binary } /study/audit: get: operationId: studyAudit tags: [Studies] summary: Get a study's audit trail x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: Audit entries content: application/json: schema: type: array items: { $ref: '#/components/schemas/AuditEntry' } /study/comment/add: post: operationId: studyCommentAdd tags: [Studies] summary: Add a comment to a study x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: uuid: { type: string } comment: { type: string } responses: '200': $ref: '#/components/responses/Status' /patient/add: post: operationId: patientAdd tags: [Patients] summary: Add a patient x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/Patient' } responses: '200': $ref: '#/components/responses/PatientResponse' /patient/get: get: operationId: patientGet tags: [Patients] summary: Get a patient x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/PatientResponse' /patient/set: post: operationId: patientSet tags: [Patients] summary: Update a patient x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/Patient' } responses: '200': $ref: '#/components/responses/PatientResponse' /patient/delete: post: operationId: patientDelete tags: [Patients] summary: Delete a patient x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/Status' /patient/list: get: operationId: patientList tags: [Patients] summary: List patients x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - name: namespace_id in: query schema: { type: string } responses: '200': description: Patients content: application/json: schema: type: array items: { $ref: '#/components/schemas/Patient' } /patient/study/list: get: operationId: patientStudyList tags: [Patients] summary: List a patient's studies x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: Studies for the patient content: application/json: schema: { $ref: '#/components/schemas/StudyList' } /patient/merge: post: operationId: patientMerge tags: [Patients] summary: Merge duplicate patient records x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: uuid: { type: string, description: Surviving patient } merge_uuid: { type: string, description: Patient merged in } responses: '200': $ref: '#/components/responses/Status' /user/add: post: operationId: userAdd tags: [Users] summary: Add a user x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/User' } responses: '200': $ref: '#/components/responses/UserResponse' /user/get: get: operationId: userGet tags: [Users] summary: Get a user x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/UserResponse' /user/set: post: operationId: userSet tags: [Users] summary: Update a user x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/User' } responses: '200': $ref: '#/components/responses/UserResponse' /user/delete: post: operationId: userDelete tags: [Users] summary: Delete a user x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/Status' /user/invite: post: operationId: userInvite tags: [Users] summary: Invite a user to an account x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: email: { type: string, format: email } account_id: { type: string } role: { type: string } responses: '200': $ref: '#/components/responses/Status' /user/namespace/list: get: operationId: userNamespaceList tags: [Users] summary: List the namespaces a user can access x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, schema: { type: string } } responses: '200': description: Namespaces content: application/json: schema: type: array items: { $ref: '#/components/schemas/Namespace' } /user/token: post: operationId: userToken tags: [Users] summary: Manage a user's API tokens x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] responses: '200': $ref: '#/components/responses/Status' /group/list: get: operationId: groupList tags: [Groups] summary: List groups x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: account_id, in: query, schema: { type: string } } responses: '200': description: Groups content: application/json: schema: type: array items: { $ref: '#/components/schemas/Group' } /group/add: post: operationId: groupAdd tags: [Groups] summary: Create a group x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/Group' } responses: '200': $ref: '#/components/responses/GroupResponse' /group/set: post: operationId: groupSet tags: [Groups] summary: Update a group x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/Group' } responses: '200': $ref: '#/components/responses/GroupResponse' /group/delete: post: operationId: groupDelete tags: [Groups] summary: Delete a group x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/Status' /group/user/add: post: operationId: groupUserAdd tags: [Groups] summary: Add a user to a group x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: uuid: { type: string, description: Group uuid } user_id: { type: string } responses: '200': $ref: '#/components/responses/Status' /account/list: get: operationId: accountList tags: [Accounts] summary: List accounts x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] responses: '200': description: Accounts content: application/json: schema: type: array items: { $ref: '#/components/schemas/Account' } /account/get: get: operationId: accountGet tags: [Accounts] summary: Get an account x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/AccountResponse' /account/set: post: operationId: accountSet tags: [Accounts] summary: Update account settings x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/Account' } responses: '200': $ref: '#/components/responses/AccountResponse' /account/user/add: post: operationId: accountUserAdd tags: [Accounts] summary: Add a user to an account x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: uuid: { type: string, description: Account uuid } user_id: { type: string } role: { type: string } responses: '200': $ref: '#/components/responses/Status' /account/user/list: get: operationId: accountUserList tags: [Accounts] summary: List users in an account x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: Users content: application/json: schema: type: array items: { $ref: '#/components/schemas/User' } /account/user/delete: post: operationId: accountUserDelete tags: [Accounts] summary: Remove a user from an account x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: uuid: { type: string } user_id: { type: string } responses: '200': $ref: '#/components/responses/Status' /namespace/permissions: get: operationId: namespacePermissions tags: [Namespaces] summary: Get namespace permissions x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: Permission map content: application/json: schema: { type: object, x-schema-status: modeled, additionalProperties: true } /namespace/settings: get: operationId: namespaceSettings tags: [Namespaces] summary: Get namespace settings x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: Settings content: application/json: schema: { type: object, x-schema-status: modeled, additionalProperties: true } /namespace/info: get: operationId: namespaceInfo tags: [Namespaces] summary: Get namespace info x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: Namespace content: application/json: schema: { $ref: '#/components/schemas/Namespace' } /namespace/audit: get: operationId: namespaceAudit tags: [Namespaces] summary: Get the namespace audit log x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: Audit entries content: application/json: schema: type: array items: { $ref: '#/components/schemas/AuditEntry' } /filter/share: post: operationId: filterShare tags: [Sharing] summary: Share a saved filter x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: filter_id: { type: string } target_id: { type: string } responses: '200': $ref: '#/components/responses/Status' /study/dicomdata/load: post: operationId: studyDicomdataLoad tags: [Storage & Images] summary: Load DICOM metadata for a study x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: type: object x-schema-status: modeled properties: uuid: { type: string } responses: '200': description: DICOM metadata content: application/json: schema: { type: object, x-schema-status: modeled, additionalProperties: true } /dicomdata/list: get: operationId: dicomdataList tags: [Storage & Images] summary: List DICOM data x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: study_id, in: query, schema: { type: string } } responses: '200': description: DICOM data entries content: application/json: schema: { type: array, items: { type: object, additionalProperties: true } } /dicomdata/get: get: operationId: dicomdataGet tags: [Storage & Images] summary: Get a DICOM data element x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': description: DICOM data content: application/json: schema: { type: object, x-schema-status: modeled, additionalProperties: true } /annotation/add: post: operationId: annotationAdd tags: [Storage & Images] summary: Add a frame-level image annotation x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/Annotation' } responses: '200': $ref: '#/components/responses/Status' /annotation/list: get: operationId: annotationList tags: [Storage & Images] summary: List annotations x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: study_id, in: query, schema: { type: string } } responses: '200': description: Annotations content: application/json: schema: type: array items: { $ref: '#/components/schemas/Annotation' } /webhook/list: get: operationId: webhookList tags: [Webhooks] summary: List webhooks x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: namespace_id, in: query, schema: { type: string } } responses: '200': description: Webhooks content: application/json: schema: type: array items: { $ref: '#/components/schemas/Webhook' } /webhook/add: post: operationId: webhookAdd tags: [Webhooks] summary: Create a webhook x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/Webhook' } responses: '200': $ref: '#/components/responses/WebhookResponse' /webhook/set: post: operationId: webhookSet tags: [Webhooks] summary: Update a webhook x-endpoint-status: confirmed parameters: [ { $ref: '#/components/parameters/Sid' } ] requestBody: content: application/json: schema: { $ref: '#/components/schemas/Webhook' } responses: '200': $ref: '#/components/responses/WebhookResponse' /webhook/delete: post: operationId: webhookDelete tags: [Webhooks] summary: Delete a webhook x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, required: true, schema: { type: string } } responses: '200': $ref: '#/components/responses/Status' /webhook/event: get: operationId: webhookEvent tags: [Webhooks] summary: Inspect webhook events description: >- The reference confirms a webhook/event command but does not enumerate the available event types; the event catalog below is honestly modeled from common Ambra study lifecycle activity. x-endpoint-status: confirmed parameters: - $ref: '#/components/parameters/Sid' - { name: uuid, in: query, schema: { type: string } } responses: '200': description: Webhook event(s) content: application/json: schema: { $ref: '#/components/schemas/WebhookEvent' } /bundle: post: operationId: bundle tags: [Session] summary: Execute multiple API calls in a single request description: >- POST a JSON array of hashes, each with a URL key plus parameters. Calls are processed sequentially and results returned in matching order. The inherit_sid flag plus the X-AmbraHealth-SID header let bundled calls share one session. x-endpoint-status: confirmed requestBody: content: application/json: schema: type: array items: type: object properties: URL: { type: string } additionalProperties: true responses: '200': description: Ordered array of results content: application/json: schema: { type: array, items: { type: object, additionalProperties: true } } components: parameters: Sid: name: sid in: query required: true description: Session id from POST /session/login. May also be sent via the X-AmbraHealth-SID header. schema: { type: string } responses: Error: description: Error - the API returns an HTTP error code plus a JSON error structure content: application/json: schema: { $ref: '#/components/schemas/Error' } Status: description: Status result content: application/json: schema: { $ref: '#/components/schemas/Status' } StudyResponse: description: A study content: application/json: schema: { $ref: '#/components/schemas/Study' } PatientResponse: description: A patient content: application/json: schema: { $ref: '#/components/schemas/Patient' } UserResponse: description: A user content: application/json: schema: { $ref: '#/components/schemas/User' } GroupResponse: description: A group content: application/json: schema: { $ref: '#/components/schemas/Group' } AccountResponse: description: An account content: application/json: schema: { $ref: '#/components/schemas/Account' } WebhookResponse: description: A webhook content: application/json: schema: { $ref: '#/components/schemas/Webhook' } securitySchemes: sessionId: type: apiKey in: header name: X-AmbraHealth-SID description: Session id (sid) obtained from POST /session/login. Also accepted as the sid request parameter. schemas: LoginRequest: type: object x-schema-status: modeled required: [login, password] properties: login: { type: string, description: Username or email } password: { type: string, format: password } account_login: { type: string } Session: type: object x-schema-status: modeled properties: sid: { type: string, description: Session id used to authorize subsequent calls } status: { type: string, example: OK } user_id: { type: string } Status: type: object properties: status: { type: string, example: OK } Error: type: object properties: status: { type: string, example: ERROR } error_type: { type: string } error_subtype: { type: string } message: { type: string } Study: type: object x-schema-status: modeled properties: uuid: { type: string } study_uid: { type: string, description: DICOM StudyInstanceUID } patient_name: { type: string } patientid: { type: string } modality: { type: string, example: CT } study_date: { type: string } study_description: { type: string } namespace_id: { type: string } phi_namespace: { type: string } created: { type: string, format: date-time } StudyWrite: type: object x-schema-status: modeled properties: uuid: { type: string, description: Present on update } namespace_id: { type: string } study_description: { type: string } modality: { type: string } StudyList: type: object x-schema-status: modeled properties: page: type: object properties: number: { type: integer } rows: { type: integer } total: { type: integer } studies: type: array items: { $ref: '#/components/schemas/Study' } Patient: type: object x-schema-status: modeled properties: uuid: { type: string } name: { type: string } patientid: { type: string, description: MRN / patient identifier } birth_date: { type: string } sex: { type: string, enum: [M, F, O, U] } namespace_id: { type: string } User: type: object x-schema-status: modeled properties: uuid: { type: string } email: { type: string, format: email } name: { type: string } first: { type: string } last: { type: string } role: { type: string } Group: type: object x-schema-status: modeled properties: uuid: { type: string } name: { type: string } account_id: { type: string } namespace_id: { type: string } Account: type: object x-schema-status: modeled properties: uuid: { type: string } name: { type: string } namespace_id: { type: string } settings: { type: object, additionalProperties: true } Namespace: type: object x-schema-status: modeled properties: uuid: { type: string } name: { type: string } type: { type: string, enum: [Account, Group], description: Namespaces are accounts or groups } Share: type: object x-schema-status: modeled properties: uuid: { type: string } study_id: { type: string } target_type: { type: string, enum: [user, group, account] } target_id: { type: string } created: { type: string, format: date-time } ShareRequest: type: object x-schema-status: modeled required: [uuid] properties: uuid: { type: string, description: Study uuid } account_id: { type: string } group_id: { type: string } user_id: { type: string } email: { type: string, format: email } message: { type: string } Annotation: type: object x-schema-status: modeled properties: uuid: { type: string } study_id: { type: string } image_id: { type: string } frame: { type: integer } data: { type: object, additionalProperties: true } AuditEntry: type: object x-schema-status: modeled properties: uuid: { type: string } action: { type: string } user_id: { type: string } created: { type: string, format: date-time } detail: { type: object, additionalProperties: true } Webhook: type: object x-schema-status: modeled properties: uuid: { type: string } namespace_id: { type: string } url: { type: string, format: uri, description: Endpoint Ambra POSTs events to } event: { type: string, description: Event the webhook fires on } enabled: { type: boolean } WebhookEvent: type: object x-schema-status: modeled description: >- Honestly modeled - the reference confirms webhook/event but does not publish the event catalog. Representative event names below. properties: uuid: { type: string } event: type: string example: study.arrived enum: - study.arrived - study.updated - study.shared - study.approved - study.rejected - study.deleted namespace_id: { type: string } study_id: { type: string } occurred: { type: string, format: date-time } security: - sessionId: []