Skip to content
Get started

Webhooks

Unwrap
client.webhooks.unwrap(RequestOptionsoptions?): void
Function
Unsafe Unwrap
client.webhooks.unsafeUnwrap(RequestOptionsoptions?): void
Function
ModelsExpand Collapse
ClinicalContextEnrichmentDocument { content, fileName }

Inline text document for clinical history synthesize

content: Array<string>

Text chunks for the document

fileName: string
minLength1
maxLength500
ClinicalContextEnrichmentDocumentURL { url, fileName }

Remote document URL (https) for Avara to fetch/summarize

url: string

Must use https://

formaturi
fileName?: string
minLength1
maxLength500
ClinicalContextEnrichmentPriorReport { reportText, externalStudyId, modality, 2 more }

External prior report metadata and text for clinical context

reportText: string

Full prior report text

maxLength50000
externalStudyId?: string
maxLength256
modality?: string
maxLength100
studyDate?: string

YYYY-MM-DD

studyDescription?: string
maxLength1000
ClinicalContextEnrichmentRequestedEvent { id, data, type }

Soft synchronous webhook sent when AutoScribe needs clinical context from the partner EHR. Failures / timeouts / invalid bodies are treated as empty enrichment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ClinicalContextEnrichmentRequestedEventData { clinicId, studyId, studyInstanceUid, 2 more }

Event payload for soft clinical context enrichment when AutoScribe needs EHR context for a study

clinicId: string

Clinic UUID

formatuuid
studyId: string

Raw study UUID v4 (not branded stu_…)

formatuuid
studyInstanceUid: string

DICOM Study Instance UID

externalPatientId?: string

External patient identifier when available

mrn?: string

Medical record number when available

type: "clinical_context.enrichment_requested"

Event type identifier

ClinicalContextEnrichmentRequestedEventData { clinicId, studyId, studyInstanceUid, 2 more }

Event payload for soft clinical context enrichment when AutoScribe needs EHR context for a study

clinicId: string

Clinic UUID

formatuuid
studyId: string

Raw study UUID v4 (not branded stu_…)

formatuuid
studyInstanceUid: string

DICOM Study Instance UID

externalPatientId?: string

External patient identifier when available

mrn?: string

Medical record number when available

ClinicalContextEnrichmentRequestedResponse { clinicalIndication, documents, documentUrls, 3 more }

Soft enrichment response. No authorized field — return any subset of fields (including {}).

clinicalIndication?: string
documents?: Array<ClinicalContextEnrichmentDocument { content, fileName } >
content: Array<string>

Text chunks for the document

fileName: string
minLength1
maxLength500
documentUrls?: Array<ClinicalContextEnrichmentDocumentURL { url, fileName } >
url: string

Must use https://

formaturi
fileName?: string
minLength1
maxLength500
priorReports?: Array<ClinicalContextEnrichmentPriorReport { reportText, externalStudyId, modality, 2 more } >
reportText: string

Full prior report text

maxLength50000
externalStudyId?: string
maxLength256
modality?: string
maxLength100
studyDate?: string

YYYY-MM-DD

studyDescription?: string
maxLength1000
technologistNotes?: Array<string>
technologistTechnique?: string
EphemeralAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned URLs for an ephemeral viewer session. This is a synchronous webhook — you must respond with the URLs within the request timeout. There is no Avara study; use retrievalId (and optional options) to resolve images.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: EphemeralAccessRequestedEventData { retrievalId, options }

Event payload for an ephemeral viewer session. retrievalId is the customer handle from mint. options is echoed verbatim when present; Avara does not read or edit it.

retrievalId: string

Opaque customer handle for this view session. Not an Avara study ID.

minLength1
options?: Record<string, unknown>

Optional JSON object echoed verbatim from mint. Avara does not read or edit it. Examples: studyInstanceUids or internal ids for multi-study reads. Not for URLs or manifests.

type: "ephemeral.access_requested"

Event type identifier

EphemeralAccessRequestedEventData { retrievalId, options }

Event payload for an ephemeral viewer session. retrievalId is the customer handle from mint. options is echoed verbatim when present; Avara does not read or edit it.

retrievalId: string

Opaque customer handle for this view session. Not an Avara study ID.

minLength1
options?: Record<string, unknown>

Optional JSON object echoed verbatim from mint. Avara does not read or edit it. Examples: studyInstanceUids or internal ids for multi-study reads. Not for URLs or manifests.

EphemeralAccessRequestedResponse { authorized, urls, error, 2 more }

Synchronous response with presigned DICOM URLs and optionally non-DICOM media. Optionally include a manifests array (one study per item) to improve progressive loading of legacy DICOM; it is not required.

authorized: boolean

Whether access is authorized for this ephemeral session

urls: Array<string>

Flat list of presigned URLs for DICOM images across the session.

error?: string

Error message if authorization failed or URLs cannot be provided

manifests?: Array<StudyAccessRequestedManifest { series, studyInstanceUID } >

Optional sidecars, one study per item (an array, not a single object). Not required — omit if you do not have them. Recommended when you can provide them, especially for very large or multi-study legacy DICOM. Enables progressive loading so readers can scroll before every file is parsed. Invalid or incomplete values are ignored; URLs still load.

series: Array<StudyAccessRequestedManifestSeries { modality, seriesDescription, seriesInstanceUID, 2 more } >

Planable series in this study. At least one must survive validation.

modality: string

Non-empty DICOM modality. Common: CT, MR, CR, DX, US, XA, PT, NM, MG. Secondary capture (SC) is not necessary.

seriesDescription: string

Non-empty display string shown in the viewer sidebar.

seriesInstanceUID: string

DICOM Series Instance UID. Non-empty string.

seriesNumber: string | number

Series number. String or number (1 or “1”).

One of the following:
string
number
sops: Array<StudyAccessRequestedManifestSop { sopClassUID, sopInstanceUID, bitsAllocated, 13 more } >

SOPs in this series. At least one must survive validation.

sopClassUID: string

DICOM SOP Class UID. Progressive load uses legacy single-frame image classes. Common: CT 1.2.840.10008.5.1.4.1.1.2, MR 1.2.840.10008.5.1.4.1.1.4, plus CR / DX / US / XA / PT. Enhanced multi-frame classes already load progressively from the single SOP — the sidecar is not used for them. SR / PR / KO do not need geometry.

sopInstanceUID: string

DICOM SOP Instance UID. Non-empty string.

bitsAllocated?: number

Required on image SOPs. Planner uses 8, 16, or 32 (or the float flags). Typical CT/MR: 16.

bitsStored?: number

Optional. Typical CT/MR: 12 or 16.

columns?: number

Image columns. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

highBit?: number

Optional. Typical 16-bit: 15.

instanceNumber?: number

Slice order (DICOM Instance Number). Omit or 0 if unknown; UID is the tie-break.

isDoubleFloatPixelData?: boolean

Set true only if pixel data is 64-bit float.

isFloatPixelData?: boolean

Set true only if pixel data is 32-bit float.

numberOfFrames?: number

1 for single-frame files. Greater than 1 only if this SOP is multi-frame.

photometricInterpretation?: string

Required non-empty string on image SOPs. Common: MONOCHROME2 (CT/MR), MONOCHROME1 (often MG, inverted), RGB, PALETTE COLOR, YBR_FULL, YBR_FULL_422. Unknown strings are kept and treated as mono unless samplesPerPixel is 3. Wrong type (number/null) drops that SOP from optimized path.

pixelRepresentation?: number

0 unsigned, 1 signed. Typical CT: 0.

rescaleIntercept?: number

Optional. Typical CT: -1024. Safe to omit.

rescaleSlope?: number

Optional. Typical CT: 1. Safe to omit.

rows?: number

Image rows. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

samplesPerPixel?: number

Required on image SOPs. 1 grayscale, 3 color. 3 is treated as color even if photometric is unusual.

studyInstanceUID: string

DICOM Study Instance UID for this study. Non-empty string. Must match the study being requested.

mediaUrls?: Array<StudyAccessRequestedMediaURL { mimeType, url, fileName } >

Optional presigned URLs for non-DICOM media (images, PDFs, videos).

mimeType: string

MIME type of the media file (e.g., application/pdf, image/jpeg, video/mp4)

url: string

Presigned URL to download the media file

formaturi
fileName?: string

Optional display name for the media file

ModalityWorklistItem { AccessionNumber, Modality, PatientBirthDate, 10 more }

One worklist item shaped for direct DICOM Dataset construction on the on-prem box. Field names are PascalCase DICOM-style intentionally.

AccessionNumber: string

Accession number (DICOM SH, max 16)

maxLength16
Modality: string
PatientBirthDate: string

Patient birth date (DICOM DA: YYYYMMDD)

PatientID: string
PatientName: string

DICOM PN / HL7 format: LAST^FIRST[^MIDDLE^PREFIX^SUFFIX]

maxLength64
PatientSex: string

DICOM PatientSex: M, F, or O

PatientSize: string

Height in meters. Empty string allowed; if set must be numeric (typical range 0.4–2.5).

PatientWeight: string

Weight in kilograms. Empty string allowed; if set must be numeric (typical range 1–400).

ProtocolName: string
RequestedProcedureDescription: string
ScheduledProcedureStepSequence: Array<ModalityWorklistScheduledStep { Modality, ScheduledProcedureStepDescription, ScheduledProcedureStepID, 2 more } >

Scheduled procedure steps for this worklist item. Most appointments/studies have a single step; include additional steps only when the RIS schedules multiple.

Modality: string

Modality for this scheduled step

ScheduledProcedureStepDescription: string

Human-readable description of the scheduled step

ScheduledProcedureStepID: string

Scheduled procedure step identifier (DICOM SH, max 16)

maxLength16
ScheduledProcedureStepStartDate: string

Scheduled start date (DICOM DA: YYYYMMDD)

ScheduledProcedureStepStartTime: string

Scheduled start time (DICOM TM: HHMMSS)

StudyDescription: string
StudyInstanceUID: string

Required from partner RIS today; do not omit.

ModalityWorklistRequestedEvent { id, data, type }

Webhook event sent when an on-prem modality issues a C-FIND MWL. This is a synchronous webhook - you must respond with authorized + items within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ModalityWorklistRequestedEventData { callingAe, clinicId, dateEnd, 3 more }

Event payload for a modality worklist (C-FIND MWL) request

callingAe: string

Calling AE title from the modality

clinicId: string

Clinic UUID that owns the modality / worklist query

formatuuid
dateEnd: string

Inclusive worklist window end date (YYYY-MM-DD)

dateStart: string

Inclusive worklist window start date (YYYY-MM-DD)

sourceIp: string

Source IP observed by Avara for the modality request

modality?: string

Present when the modality C-FIND included a modality filter

type: "modality_worklist.requested"

Event type identifier

ModalityWorklistRequestedEventData { callingAe, clinicId, dateEnd, 3 more }

Event payload for a modality worklist (C-FIND MWL) request

callingAe: string

Calling AE title from the modality

clinicId: string

Clinic UUID that owns the modality / worklist query

formatuuid
dateEnd: string

Inclusive worklist window end date (YYYY-MM-DD)

dateStart: string

Inclusive worklist window start date (YYYY-MM-DD)

sourceIp: string

Source IP observed by Avara for the modality request

modality?: string

Present when the modality C-FIND included a modality filter

ModalityWorklistRequestedResponse { authorized, items, error }

Response expected by Avara for modality worklist webhook. authorized:false surfaces as worklist failure; authorized:true with empty items means no scheduled exams.

authorized: boolean

Whether the worklist query is authorized

items: Array<ModalityWorklistItem { AccessionNumber, Modality, PatientBirthDate, 10 more } >

Worklist items for the requested date window

AccessionNumber: string

Accession number (DICOM SH, max 16)

maxLength16
Modality: string
PatientBirthDate: string

Patient birth date (DICOM DA: YYYYMMDD)

PatientID: string
PatientName: string

DICOM PN / HL7 format: LAST^FIRST[^MIDDLE^PREFIX^SUFFIX]

maxLength64
PatientSex: string

DICOM PatientSex: M, F, or O

PatientSize: string

Height in meters. Empty string allowed; if set must be numeric (typical range 0.4–2.5).

PatientWeight: string

Weight in kilograms. Empty string allowed; if set must be numeric (typical range 1–400).

ProtocolName: string
RequestedProcedureDescription: string
ScheduledProcedureStepSequence: Array<ModalityWorklistScheduledStep { Modality, ScheduledProcedureStepDescription, ScheduledProcedureStepID, 2 more } >

Scheduled procedure steps for this worklist item. Most appointments/studies have a single step; include additional steps only when the RIS schedules multiple.

Modality: string

Modality for this scheduled step

ScheduledProcedureStepDescription: string

Human-readable description of the scheduled step

ScheduledProcedureStepID: string

Scheduled procedure step identifier (DICOM SH, max 16)

maxLength16
ScheduledProcedureStepStartDate: string

Scheduled start date (DICOM DA: YYYYMMDD)

ScheduledProcedureStepStartTime: string

Scheduled start time (DICOM TM: HHMMSS)

StudyDescription: string
StudyInstanceUID: string

Required from partner RIS today; do not omit.

error?: string

Error message if authorization failed

ModalityWorklistScheduledStep { Modality, ScheduledProcedureStepDescription, ScheduledProcedureStepID, 2 more }

Scheduled procedure step used to construct DICOM MWL datasets

Modality: string

Modality for this scheduled step

ScheduledProcedureStepDescription: string

Human-readable description of the scheduled step

ScheduledProcedureStepID: string

Scheduled procedure step identifier (DICOM SH, max 16)

maxLength16
ScheduledProcedureStepStartDate: string

Scheduled start date (DICOM DA: YYYYMMDD)

ScheduledProcedureStepStartTime: string

Scheduled start time (DICOM TM: HHMMSS)

PatientStudyEnrichmentRequestedEvent { id, data, type }

Soft synchronous webhook sent after Avara PACS seeds a study so the partner can enrich demographics and report headers. Failures / timeouts / invalid bodies are treated as empty enrichment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: PatientStudyEnrichmentRequestedEventData { clinicId, studyInstanceUid, accessionNumber, patientId }

Event payload for soft patient/study enrichment after Avara PACS seeds a study

clinicId: string

Clinic UUID

formatuuid
studyInstanceUid: string

DICOM Study Instance UID

accessionNumber?: string

Accession number from DICOM when available

patientId?: string

Patient ID from DICOM when available

type: "patient_study.enrichment_requested"

Event type identifier

PatientStudyEnrichmentRequestedEventData { clinicId, studyInstanceUid, accessionNumber, patientId }

Event payload for soft patient/study enrichment after Avara PACS seeds a study

clinicId: string

Clinic UUID

formatuuid
studyInstanceUid: string

DICOM Study Instance UID

accessionNumber?: string

Accession number from DICOM when available

patientId?: string

Patient ID from DICOM when available

PatientStudyEnrichmentRequestedResponse { dateOfBirth, expressCustomerId, externalPatientId, 12 more }

Soft enrichment response. No authorized field — return any subset of fields (including {}). Avara merges per-field with DICOM light metadata then defaults. Optional expressCustomerId: if present and a valid cus_ id for this clinic, Avara sets it on the created study. If present but not usable, Avara ignores it, applies other fields, and logs a warning.

dateOfBirth?: string

YYYY-MM-DD

expressCustomerId?: string

Optional Express customer to attach to the created study. Format: cus_{32 hex chars}. Must belong to the clinic in the request. Omit to leave the study unscoped. If present but not usable, Avara ignores this field, applies any other enrichment fields, and logs a warning on the webhook event.

externalPatientId?: string
facilityName?: string
height?: Height { unit, value }
unit: "in" | "cm"
One of the following:
"in"
"cm"
value: number
minimum0
mrn?: string
patientName?: string
procedure?: string
referringPhysicianName?: string
severity?: "normal" | "high" | "stat"
One of the following:
"normal"
"high"
"stat"
sex?: "male" | "female" | "other"
One of the following:
"male"
"female"
"other"
studyDate?: string

YYYY-MM-DD

studyDescription?: string
studyTime?: string

HH:MM or HH:MM:SS[.fff]; Avara may truncate to HH:MM

weight?: Weight { unit, value }
unit: "lbs" | "kg"
One of the following:
"lbs"
"kg"
value: number
minimum0
ReportDeliveredEvent { id, data, type }

Webhook event sent when a report is completed. This is an asynchronous notification - respond with a simple acknowledgment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ReportDeliveredEventData { isCritical, presignedUrl, reportId, 4 more }

Event payload containing report and study information

isCritical: boolean

Whether the report was marked critical at sign-off.

presignedUrl: string

Presigned URL for PDF download. Time-limited, typically valid for 1 hour.

formaturi
reportId: string

Avara report ID. Format: rep_{32-hex-chars}

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID

externalPatientId?: string

External patient identifier when available

plainText?: string

Report plain text content (optional). Contains the full report text.

type: "report.delivered"

Event type identifier

ReportDeliveredEventData { isCritical, presignedUrl, reportId, 4 more }

Event payload containing report and study information

isCritical: boolean

Whether the report was marked critical at sign-off.

presignedUrl: string

Presigned URL for PDF download. Time-limited, typically valid for 1 hour.

formaturi
reportId: string

Avara report ID. Format: rep_{32-hex-chars}

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID

externalPatientId?: string

External patient identifier when available

plainText?: string

Report plain text content (optional). Contains the full report text.

ReportDeliveredResponse { success }

Response expected by Avara for report delivery webhook. Simple acknowledgment.

success: boolean

Acknowledgment of receipt. Return true to confirm delivery.

SecondaryCaptureAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned UPLOAD URLs for a secondary capture DICOM. This is a synchronous webhook - you must respond with the upload URLs within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: SecondaryCaptureAccessRequestedEventData { studyId, studyInstanceUid, seriesInstanceUid, sopInstanceUid }

Event payload containing study + (optional) series/SOP information for a secondary capture upload

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

seriesInstanceUid?: string

DICOM Series Instance UID generated for the new secondary capture series (when available).

sopInstanceUid?: string

DICOM SOP Instance UID generated for the new secondary capture object (when available).

type: "secondary_capture.access_requested"

Event type identifier

SecondaryCaptureAccessRequestedEventData { studyId, studyInstanceUid, seriesInstanceUid, sopInstanceUid }

Event payload containing study + (optional) series/SOP information for a secondary capture upload

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

seriesInstanceUid?: string

DICOM Series Instance UID generated for the new secondary capture series (when available).

sopInstanceUid?: string

DICOM SOP Instance UID generated for the new secondary capture object (when available).

SecondaryCaptureAccessRequestedResponse { authorized, uploadUrls, contentCreatorName, error }

Response expected by Avara for the secondary capture webhook. Provide presigned PUT URLs the viewer will upload the DICOM to.

authorized: boolean

Whether the secondary capture upload is authorized for this study

uploadUrls: Array<string>

Presigned PUT URLs for uploading the secondary capture DICOM. The viewer uploads the same object to every URL.

contentCreatorName?: string

Optional content creator name. Avara derives this server-side; this field is ignored if provided.

error?: string

Error message if authorization failed or upload URLs cannot be provided

StudyAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned URLs for DICOM images. This is a synchronous webhook - you must respond with the URLs within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: StudyAccessRequestedEventData { studyId, studyInstanceUid }

Event payload containing study information

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

type: "study.access_requested"

Event type identifier

StudyAccessRequestedEventData { studyId, studyInstanceUid }

Event payload containing study information

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

StudyAccessRequestedManifest { series, studyInstanceUID }

Optional sidecar for this one study (one object, not an array). Not required — omit if you do not have it. Recommended when you can provide it, especially for very large studies. Enables progressive loading of legacy multi-SOP DICOM so readers can scroll before every file is parsed. Include only this study. Series you cannot describe can be left out. Invalid or incomplete values are ignored; URLs still load.

series: Array<StudyAccessRequestedManifestSeries { modality, seriesDescription, seriesInstanceUID, 2 more } >

Planable series in this study. At least one must survive validation.

modality: string

Non-empty DICOM modality. Common: CT, MR, CR, DX, US, XA, PT, NM, MG. Secondary capture (SC) is not necessary.

seriesDescription: string

Non-empty display string shown in the viewer sidebar.

seriesInstanceUID: string

DICOM Series Instance UID. Non-empty string.

seriesNumber: string | number

Series number. String or number (1 or “1”).

One of the following:
string
number
sops: Array<StudyAccessRequestedManifestSop { sopClassUID, sopInstanceUID, bitsAllocated, 13 more } >

SOPs in this series. At least one must survive validation.

sopClassUID: string

DICOM SOP Class UID. Progressive load uses legacy single-frame image classes. Common: CT 1.2.840.10008.5.1.4.1.1.2, MR 1.2.840.10008.5.1.4.1.1.4, plus CR / DX / US / XA / PT. Enhanced multi-frame classes already load progressively from the single SOP — the sidecar is not used for them. SR / PR / KO do not need geometry.

sopInstanceUID: string

DICOM SOP Instance UID. Non-empty string.

bitsAllocated?: number

Required on image SOPs. Planner uses 8, 16, or 32 (or the float flags). Typical CT/MR: 16.

bitsStored?: number

Optional. Typical CT/MR: 12 or 16.

columns?: number

Image columns. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

highBit?: number

Optional. Typical 16-bit: 15.

instanceNumber?: number

Slice order (DICOM Instance Number). Omit or 0 if unknown; UID is the tie-break.

isDoubleFloatPixelData?: boolean

Set true only if pixel data is 64-bit float.

isFloatPixelData?: boolean

Set true only if pixel data is 32-bit float.

numberOfFrames?: number

1 for single-frame files. Greater than 1 only if this SOP is multi-frame.

photometricInterpretation?: string

Required non-empty string on image SOPs. Common: MONOCHROME2 (CT/MR), MONOCHROME1 (often MG, inverted), RGB, PALETTE COLOR, YBR_FULL, YBR_FULL_422. Unknown strings are kept and treated as mono unless samplesPerPixel is 3. Wrong type (number/null) drops that SOP from optimized path.

pixelRepresentation?: number

0 unsigned, 1 signed. Typical CT: 0.

rescaleIntercept?: number

Optional. Typical CT: -1024. Safe to omit.

rescaleSlope?: number

Optional. Typical CT: 1. Safe to omit.

rows?: number

Image rows. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

samplesPerPixel?: number

Required on image SOPs. 1 grayscale, 3 color. 3 is treated as color even if photometric is unusual.

studyInstanceUID: string

DICOM Study Instance UID for this study. Non-empty string. Must match the study being requested.

StudyAccessRequestedManifestSeries { modality, seriesDescription, seriesInstanceUID, 2 more }

One series in the optional study manifest. Series you cannot describe can be left out. Secondary capture is not necessary. Enhanced multi-frame series already load progressively without this sidecar. A series with no surviving SOPs is dropped.

modality: string

Non-empty DICOM modality. Common: CT, MR, CR, DX, US, XA, PT, NM, MG. Secondary capture (SC) is not necessary.

seriesDescription: string

Non-empty display string shown in the viewer sidebar.

seriesInstanceUID: string

DICOM Series Instance UID. Non-empty string.

seriesNumber: string | number

Series number. String or number (1 or “1”).

One of the following:
string
number
sops: Array<StudyAccessRequestedManifestSop { sopClassUID, sopInstanceUID, bitsAllocated, 13 more } >

SOPs in this series. At least one must survive validation.

sopClassUID: string

DICOM SOP Class UID. Progressive load uses legacy single-frame image classes. Common: CT 1.2.840.10008.5.1.4.1.1.2, MR 1.2.840.10008.5.1.4.1.1.4, plus CR / DX / US / XA / PT. Enhanced multi-frame classes already load progressively from the single SOP — the sidecar is not used for them. SR / PR / KO do not need geometry.

sopInstanceUID: string

DICOM SOP Instance UID. Non-empty string.

bitsAllocated?: number

Required on image SOPs. Planner uses 8, 16, or 32 (or the float flags). Typical CT/MR: 16.

bitsStored?: number

Optional. Typical CT/MR: 12 or 16.

columns?: number

Image columns. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

highBit?: number

Optional. Typical 16-bit: 15.

instanceNumber?: number

Slice order (DICOM Instance Number). Omit or 0 if unknown; UID is the tie-break.

isDoubleFloatPixelData?: boolean

Set true only if pixel data is 64-bit float.

isFloatPixelData?: boolean

Set true only if pixel data is 32-bit float.

numberOfFrames?: number

1 for single-frame files. Greater than 1 only if this SOP is multi-frame.

photometricInterpretation?: string

Required non-empty string on image SOPs. Common: MONOCHROME2 (CT/MR), MONOCHROME1 (often MG, inverted), RGB, PALETTE COLOR, YBR_FULL, YBR_FULL_422. Unknown strings are kept and treated as mono unless samplesPerPixel is 3. Wrong type (number/null) drops that SOP from optimized path.

pixelRepresentation?: number

0 unsigned, 1 signed. Typical CT: 0.

rescaleIntercept?: number

Optional. Typical CT: -1024. Safe to omit.

rescaleSlope?: number

Optional. Typical CT: 1. Safe to omit.

rows?: number

Image rows. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

samplesPerPixel?: number

Required on image SOPs. 1 grayscale, 3 color. 3 is treated as color even if photometric is unusual.

StudyAccessRequestedManifestSop { sopClassUID, sopInstanceUID, bitsAllocated, 13 more }

One SOP in the optional study manifest. Identity (sopInstanceUID, sopClassUID) is always required. For image SOPs, also include rows, columns, bitsAllocated, photometricInterpretation, and samplesPerPixel or that SOP is dropped. SR / PR / KO do not need geometry. Wrong types or missing required fields drop that SOP only; sibling SOPs and URLs still load.

sopClassUID: string

DICOM SOP Class UID. Progressive load uses legacy single-frame image classes. Common: CT 1.2.840.10008.5.1.4.1.1.2, MR 1.2.840.10008.5.1.4.1.1.4, plus CR / DX / US / XA / PT. Enhanced multi-frame classes already load progressively from the single SOP — the sidecar is not used for them. SR / PR / KO do not need geometry.

sopInstanceUID: string

DICOM SOP Instance UID. Non-empty string.

bitsAllocated?: number

Required on image SOPs. Planner uses 8, 16, or 32 (or the float flags). Typical CT/MR: 16.

bitsStored?: number

Optional. Typical CT/MR: 12 or 16.

columns?: number

Image columns. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

highBit?: number

Optional. Typical 16-bit: 15.

instanceNumber?: number

Slice order (DICOM Instance Number). Omit or 0 if unknown; UID is the tie-break.

isDoubleFloatPixelData?: boolean

Set true only if pixel data is 64-bit float.

isFloatPixelData?: boolean

Set true only if pixel data is 32-bit float.

numberOfFrames?: number

1 for single-frame files. Greater than 1 only if this SOP is multi-frame.

photometricInterpretation?: string

Required non-empty string on image SOPs. Common: MONOCHROME2 (CT/MR), MONOCHROME1 (often MG, inverted), RGB, PALETTE COLOR, YBR_FULL, YBR_FULL_422. Unknown strings are kept and treated as mono unless samplesPerPixel is 3. Wrong type (number/null) drops that SOP from optimized path.

pixelRepresentation?: number

0 unsigned, 1 signed. Typical CT: 0.

rescaleIntercept?: number

Optional. Typical CT: -1024. Safe to omit.

rescaleSlope?: number

Optional. Typical CT: 1. Safe to omit.

rows?: number

Image rows. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

samplesPerPixel?: number

Required on image SOPs. 1 grayscale, 3 color. 3 is treated as color even if photometric is unusual.

StudyAccessRequestedMediaURL { mimeType, url, fileName }

Presigned URL for non-DICOM media (images, PDFs, videos)

mimeType: string

MIME type of the media file (e.g., application/pdf, image/jpeg, video/mp4)

url: string

Presigned URL to download the media file

formaturi
fileName?: string

Optional display name for the media file

StudyAccessRequestedResponse { authorized, urls, error, 2 more }

Response expected by Avara for study access webhook. Provide presigned URLs for DICOM images and optionally non-DICOM media. Optionally include a study manifest to improve progressive loading of legacy DICOM; it is not required.

authorized: boolean

Whether access is authorized for this study

urls: Array<string>

Flat list of presigned URLs for DICOM images. Include all image URLs for the study.

error?: string

Error message if authorization failed or URLs cannot be provided

manifest?: StudyAccessRequestedManifest { series, studyInstanceUID }

Optional sidecar for this one study (one object, not an array). Not required — omit if you do not have it. Recommended when you can provide it, especially for very large studies. Enables progressive loading of legacy multi-SOP DICOM so readers can scroll before every file is parsed. Invalid or incomplete values are ignored; URLs still load.

series: Array<StudyAccessRequestedManifestSeries { modality, seriesDescription, seriesInstanceUID, 2 more } >

Planable series in this study. At least one must survive validation.

modality: string

Non-empty DICOM modality. Common: CT, MR, CR, DX, US, XA, PT, NM, MG. Secondary capture (SC) is not necessary.

seriesDescription: string

Non-empty display string shown in the viewer sidebar.

seriesInstanceUID: string

DICOM Series Instance UID. Non-empty string.

seriesNumber: string | number

Series number. String or number (1 or “1”).

One of the following:
string
number
sops: Array<StudyAccessRequestedManifestSop { sopClassUID, sopInstanceUID, bitsAllocated, 13 more } >

SOPs in this series. At least one must survive validation.

sopClassUID: string

DICOM SOP Class UID. Progressive load uses legacy single-frame image classes. Common: CT 1.2.840.10008.5.1.4.1.1.2, MR 1.2.840.10008.5.1.4.1.1.4, plus CR / DX / US / XA / PT. Enhanced multi-frame classes already load progressively from the single SOP — the sidecar is not used for them. SR / PR / KO do not need geometry.

sopInstanceUID: string

DICOM SOP Instance UID. Non-empty string.

bitsAllocated?: number

Required on image SOPs. Planner uses 8, 16, or 32 (or the float flags). Typical CT/MR: 16.

bitsStored?: number

Optional. Typical CT/MR: 12 or 16.

columns?: number

Image columns. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

highBit?: number

Optional. Typical 16-bit: 15.

instanceNumber?: number

Slice order (DICOM Instance Number). Omit or 0 if unknown; UID is the tie-break.

isDoubleFloatPixelData?: boolean

Set true only if pixel data is 64-bit float.

isFloatPixelData?: boolean

Set true only if pixel data is 32-bit float.

numberOfFrames?: number

1 for single-frame files. Greater than 1 only if this SOP is multi-frame.

photometricInterpretation?: string

Required non-empty string on image SOPs. Common: MONOCHROME2 (CT/MR), MONOCHROME1 (often MG, inverted), RGB, PALETTE COLOR, YBR_FULL, YBR_FULL_422. Unknown strings are kept and treated as mono unless samplesPerPixel is 3. Wrong type (number/null) drops that SOP from optimized path.

pixelRepresentation?: number

0 unsigned, 1 signed. Typical CT: 0.

rescaleIntercept?: number

Optional. Typical CT: -1024. Safe to omit.

rescaleSlope?: number

Optional. Typical CT: 1. Safe to omit.

rows?: number

Image rows. Required on image SOPs. Positive integer. Common: 256, 512, 1024.

samplesPerPixel?: number

Required on image SOPs. 1 grayscale, 3 color. 3 is treated as color even if photometric is unusual.

studyInstanceUID: string

DICOM Study Instance UID for this study. Non-empty string. Must match the study being requested.

mediaUrls?: Array<StudyAccessRequestedMediaURL { mimeType, url, fileName } >

Optional presigned URLs for non-DICOM media (images, PDFs, videos) associated with the study.

mimeType: string

MIME type of the media file (e.g., application/pdf, image/jpeg, video/mp4)

url: string

Presigned URL to download the media file

formaturi
fileName?: string

Optional display name for the media file

WebhookEvent = StudyAccessRequestedEvent { id, data, type } | EphemeralAccessRequestedEvent { id, data, type } | ReportDeliveredEvent { id, data, type } | 4 more

Union of all Avara webhook event types. Use the ‘type’ field to discriminate between event types. Events: study.access_requested (synchronous), ephemeral.access_requested (synchronous), report.delivered (asynchronous), secondary_capture.access_requested (synchronous), modality_worklist.requested (synchronous), patient_study.enrichment_requested (synchronous soft), clinical_context.enrichment_requested (synchronous soft).

One of the following:
StudyAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned URLs for DICOM images. This is a synchronous webhook - you must respond with the URLs within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: StudyAccessRequestedEventData { studyId, studyInstanceUid }

Event payload containing study information

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

type: "study.access_requested"

Event type identifier

EphemeralAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned URLs for an ephemeral viewer session. This is a synchronous webhook — you must respond with the URLs within the request timeout. There is no Avara study; use retrievalId (and optional options) to resolve images.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: EphemeralAccessRequestedEventData { retrievalId, options }

Event payload for an ephemeral viewer session. retrievalId is the customer handle from mint. options is echoed verbatim when present; Avara does not read or edit it.

retrievalId: string

Opaque customer handle for this view session. Not an Avara study ID.

minLength1
options?: Record<string, unknown>

Optional JSON object echoed verbatim from mint. Avara does not read or edit it. Examples: studyInstanceUids or internal ids for multi-study reads. Not for URLs or manifests.

type: "ephemeral.access_requested"

Event type identifier

ReportDeliveredEvent { id, data, type }

Webhook event sent when a report is completed. This is an asynchronous notification - respond with a simple acknowledgment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ReportDeliveredEventData { isCritical, presignedUrl, reportId, 4 more }

Event payload containing report and study information

isCritical: boolean

Whether the report was marked critical at sign-off.

presignedUrl: string

Presigned URL for PDF download. Time-limited, typically valid for 1 hour.

formaturi
reportId: string

Avara report ID. Format: rep_{32-hex-chars}

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID

externalPatientId?: string

External patient identifier when available

plainText?: string

Report plain text content (optional). Contains the full report text.

type: "report.delivered"

Event type identifier

SecondaryCaptureAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned UPLOAD URLs for a secondary capture DICOM. This is a synchronous webhook - you must respond with the upload URLs within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: SecondaryCaptureAccessRequestedEventData { studyId, studyInstanceUid, seriesInstanceUid, sopInstanceUid }

Event payload containing study + (optional) series/SOP information for a secondary capture upload

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

seriesInstanceUid?: string

DICOM Series Instance UID generated for the new secondary capture series (when available).

sopInstanceUid?: string

DICOM SOP Instance UID generated for the new secondary capture object (when available).

type: "secondary_capture.access_requested"

Event type identifier

ModalityWorklistRequestedEvent { id, data, type }

Webhook event sent when an on-prem modality issues a C-FIND MWL. This is a synchronous webhook - you must respond with authorized + items within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ModalityWorklistRequestedEventData { callingAe, clinicId, dateEnd, 3 more }

Event payload for a modality worklist (C-FIND MWL) request

callingAe: string

Calling AE title from the modality

clinicId: string

Clinic UUID that owns the modality / worklist query

formatuuid
dateEnd: string

Inclusive worklist window end date (YYYY-MM-DD)

dateStart: string

Inclusive worklist window start date (YYYY-MM-DD)

sourceIp: string

Source IP observed by Avara for the modality request

modality?: string

Present when the modality C-FIND included a modality filter

type: "modality_worklist.requested"

Event type identifier

PatientStudyEnrichmentRequestedEvent { id, data, type }

Soft synchronous webhook sent after Avara PACS seeds a study so the partner can enrich demographics and report headers. Failures / timeouts / invalid bodies are treated as empty enrichment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: PatientStudyEnrichmentRequestedEventData { clinicId, studyInstanceUid, accessionNumber, patientId }

Event payload for soft patient/study enrichment after Avara PACS seeds a study

clinicId: string

Clinic UUID

formatuuid
studyInstanceUid: string

DICOM Study Instance UID

accessionNumber?: string

Accession number from DICOM when available

patientId?: string

Patient ID from DICOM when available

type: "patient_study.enrichment_requested"

Event type identifier

ClinicalContextEnrichmentRequestedEvent { id, data, type }

Soft synchronous webhook sent when AutoScribe needs clinical context from the partner EHR. Failures / timeouts / invalid bodies are treated as empty enrichment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ClinicalContextEnrichmentRequestedEventData { clinicId, studyId, studyInstanceUid, 2 more }

Event payload for soft clinical context enrichment when AutoScribe needs EHR context for a study

clinicId: string

Clinic UUID

formatuuid
studyId: string

Raw study UUID v4 (not branded stu_…)

formatuuid
studyInstanceUid: string

DICOM Study Instance UID

externalPatientId?: string

External patient identifier when available

mrn?: string

Medical record number when available

type: "clinical_context.enrichment_requested"

Event type identifier

UnsafeUnwrapWebhookEvent = EphemeralAccessRequestedEvent { id, data, type } | StudyAccessRequestedEvent { id, data, type } | ReportDeliveredEvent { id, data, type } | 4 more

Webhook event sent when Avara needs presigned URLs for an ephemeral viewer session. This is a synchronous webhook — you must respond with the URLs within the request timeout. There is no Avara study; use retrievalId (and optional options) to resolve images.

One of the following:
EphemeralAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned URLs for an ephemeral viewer session. This is a synchronous webhook — you must respond with the URLs within the request timeout. There is no Avara study; use retrievalId (and optional options) to resolve images.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: EphemeralAccessRequestedEventData { retrievalId, options }

Event payload for an ephemeral viewer session. retrievalId is the customer handle from mint. options is echoed verbatim when present; Avara does not read or edit it.

retrievalId: string

Opaque customer handle for this view session. Not an Avara study ID.

minLength1
options?: Record<string, unknown>

Optional JSON object echoed verbatim from mint. Avara does not read or edit it. Examples: studyInstanceUids or internal ids for multi-study reads. Not for URLs or manifests.

type: "ephemeral.access_requested"

Event type identifier

StudyAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned URLs for DICOM images. This is a synchronous webhook - you must respond with the URLs within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: StudyAccessRequestedEventData { studyId, studyInstanceUid }

Event payload containing study information

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

type: "study.access_requested"

Event type identifier

ReportDeliveredEvent { id, data, type }

Webhook event sent when a report is completed. This is an asynchronous notification - respond with a simple acknowledgment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ReportDeliveredEventData { isCritical, presignedUrl, reportId, 4 more }

Event payload containing report and study information

isCritical: boolean

Whether the report was marked critical at sign-off.

presignedUrl: string

Presigned URL for PDF download. Time-limited, typically valid for 1 hour.

formaturi
reportId: string

Avara report ID. Format: rep_{32-hex-chars}

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID

externalPatientId?: string

External patient identifier when available

plainText?: string

Report plain text content (optional). Contains the full report text.

type: "report.delivered"

Event type identifier

SecondaryCaptureAccessRequestedEvent { id, data, type }

Webhook event sent when Avara needs presigned UPLOAD URLs for a secondary capture DICOM. This is a synchronous webhook - you must respond with the upload URLs within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: SecondaryCaptureAccessRequestedEventData { studyId, studyInstanceUid, seriesInstanceUid, sopInstanceUid }

Event payload containing study + (optional) series/SOP information for a secondary capture upload

studyId: string

Avara study ID. Format: stu_{32-hex-chars}

studyInstanceUid: string

DICOM Study Instance UID. Must be a valid DICOM UID format (e.g., ‘1.2.840.10008.5.1.4.1.1.2’)

seriesInstanceUid?: string

DICOM Series Instance UID generated for the new secondary capture series (when available).

sopInstanceUid?: string

DICOM SOP Instance UID generated for the new secondary capture object (when available).

type: "secondary_capture.access_requested"

Event type identifier

ModalityWorklistRequestedEvent { id, data, type }

Webhook event sent when an on-prem modality issues a C-FIND MWL. This is a synchronous webhook - you must respond with authorized + items within the request timeout.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ModalityWorklistRequestedEventData { callingAe, clinicId, dateEnd, 3 more }

Event payload for a modality worklist (C-FIND MWL) request

callingAe: string

Calling AE title from the modality

clinicId: string

Clinic UUID that owns the modality / worklist query

formatuuid
dateEnd: string

Inclusive worklist window end date (YYYY-MM-DD)

dateStart: string

Inclusive worklist window start date (YYYY-MM-DD)

sourceIp: string

Source IP observed by Avara for the modality request

modality?: string

Present when the modality C-FIND included a modality filter

type: "modality_worklist.requested"

Event type identifier

PatientStudyEnrichmentRequestedEvent { id, data, type }

Soft synchronous webhook sent after Avara PACS seeds a study so the partner can enrich demographics and report headers. Failures / timeouts / invalid bodies are treated as empty enrichment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: PatientStudyEnrichmentRequestedEventData { clinicId, studyInstanceUid, accessionNumber, patientId }

Event payload for soft patient/study enrichment after Avara PACS seeds a study

clinicId: string

Clinic UUID

formatuuid
studyInstanceUid: string

DICOM Study Instance UID

accessionNumber?: string

Accession number from DICOM when available

patientId?: string

Patient ID from DICOM when available

type: "patient_study.enrichment_requested"

Event type identifier

ClinicalContextEnrichmentRequestedEvent { id, data, type }

Soft synchronous webhook sent when AutoScribe needs clinical context from the partner EHR. Failures / timeouts / invalid bodies are treated as empty enrichment.

id: string

Unique webhook event ID. Format: whe_{32-hex-chars}

data: ClinicalContextEnrichmentRequestedEventData { clinicId, studyId, studyInstanceUid, 2 more }

Event payload for soft clinical context enrichment when AutoScribe needs EHR context for a study

clinicId: string

Clinic UUID

formatuuid
studyId: string

Raw study UUID v4 (not branded stu_…)

formatuuid
studyInstanceUid: string

DICOM Study Instance UID

externalPatientId?: string

External patient identifier when available

mrn?: string

Medical record number when available

type: "clinical_context.enrichment_requested"

Event type identifier