Norvya Developers
Get a sandbox
API reference · Operations

Medical travel

Built — gated47 endpoints · 6 webhook events · OpenAPI tag travel

For international patient desks and medical-travel coordinators: the inquiry desk before a journey (create an inquiry from your CRM by its own id, quote it as an immutable Good Faith Estimate version, move it through the desk's statuses and convert an accepted one to a journey), open and run care journeys (forward-only phases, the patient's acceptance first), the journey's in-app thread with the patient and the caregiver they approved (your posts shown as your system, never a person), flights and transfers with live status where a provider is configured, the care team and its hours, approval progress, the partner-hospital directory (accreditations as recorded; Norvya verifies none), home nursing under the letter of guarantee (the LOG is the gate: no shift beyond it), visit records, satisfaction surveys, a sponsor's referral for a patient without the app, the HL7 International Patient Summary, the repatriation packet and the bilingual summary for the clinician at home, weekly nursing reports and monthly invoices in the sponsor's language, and machine translation of a journey's free text. Visit notes, approvals and consents stay with the named people who attest to them in Norvya.

Who calls it
Core for Medical travel desks; useful for Hospitals and health systems
Before production
A BAA on file (or a sandbox); any treating-practice organisation can act as a desk.
Sandbox
Build against synthetic members first. What each sandbox holds
Standards
HL7 International Patient Summary

Markets that use this family

Scopes

ScopeAllows
travel.billing.readRead the monthly home-nursing invoices per PRN (lines, hold flags, totals in integer minor units) and download them as PDF or HTML.
travel.documents.readDownload a journey's documents: the HL7 International Patient Summary, the FHIR repatriation packet, the bilingual readable summary and the weekly nursing reports (each an audited export, inside the patient's sharing choices).
travel.inquiries.readRead your desk's travel inquiries (contact, origin, language, sponsor, the coordinator's summary, status history) with their quote versions (each an immutable Good Faith Estimate). Medical-travel desks with a BAA on file.
travel.inquiries.writeCreate an inquiry from your own system by its id, edit it, link a patient on your roster, issue or revise its quote, and move it through the desk's own statuses. Converting an accepted inquiry to a journey also needs travel.journeys.write.
travel.journeys.readRead your desk's care journeys (phase, dates, continuity after repatriation, timeline), their flights and transfers with live flight status where configured, the care team and staff hours, approval progress, and your partner-hospital directory (accreditations as recorded; Norvya verifies none). Medical-travel desks with a BAA on file.
travel.journeys.writeOpen a care journey for a patient on your roster (it waits for the patient's acceptance), move it forward a phase, add, edit and cancel flights and transfers, and keep your partner-hospital directory.
travel.messages.readRead the in-app message thread on a journey: the desk, the patient and the caregiver the patient approved (who see the same thread).
travel.messages.writePost in a journey's thread as your desk's system (shown as "Partner system", never as a person); the patient and caregiver get Norvya's generic push. Refused until the patient has accepted the journey.
travel.nursing.readRead home-nursing cases: the sponsor's PRN, LOMN and LOG versions, shifts, the hours check, visit records (notes, vitals, medication administration, incidents), satisfaction survey results and sponsor referrals.
travel.nursing.writeRecord a new LOG version, plan, confirm and cancel nursing shifts (never outside the newest LOG's dates or in a pause: the server refuses), move a nursing case forward, and send a sponsor referral for a patient without the app.
travel.translations.writeAsk Norvya to machine-translate a free-text item on a journey (the reason for travel, a visit note, a medication line, an incident, a LOMN instruction) into a supported language; the original stays the record.

Endpoints

Medical travel vocabularies: phases, leg modes, nursing statuses, invoice flags, languages

GET/v1/travel/referencetravel.journeys.read

No patient data. `not_exposed` names what stays in Norvya because a person attests to it (a nurse's visit record, an approval decision, an invoice issue).

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/reference" \
  -H "Authorization: Bearer $TOKEN"

Your desk's care journeys (open by default), with continuity and nursing flags

GET/v1/travel/journeystravel.journeys.read

Patients actively on your roster only (a sandbox: synthetic members). Newest first, at most 500.

Parameters

qquery · string | null

Part of a PRN.

phasequery · string | null
include_closedquery · boolean

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys" \
  -H "Authorization: Bearer $TOKEN"
Response 200
{
  "items": [
    {}
  ],
  "count": 0
}

The response is the shape from the schema, not live data.

Open a care journey for a patient on your roster (waits for the patient's acceptance)

POST/v1/travel/journeystravel.journeys.write

travel_coordination.create_for_patient: the patient receives Norvya's generic "request to review" push and the journey stays consent_status `pending` until they accept in the app; until then every write answers 409 care_journey_consent_pending. One open journey per patient per desk (409 care_journey_already_open).

Request body

Content type: application/json (required)

member_refstringrequired

A patient on your desk's active roster.

origin_countrystringrequired

ISO 3166-1 alpha-2, where the patient lives.

destination_countrystring
primary_languagestring

The language the documents must be in.

interpreter_requiredboolean
treating_facilitystring | null
facility_refstring | null

A partner hospital from GET /v1/travel/facilities, linked once the patient accepts.

sponsor_typestring | null

self | insurer | employer | government | embassy | charity

sponsor_namestring | null
reasonstring | null

What the patient travels for, plain words.

planned_arrivalstring | null

Errors specific to this call

409care_journey_consent_pending409care_journey_already_open

All responses

201Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "member_ref": "mr_3f9c1a0b7d2e4c6a8b1d0e2f",
    "origin_country": "AE",
    "destination_country": "US",
    "primary_language": "ar",
    "interpreter_required": false,
    "treating_facility": "string",
    "facility_ref": "string",
    "sponsor_type": "government",
    "sponsor_name": "string",
    "reason": "string",
    "planned_arrival": "string"
  }'

One care journey: phase, dates, timeline, continuity after repatriation

GET/v1/travel/journeys/{journey_ref}travel.journeys.read

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF" \
  -H "Authorization: Bearer $TOKEN"

Move a journey forward a phase

POST/v1/travel/journeys/{journey_ref}/phasetravel.journeys.write

care_journey.advance: forward only (409 phase_not_forward), the dates set by the move (arrival, discharge, departure), a timeline line and a chained audit row. 409 care_journey_consent_pending until the patient accepted; 409 approvals_required when your desk requires approvals before travel.

Parameters

journey_refpath · stringrequired

Request body

Content type: application/json (required)

to_phasestringrequired

planned | arrived | in_treatment | discharged | repatriated | home_follow_up | closed (forward only)

on_datestring | null

The day it happened (default today).

notestring | null

Errors specific to this call

409phase_not_forward409care_journey_consent_pending409approvals_required

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/phase" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "to_phase": "arrived",
    "on_date": "string",
    "note": "string"
  }'

Link (or unlink) the journey's partner hospital

PUT/v1/travel/journeys/{journey_ref}/facilitytravel.journeys.write

Parameters

journey_refpath · stringrequired

Request body

Content type: application/json (required)

facility_refstring | null

null unlinks.

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X PUT "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/facility" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "facility_ref": "string"
  }'

Flights and transfers, each end in its own time zone, with live flight status

GET/v1/travel/journeys/{journey_ref}/legstravel.journeys.read

`live` is null until the leg is checked (a flight-data provider must be configured; GET /v1/travel/reference). Marking an outbound leg flown never moves the journey's phase.

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/legs" \
  -H "Authorization: Bearer $TOKEN"
Response 200
{
  "items": [
    {}
  ],
  "count": 0
}

The response is the shape from the schema, not live data.

Add a flight or transfer leg

POST/v1/travel/journeys/{journey_ref}/legstravel.journeys.write

journey_ops.create_leg (direction, mode and both places required; local times with each end's IANA zone; oxygen 0.5-15 L/min; an escort must be on the care team on the day of departure).

Parameters

journey_refpath · stringrequired

Request body

Content type: application/json (required)

directionstring | null

outbound | return | transfer (required to create)

modestring | null

commercial | commercial_stretcher | air_ambulance | ground_ambulance | private_car | other (required to create)

statusstring | null

planned | booked | flown (cancel has its own call)

leg_orderinteger | null
carrierstring | null
flight_numberstring | null
booking_referencestring | null
depart_placestring | null

An IATA code or a place.

arrive_placestring | null
depart_atstring | null

Local wall clock at departure, YYYY-MM-DDTHH:MM.

depart_tzstring | null

IANA zone of the departure end.

arrive_atstring | null
arrive_tzstring | null
stretcherboolean | null
oxygenboolean | null
oxygen_lpmnumber | null
wheelchairstring | null

none | WCHR | WCHS | WCHC (IATA)

medical_escort_requiredboolean | null
escort_staff_refstring | null

A staff_ref on the journey's care team on the day of departure (see GET .../team); "" clears it.

other_needsstring | null
notestring | null

All responses

201Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/legs" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "direction": "string",
    "mode": "string",
    "status": "string",
    "leg_order": 0,
    "carrier": "string",
    "flight_number": "string",
    "booking_reference": "string",
    "depart_place": "AUH",
    "arrive_place": "IAH",
    "depart_at": "2026-10-20T02:10",
    "depart_tz": "Asia/Dubai",
    "arrive_at": "string",
    "arrive_tz": "string",
    "stretcher": false,
    "oxygen": false,
    "oxygen_lpm": 0.0,
    "wheelchair": "string",
    "medical_escort_required": false,
    "escort_staff_ref": "string",
    "other_needs": "string",
    "note": "string"
  }'

Edit a leg (any subset; "" clears a text field)

PATCH/v1/travel/journeys/{journey_ref}/legs/{leg_ref}travel.journeys.write

Parameters

journey_refpath · stringrequired
leg_refpath · stringrequired

Request body

Content type: application/json (required)

directionstring | null

outbound | return | transfer (required to create)

modestring | null

commercial | commercial_stretcher | air_ambulance | ground_ambulance | private_car | other (required to create)

statusstring | null

planned | booked | flown (cancel has its own call)

leg_orderinteger | null
carrierstring | null
flight_numberstring | null
booking_referencestring | null
depart_placestring | null

An IATA code or a place.

arrive_placestring | null
depart_atstring | null

Local wall clock at departure, YYYY-MM-DDTHH:MM.

depart_tzstring | null

IANA zone of the departure end.

arrive_atstring | null
arrive_tzstring | null
stretcherboolean | null
oxygenboolean | null
oxygen_lpmnumber | null
wheelchairstring | null

none | WCHR | WCHS | WCHC (IATA)

medical_escort_requiredboolean | null
escort_staff_refstring | null

A staff_ref on the journey's care team on the day of departure (see GET .../team); "" clears it.

other_needsstring | null
notestring | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X PATCH "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/legs/$LEG_REF" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "direction": "string",
    "mode": "string",
    "status": "string",
    "leg_order": 0,
    "carrier": "string",
    "flight_number": "string",
    "booking_reference": "string",
    "depart_place": "AUH",
    "arrive_place": "IAH",
    "depart_at": "2026-10-20T02:10",
    "depart_tz": "Asia/Dubai",
    "arrive_at": "string",
    "arrive_tz": "string",
    "stretcher": false,
    "oxygen": false,
    "oxygen_lpm": 0.0,
    "wheelchair": "string",
    "medical_escort_required": false,
    "escort_staff_ref": "string",
    "other_needs": "string",
    "note": "string"
  }'

Cancel a leg (kept, never deleted)

POST/v1/travel/journeys/{journey_ref}/legs/{leg_ref}/canceltravel.journeys.write

Parameters

journey_refpath · stringrequired
leg_refpath · stringrequired

Request body

Content type: application/json

reasonstring | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/legs/$LEG_REF/cancel" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "string"
  }'

Check the leg's live flight status now

POST/v1/travel/journeys/{journey_ref}/legs/{leg_ref}/refresh-statustravel.journeys.write

flight_status.refresh_leg (cached a few minutes per flight and day). Only the live fields change; the leg status and the phase stay manual. 503 flight_status_not_configured; 409 flight_status_leg_not_active; 422 flight_status_needs_flight_number / flight_status_needs_departure.

Parameters

journey_refpath · stringrequired
leg_refpath · stringrequired

Errors specific to this call

503flight_status_not_configured409flight_status_leg_not_active

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/legs/$LEG_REF/refresh-status" \
  -H "Authorization: Bearer $TOKEN"

The journey's care team and the staff hours logged on it

GET/v1/travel/journeys/{journey_ref}/teamtravel.journeys.read

Time tracking, not payroll (journey_ops): minutes by staff member, activity and day; superseded, voided and open entries are not counted. Adding members and clocking time stay in Norvya (a named staff member).

Parameters

journey_refpath · stringrequired
tzquery · string | null

IANA zone for the per-day totals (default UTC).

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/team" \
  -H "Authorization: Bearer $TOKEN"

Approval progress on the journey (read only)

GET/v1/travel/journeys/{journey_ref}/approvalstravel.journeys.read

Each run of the desk's approval template: steps, the current step and the decisions with who decided in what role. A step is decided in Norvya by a staff member whose role the step requires.

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/approvals" \
  -H "Authorization: Bearer $TOKEN"

Your partner-hospital directory (accreditations as recorded; Norvya verifies none)

GET/v1/travel/facilitiestravel.journeys.read

Parameters

qquery · string | null
countryquery · string | null
specialtyquery · string | null
agreement_statusquery · string | null
facility_typequery · string | null
include_inactivequery · boolean

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/facilities" \
  -H "Authorization: Bearer $TOKEN"
Response 200
{
  "items": [
    {}
  ],
  "count": 0
}

The response is the shape from the schema, not live data.

Add a partner hospital to your directory

POST/v1/travel/facilitiestravel.journeys.write

Request body

Content type: application/json (required)

namestring | null
facility_typestring | null
citystring | null
countrystring | null
addressstring | null
phonestring | null
emailstring | null
websitestring | null
contactsarray of object | null
specialtiesarray of string | null
accreditationsarray of object | null

[{body, status, expires_on}] AS RECORDED by your desk; Norvya verifies none.

agreement_statusstring | null
agreement_expires_onstring | null
languages_spokenarray of string | null
notesstring | null

All responses

201Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/facilities" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "facility_type": "string",
    "city": "string",
    "country": "string",
    "address": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "contacts": [
      {}
    ],
    "specialties": [
      "string"
    ],
    "accreditations": [
      {}
    ],
    "agreement_status": "string",
    "agreement_expires_on": "string",
    "languages_spoken": [
      "string"
    ],
    "notes": "string"
  }'

One partner hospital

GET/v1/travel/facilities/{facility_ref}travel.journeys.read

Parameters

facility_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/facilities/$FACILITY_REF" \
  -H "Authorization: Bearer $TOKEN"

Update a partner hospital (any subset)

PATCH/v1/travel/facilities/{facility_ref}travel.journeys.write

Parameters

facility_refpath · stringrequired

Request body

Content type: application/json (required)

namestring | null
facility_typestring | null
citystring | null
countrystring | null
addressstring | null
phonestring | null
emailstring | null
websitestring | null
contactsarray of object | null
specialtiesarray of string | null
accreditationsarray of object | null

[{body, status, expires_on}] AS RECORDED by your desk; Norvya verifies none.

agreement_statusstring | null
agreement_expires_onstring | null
languages_spokenarray of string | null
notesstring | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X PATCH "https://norvya.fly.dev/v1/travel/facilities/$FACILITY_REF" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "facility_type": "string",
    "city": "string",
    "country": "string",
    "address": "string",
    "phone": "string",
    "email": "string",
    "website": "string",
    "contacts": [
      {}
    ],
    "specialties": [
      "string"
    ],
    "accreditations": [
      {}
    ],
    "agreement_status": "string",
    "agreement_expires_on": "string",
    "languages_spoken": [
      "string"
    ],
    "notes": "string"
  }'

A home-nursing case: PRN, LOMN, LOG versions, exception starts, pauses, flags, hours check

GET/v1/travel/journeys/{journey_ref}/nursingtravel.nursing.read

nursing_authorization.case_dict. Flags: extension_required, log_expired, lomn_pending, paused, no_log. Documents are described (name, type, size, SHA-256), never returned.

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing" \
  -H "Authorization: Bearer $TOKEN"

Move a nursing case forward (the LOG gates nursing_active)

POST/v1/travel/journeys/{journey_ref}/nursing/statustravel.nursing.write

nursing_authorization.set_status: forward only (409 nursing_status_not_forward); paused and resume stay in Norvya (409 nursing_status_use_pause); nursing_active needs a LOG or exception start covering today (409 nursing_log_not_in_force).

Parameters

journey_refpath · stringrequired

Request body

Content type: application/json (required)

statusstringrequired

A nursing status after the current one (paused / resume stay in Norvya). nursing_active needs a LOG (or an exception start) covering today.

notestring | null

Errors specific to this call

409nursing_log_not_in_force

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/status" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "nursing_active",
    "note": "string"
  }'

Record a new version of the sponsor's Letter of Guarantee (multipart, with the letter)

POST/v1/travel/journeys/{journey_ref}/nursing/logstravel.nursing.write

nursing_authorization.record_log: a NEW version (never edited); the newest version gates scheduling. 409 log_prn_mismatch when the PRN is not the case's; 413 nursing_document_too_large; 422 nursing_document_type.

Parameters

journey_refpath · stringrequired

Request body

Content type: multipart/form-data (required)

sponsor_referencestringrequired

Must be the case's PRN.

start_datestringrequired
end_datestringrequired
approved_hoursstringrequired

Hours, e.g. 12 or 7.5.

hours_unitstringrequired

per_day | per_week | total

issued_onstring | null
documentfilerequired

The letter: PDF, PNG or JPEG, at most 10 MB.

Errors specific to this call

409log_prn_mismatch413nursing_document_too_large422nursing_document_type

All responses

201Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/logs" \
  -H "Authorization: Bearer $TOKEN" \
  -F sponsor_reference="$SPONSOR_REFERENCE" \
  -F start_date="$START_DATE" \
  -F end_date="$END_DATE" \
  -F approved_hours="$APPROVED_HOURS" \
  -F hours_unit="$HOURS_UNIT" \
  -F issued_on="$ISSUED_ON" \
  -F document=@your_file

Planned nursing shifts and the dates the paperwork allows

GET/v1/travel/journeys/{journey_ref}/nursing/shiftstravel.nursing.read

Parameters

journey_refpath · stringrequired
startquery · string | null
endquery · string | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/shifts" \
  -H "Authorization: Bearer $TOKEN"

Plan a nursing shift (refused outside the newest LOG's dates or in a pause)

POST/v1/travel/journeys/{journey_ref}/nursing/shiftstravel.nursing.write

nursing_authorization.create_shift. The server's gate: 409 nursing_no_log (no LOG at all), 409 shift_outside_log (outside the newest LOG's dates and any exception start; a lapsed LOG escalates to the desk at once), 409 nursing_paused, 409 shift_overlap (the same nurse elsewhere), 422 shift_nurse_not_on_team.

Parameters

journey_refpath · stringrequired

Request body

Content type: application/json (required)

nurse_staff_refstringrequired

A nurse or escort nurse on the care team (GET .../team).

start_localstringrequired

Wall clock where the nursing happens.

end_localstringrequired
tzstring | null

IANA zone (default: the case's).

notestring | null
confirmedboolean

Errors specific to this call

409shift_outside_log409nursing_paused409shift_overlap422shift_nurse_not_on_team

All responses

201Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/shifts" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "nurse_staff_ref": "string",
    "start_local": "2026-10-12T08:00",
    "end_local": "2026-10-12T20:00",
    "tz": "string",
    "note": "string",
    "confirmed": false
  }'

Confirm or cancel a shift (cancel needs a reason)

POST/v1/travel/journeys/{journey_ref}/nursing/shifts/{shift_ref}/statustravel.nursing.write

Parameters

journey_refpath · stringrequired
shift_refpath · stringrequired

Request body

Content type: application/json (required)

statusstringrequired

confirmed | cancelled

reasonstring | null

Required to cancel.

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/shifts/$SHIFT_REF/status" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "cancelled",
    "reason": "string"
  }'

Scheduled and delivered minutes against the LOMN and the LOG, by day, week and span

GET/v1/travel/journeys/{journey_ref}/nursing/hours-checktravel.nursing.read

Parameters

journey_refpath · stringrequired
startquery · string | null
endquery · string | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/hours-check" \
  -H "Authorization: Bearer $TOKEN"

Visit records: nurses' notes with vitals, medication administration, incidents (read only)

GET/v1/travel/journeys/{journey_ref}/nursing/visitstravel.nursing.read

home_nursing_records.care_record_summary over case-local days (default the last 14). A scheduled dose with nothing recorded is `not_recorded`, never "missed". Written in Norvya by the nurse on the care team; a partner system does not write them. Items carry an item_ref for translation.

Parameters

journey_refpath · stringrequired
startquery · string | null
endquery · string | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/visits" \
  -H "Authorization: Bearer $TOKEN"

Patient and family satisfaction survey results for the case

GET/v1/travel/journeys/{journey_ref}/nursing/surveystravel.nursing.read

Every response with plain averages (the desk's own quality questions, not a validated instrument). A comment the crisis path flagged is withheld (comment_withheld: crisis_path).

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/surveys" \
  -H "Authorization: Bearer $TOKEN"

A sponsor referral's status: consent basis, documented consent, claim of the account

GET/v1/travel/journeys/{journey_ref}/referraltravel.nursing.read

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/referral" \
  -H "Authorization: Bearer $TOKEN"

Send a sponsor's home-nursing referral for a patient without the app

POST/v1/travel/referralstravel.nursing.write

nursing_referral.create_ipc_referral: a MANAGED patient account (nobody can sign in; nothing is sent to it), linked to your desk, and a nursing case keyed to the PRN, status referral_received. The case is consent `pending` on the documented basis: NOTHING moves on it until desk staff record the patient's signed consent form in Norvya (or the patient claims the account and accepts in the app). 409 prn_taken. In a sandbox the account is labelled synthetic and no contact is stored.

Request body

Content type: application/json (required)

sponsor_referencestringrequired

The sponsor's PRN (unique per desk).

full_namestringrequired
date_of_birthstringrequired
care_countrystringrequired

US | ES | GB

care_statestring | null

US state (required for US).

sexstring | null

female | male | other | unknown

emailstring | null

Held sealed for the patient's later claim of the account; nothing is sent. Ignored in a sandbox.

phonestring | null

As email.

diagnosis_summarystring | null
languagestring | null
sponsor_namestring | null
origin_countrystring | null
received_onstring | null

Errors specific to this call

409prn_taken

All responses

201Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/referrals" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "sponsor_reference": "IPC-26-1005",
    "full_name": "string",
    "date_of_birth": "string",
    "care_country": "GB",
    "care_state": "FL",
    "sex": "string",
    "email": "string",
    "phone": "string",
    "diagnosis_summary": "string",
    "language": "string",
    "sponsor_name": "string",
    "origin_country": "AE",
    "received_on": "string"
  }'

The journey's HL7 International Patient Summary (FHIR document Bundle)

GET/v1/travel/journeys/{journey_ref}/ipstravel.documents.read

care_journey.ips_from_packet over the coordinator's consent-scoped packet (fhir_export.patient_bundle -> fhir_export.ips_document; never a second builder). Withheld sections are marked, not empty. 403 care_journey_handoff_not_shared; 503 care_journey_bundle_unavailable.

Parameters

journey_refpath · stringrequired

Errors specific to this call

503care_journey_bundle_unavailable

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/ips" \
  -H "Authorization: Bearer $TOKEN"

The repatriation packet: the FHIR collection bundle plus the travel context

GET/v1/travel/journeys/{journey_ref}/repatriation-packettravel.documents.read

What the patient carries home, as the desk may see it: consent-scoped per resource type (medications need share_medications, labs share_labs, vitals share_biometrics...); what was withheld is named in consent_excluded.

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/repatriation-packet" \
  -H "Authorization: Bearer $TOKEN"

The bilingual readable summary for the clinician at home (pdf or accessible html)

GET/v1/travel/journeys/{journey_ref}/summary/{fmt}travel.documents.read

Parameters

journey_refpath · stringrequired
fmtpath · stringrequired
langquery · string | null

The second language (default: the journey's primary language; en = English only).

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/summary/$FMT" \
  -H "Authorization: Bearer $TOKEN"

The weekly nursing reports for the case (drafts, sent, every version)

GET/v1/travel/journeys/{journey_ref}/nursing/reportstravel.documents.read

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/reports" \
  -H "Authorization: Bearer $TOKEN"
Response 200
{
  "items": [
    {}
  ],
  "count": 0
}

The response is the shape from the schema, not live data.

Download a weekly nursing report (pdf or accessible html, in a chosen language)

GET/v1/travel/journeys/{journey_ref}/nursing/reports/{report_ref}/{fmt}travel.documents.read

Parameters

journey_refpath · stringrequired
report_refpath · stringrequired
fmtpath · stringrequired
langquery · string | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/reports/$REPORT_REF/$FMT" \
  -H "Authorization: Bearer $TOKEN"

Your desk's monthly home-nursing invoices across cases

GET/v1/travel/invoicestravel.billing.read

One invoice per PRN per calendar month, built from approved timesheets against the LOG (nursing_reports). Newest first, at most 500. Norvya does not send or collect them.

Parameters

statusquery · string | null

draft | issued | void

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/invoices" \
  -H "Authorization: Bearer $TOKEN"
Response 200
{
  "items": [
    {}
  ],
  "count": 0
}

The response is the shape from the schema, not live data.

The case's monthly invoices

GET/v1/travel/journeys/{journey_ref}/nursing/invoicestravel.billing.read

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/invoices" \
  -H "Authorization: Bearer $TOKEN"
Response 200
{
  "items": [
    {}
  ],
  "count": 0
}

The response is the shape from the schema, not live data.

One invoice with its lines (care, overage, exception, outside, pause) and hold flags

GET/v1/travel/journeys/{journey_ref}/nursing/invoices/{invoice_ref}travel.billing.read

Money is integer minor units with an ISO 4217 code (exponent given); hours are minutes. Hours over the LOG are their own held `overage` line.

Parameters

journey_refpath · stringrequired
invoice_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/invoices/$INVOICE_REF" \
  -H "Authorization: Bearer $TOKEN"

Download an invoice (pdf or accessible html, in a chosen language)

GET/v1/travel/journeys/{journey_ref}/nursing/invoices/{invoice_ref}/{fmt}travel.billing.read

Parameters

journey_refpath · stringrequired
invoice_refpath · stringrequired
fmtpath · stringrequired
langquery · string | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/nursing/invoices/$INVOICE_REF/$FMT" \
  -H "Authorization: Bearer $TOKEN"

Machine-translate one free-text item on the journey

POST/v1/travel/journeys/{journey_ref}/translationstravel.translations.write

translation_items: the saved translation is served again for the same source text (free, identical); a new one writes a chained AI_INFERENCE audit row. Needs the scope that reads the item as well (travel.nursing.read for nursing items, travel.billing.read for an invoice's reasons). A translation that could not be validated is status `failed` with a reason, not an error; legal_reference_only items (a LOMN) are a reading aid, never the document. 503 translation_disabled.

Parameters

journey_refpath · stringrequired

Request body

Content type: application/json (required)

item_typestringrequired

care_journey | shift_note | mar_entry | incident | nursing_lomn | nursing_pause | nursing_shift | nursing_invoice

item_refstringrequired

The item's item_ref (a journey_ref for care_journey).

fieldstring | null

Default: the item type's first free-text field.

target_languagestringrequired

Errors specific to this call

503translation_disabled

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/translations" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "item_type": "shift_note",
    "item_ref": "string",
    "field": "string",
    "target_language": "ar"
  }'

Your desk's travel inquiries (open emergencies first, then newest)

GET/v1/travel/inquiriestravel.inquiries.read

travel_coordination.list_inquiries (the desk screen's list), at most 500; `counts` by status across the desk.

Parameters

statusquery · string | null
external_idquery · string | null

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/inquiries" \
  -H "Authorization: Bearer $TOKEN"

Create an inquiry from your CRM (by your own id)

POST/v1/travel/inquiriestravel.inquiries.write

travel_coordination.create_inquiry: status `new`, attributed to your system (never a person). A member_ref links a patient on your roster.

Request body

Content type: application/json (required)

external_idstring | null

Your CRM's id for the inquiry (unique per desk; 409 inquiry_external_id_taken).

contact_namestringrequired
origin_countrystringrequired
contact_detailstring | null

Kept for the desk; Norvya sends nothing to it.

primary_languagestring
interpreter_requiredboolean
condition_summarystring | null

Your coordinator's words; never coded or interpreted.

sponsor_typestring | null
sponsor_namestring | null
member_refstring | null

A patient on your active roster (needed for an in-app quote and to convert).

All responses

201Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/inquiries" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "CRM-2026-00417",
    "contact_name": "string",
    "origin_country": "AE",
    "contact_detail": "string",
    "primary_language": "ar",
    "interpreter_required": false,
    "condition_summary": "string",
    "sponsor_type": "government",
    "sponsor_name": "string",
    "member_ref": "string"
  }'

One inquiry with its status history and quote versions

GET/v1/travel/inquiries/{inquiry_ref}travel.inquiries.read

Parameters

inquiry_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/inquiries/$INQUIRY_REF" \
  -H "Authorization: Bearer $TOKEN"

Edit an open inquiry, or link / unlink the patient

PATCH/v1/travel/inquiries/{inquiry_ref}travel.inquiries.write

travel_coordination.update_inquiry + link_patient (409 inquiry_closed once declined or converted).

Parameters

inquiry_refpath · stringrequired

Request body

Content type: application/json (required)

contact_namestring | null
contact_detailstring | null
origin_countrystring | null
primary_languagestring | null
interpreter_requiredboolean | null
condition_summarystring | null
sponsor_typestring | null
sponsor_namestring | null
member_refstring | null

Link a patient on your roster; an empty string unlinks. Refused once a quote exists (409 inquiry_already_quoted).

Errors specific to this call

409inquiry_closed

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X PATCH "https://norvya.fly.dev/v1/travel/inquiries/$INQUIRY_REF" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "contact_name": "string",
    "contact_detail": "string",
    "origin_country": "string",
    "primary_language": "string",
    "interpreter_required": false,
    "condition_summary": "string",
    "sponsor_type": "string",
    "sponsor_name": "string",
    "member_ref": "string"
  }'

Move an inquiry (the desk's own moves: reviewing, accepted, declined)

POST/v1/travel/inquiries/{inquiry_ref}/statustravel.inquiries.write

travel_coordination.move: only the moves the desk's screen allows from the current status (409 inquiry_move_not_allowed).

Parameters

inquiry_refpath · stringrequired

Request body

Content type: application/json (required)

to_statusstringrequired

A status in next_statuses (quoted comes from issuing a quote, converted from convert).

reasonstring | null

Kept when declining.

Errors specific to this call

409inquiry_move_not_allowed

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/inquiries/$INQUIRY_REF/status" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "to_status": "reviewing",
    "reason": "string"
  }'

Issue the first quote or a revision (an immutable Good Faith Estimate version)

POST/v1/travel/inquiries/{inquiry_ref}/quotetravel.inquiries.write

travel_coordination.issue_quote -> good_faith_estimate.issue: hashed, kept six years; a revision supersedes, never overwrites. In the app when the inquiry was linked to a patient before the first quote, otherwise recorded as e-mail delivery (your desk sends it; Norvya does not). Norvya never chooses a code or a price and takes no payment.

Parameters

inquiry_refpath · stringrequired

Request body

Content type: application/json (required)

payloadobjectrequired

The Good Faith Estimate contents, as the desk's quote form: convening_npi, convening_tin, convening_location, convening_state, diagnosis_codes, lines[{description, service_code, code_type, quantity, expected_charge}], note. 422 required_contents_missing lists what is missing.

primary_servicestring | null

Needed for the first quote.

recipient_dobstring | null

Default: the linked patient's date of birth.

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/inquiries/$INQUIRY_REF/quote" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": {},
    "primary_service": "string",
    "recipient_dob": "string"
  }'

Convert an accepted inquiry to a care journey (waits for the patient's acceptance)

POST/v1/travel/inquiries/{inquiry_ref}/converttravel.inquiries.write

travel_coordination.convert_inquiry — the function the desk's Convert button calls: 409 inquiry_not_accepted / inquiry_patient_not_linked; the journey is coordinator-opened, so the patient is asked in the app (generic push) and every journey write answers 409 care_journey_consent_pending until they accept. Needs travel.journeys.write as well.

Parameters

inquiry_refpath · stringrequired

Request body

Content type: application/json

destination_countrystring
treating_facilitystring | null
planned_arrivalstring | null

Errors specific to this call

409inquiry_not_accepted409care_journey_consent_pending

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/inquiries/$INQUIRY_REF/convert" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "destination_country": "string",
    "treating_facility": "string",
    "planned_arrival": "string"
  }'

The journey's in-app thread (desk, patient, approved caregiver)

GET/v1/travel/journeys/{journey_ref}/messagestravel.messages.read

The thread the desk's staff read in Norvya (travel_coordination.thread_rows), oldest first, the last 200. The patient and caregiver are sender_role only, never named; `mine` marks your own client's messages. A message sent with "write in mine, send in theirs" carries the translation the sender previewed.

Parameters

journey_refpath · stringrequired

All responses

200Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/messages" \
  -H "Authorization: Bearer $TOKEN"

Post in the journey's thread as your desk's system

POST/v1/travel/journeys/{journey_ref}/messagestravel.messages.write

travel_coordination.post: shown in Norvya as "Partner system: <your client's label>", never as a person. The patient, the linked caregiver and desk staff who wrote on the thread get Norvya's generic "new message" push (no content on the lock screen). 409 care_journey_consent_pending until the patient accepts; 409 journey_closed once closed.

Parameters

journey_refpath · stringrequired

Request body

Content type: application/json (required)

bodystringrequired

Plain text, sent as typed (no machine translation through the API).

Errors specific to this call

409care_journey_consent_pending409journey_closed

All responses

201Successful Response401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity429Too Many Requests503Service Unavailable

Codes every call can return are in Errors & limits.

curl -s -X POST "https://norvya.fly.dev/v1/travel/journeys/$JOURNEY_REF/messages" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "string"
  }'

Webhook events

Payloads carry no health data, only a reference to fetch with your token. Each event needs its scope as well as webhooks.manage. Signing and retries

EventScopeWhen
travel.inquiry_updatedtravel.inquiries.readAn inquiry of the desk was created (in Norvya, through the API or from a hospital's request link) or changed status, including a new quote version and conversion.
travel.invoice_issuedtravel.billing.readA monthly nursing invoice was issued.
travel.journey_message_postedtravel.messages.readSomeone wrote in a journey's thread: the patient, their caregiver, desk staff in Norvya or another of your clients.
travel.journey_updatedtravel.journeys.readA journey of the desk was opened, accepted or declined, moved a phase, or its nursing status changed.
travel.leg_status_changedtravel.journeys.readA flight or transfer was added, changed status or was cancelled.
travel.nursing_visit_recordedtravel.nursing.readA nurse recorded a visit note.

Generated from the Partner API router and developers_catalog.py. The router docstring is the source of each description.

↑ ↓ to moveEnter to open