{
 "info": {
  "name": "Norvya Partner API v1 (sandbox)",
  "description": "Generated from https://norvya.health/developers/openapi-v1.json. Set clientId and clientSecret to your SANDBOX credentials (client ids start nvy_sbx_), send Platform > the token request, and the token variable is filled for every other request. Sandbox and production share the base URL; the credential decides the environment. Do not store production secrets in a shared workspace.",
  "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
 },
 "auth": {
  "type": "bearer",
  "bearer": [
   {
    "key": "token",
    "value": "{{token}}",
    "type": "string"
   }
  ]
 },
 "variable": [
  {
   "key": "baseUrl",
   "value": "https://norvya.fly.dev",
   "type": "string"
  },
  {
   "key": "clientId",
   "value": "nvy_sbx_your_client_id",
   "type": "string"
  },
  {
   "key": "clientSecret",
   "value": "",
   "type": "string"
  },
  {
   "key": "token",
   "value": "",
   "type": "string"
  }
 ],
 "item": [
  {
   "name": "Platform",
   "description": "Tokens, your member list, and your own usage. Every integration starts here. EMR vendors use one credential for every practice that approves them in Norvya: GET /v1/practices lists those practices, and a token is requested per practice.",
   "item": [
    {
     "name": "Exchange client credentials for a bearer token",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/oauth/token",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "oauth",
        "token"
       ]
      },
      "description": "OAuth2 client_credentials (RFC 6749 §4.4). Credentials in the form body\nor HTTP Basic. The token lives 15 minutes, carries the client's clinic and\nscopes, and stops working at once if the client is revoked.",
      "body": {
       "mode": "urlencoded",
       "urlencoded": [
        {
         "key": "grant_type",
         "value": "client_credentials"
        },
        {
         "key": "client_id",
         "value": "{{clientId}}"
        },
        {
         "key": "client_secret",
         "value": "{{clientSecret}}"
        },
        {
         "key": "scope",
         "value": ""
        }
       ]
      },
      "auth": {
       "type": "noauth"
      }
     },
     "event": [
      {
       "listen": "test",
       "script": {
        "type": "text/javascript",
        "exec": [
         "// Saves the access token for every other request in this collection.",
         "if (pm.response.code === 200) { pm.collectionVariables.set(\"token\", pm.response.json().access_token); }"
        ]
       }
      }
     ]
    },
    {
     "name": "List your organisation's linked members",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members"
       ]
      },
      "description": "Active members linked to your organisation, as opaque member_refs (plus\nyour own id when the member is linked through a system sync). Nothing else\nabout the member is returned here."
     }
    },
    {
     "name": "Your client's call counts, last 30 days",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/usage",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "usage"
       ]
      },
      "description": "Calls and errors per endpoint per UTC day for the calling client, for\nusage-based pricing. Counts every authenticated call, including refusals\n(counted in errors)."
     }
    },
    {
     "name": "EMR vendors: the practices that approved your integration",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practices",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practices"
       ]
      },
      "description": "Every practice with an ACTIVE approval of your integration: its\npractice_ref (ask POST /v1/oauth/token for practice=<practice_ref>), its\nname, the scopes it approved and when. Nothing else about the practice and\nnothing about its patients. Needs a vendor-level token (requested without\npractice); a practice-bound token gets 403 insufficient_scope."
     }
    }
   ]
  },
  {
   "name": "Fitness intelligence",
   "description": "Ranked, gym-safe actions for a trainer (what to program, how hard to push, which movements to avoid), an at-risk roster across your members, and a way to ask Norvya to send a member its standard re-engagement nudge. A member's training (workouts, estimated one-rep max per lift, weekly hard sets against volume landmarks, the load ratio, and a readiness band only while wearables are shared), your trainers' notes both ways (attributed to your system, never to a person), and your gym's retention and engagement-versus-results as counts with small cells withheld. Never names a diagnosis, medicine or reading.",
   "item": [
    {
     "name": "Trainer guidance for one member",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/guidance",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "guidance"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Ranked, gym-safe actions for a trainer: what to program, how hard to\npush, what to avoid. Filtered by what the member shares with your\norganisation; never names a diagnosis, medication, lab value or reading.\n404 member_not_found for anyone who is not your active member."
     }
    },
    {
     "name": "At-risk roster: your members ranked for a trainer's attention",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/at-risk",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        "at-risk"
       ]
      },
      "description": "Your active members ranked for attention: churn risk (from club visits\nwhen your booking system is linked, else app activity), gym-safe flags and\nthe one priority action from trainer guidance. Each member's sharing\nswitches for your organisation apply: without activity sharing a member has\nno churn, no last-active date and no activity flags. Never a diagnosis,\nmedication, lab value or reading. One chained audit row per call names the\nmembers returned. 404 member_not_found for a member_ref that is not yours."
     }
    },
    {
     "name": "Ask Norvya to send a member its re-engagement push",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/nudge",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "nudge"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Norvya sends its standard re-engagement push (\"We miss you at the gym\" /\n\"N days since your last session\", opening Gym Mode) — Norvya's wording,\nnever yours: the optional reason is one of a fixed list and is only\nrecorded. At most one nudge per member per 14 days (the same dedup as the\nin-app trainer button and Norvya's own retention job), and the member's\nnotification limits apply. {sent: false, reason} explains a skip:\nrecently_nudged, no_device_token, not_sharing_activity, suppressed,\nsend_failed, in_progress. Gym, fitness and personal-training organisations\nonly (409 not_a_fitness_organisa",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"reason\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A member's training: workouts, estimated 1RM per lift, weekly sets, load",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/training",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "training"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "What the member's own Progress card shows, for their trainer: completed\nworkouts, estimated one-rep max per lift with its trend and series, weekly\nhard sets per muscle group against the volume landmarks, and the\ntraining-load ratio, while the member shares activity with you. The\nreadiness band (ready / caution / rest) only while they share wearables;\nthe recovery score behind it, and any reading, diagnosis or medicine,\nnever. withheld lists what the member keeps from you."
     }
    },
    {
     "name": "Member retention against your own baseline (aggregate, small cells withheld)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/gym/retention",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "gym",
        "retention"
       ]
      },
      "description": "Active in 7 / 30 days, a weekly active trend (8 weeks), and the share of\nmembers still active 4, 8 and 12 weeks after joining, against the\npre-Norvya retention baseline your organisation entered in Norvya. Members\nwho do not share activity are counted only as not_sharing. Counts from 1\nto min_cell - 1 are withheld (complementary cells too). The windows are the\nengine's fixed ones; there is no period parameter."
     }
    },
    {
     "name": "Do your more-engaged members get better results? (aggregate)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/gym/engagement-vs-results",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "gym",
        "engagement-vs-results"
       ]
      },
      "description": "Members who share activity and body composition, split at the median\nnumber of active days over 90 days, with each tier's average fat-loss\nquality score and weight lost. Locked (available false, reason building)\nuntil 10 members share; a tier with fewer than 5 members with the outcome\nis not compared. An association, not proof."
     }
    },
    {
     "name": "Your trainers' notes about a member",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/trainer-notes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "trainer-notes"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Notes written by your trainers in Norvya's gym screen or through this\nAPI, newest first (at most 200). The member does not see trainer notes.\nAuthors' names are not returned."
     }
    },
    {
     "name": "Add a trainer note about a member",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/trainer-notes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "trainer-notes"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "A plain-text training note (at most 2000 characters), kept as your\norganisation's record and shown to your trainers in Norvya's gym screen;\nthe member does not see it. Training notes only: do not record medical\ninformation. Attributed in Norvya to this client (shown to trainers as\n\"Partner system: <client name>\"), never to a person.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"text\": \"Form check on squat: depth improving. Add 5 lb next session.\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    }
   ]
  },
  {
   "name": "Clinical intelligence",
   "description": "For treating practices: the pre-visit brief, the ranked panel worklist with the evidence and guideline behind each item, care gaps, and between-visit signals the patient chose to share. Write-back: triage a worklist item (assign it to a clinician from GET /v1/panel/clinicians, snooze, dismiss or mark done) and close the loop on results and referrals (acknowledge, act, tell the patient, close). Validated questionnaires (PHQ-9, GAD-7 and the rest of Norvya's instrument registry, English items unless an official translation exists) requested from your system and scored server-side; a response that trips a crisis item shows the member crisis resources first and alerts staff, and is never routed to coaching or an AI path. Caseload questionnaire batches (one instrument to a member list or a cohort filter, asynchronous, with a suppressed aggregate) and clinician-rated measures a named clinician assigned. Specialty hub results and the stateless spirometry, lung-cancer screening and GI alarm checks are their own family: Specialty care.",
   "item": [
    {
     "name": "Clinician pre-visit brief for one patient",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/brief",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "brief"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The pre-visit brief (longevity, labs, body composition, GLP-1, progress,\nlife-stage care) for a patient of YOUR medical practice. Each section\nfollows the patient's sharing switches for your practice; withheld sections\nare never computed and are listed in withheld_by_consent. 409\nnot_a_medical_practice for a gym or other non-practice organisation."
     }
    },
    {
     "name": "Your practice's ranked worklist: who needs attention and why",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/worklist",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "worklist"
       ]
      },
      "description": "The latest COMPLETED current-data worklist run for your practice, ranked\nby the transparent priority score (no model, no hidden weights). Each\nfinding carries its rule code, severity, the evidence it used and its\npublished guideline. Only members still actively linked; read through the\nclinic data basis (what the practice may use; member home data only for the\ntypes the member shares with you). Triage states ARE applied (since Wave\nA3, the staff worklist's rules: worklist_triage.apply): addressed,\ndismissed and snoozed findings are hidden unless include_triaged=true,\nescalated / reappeared / e"
     }
    },
    {
     "name": "Start a worklist run for your practice",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/worklist/runs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "worklist",
        "runs"
       ]
      },
      "description": "Queues a run over every active patient of your practice (background).\nPoll GET /v1/panel/worklist/runs/{id}, or subscribe to the\nworklist.run_completed webhook. One run at a time per practice (409\npanel_worklist_run_in_progress); 409 panel_worklist_no_patients for an\nempty panel. The run is recorded as started by your client (chained audit\nrow) — runs started by a partner do not opt the practice into the nightly\nrefresh, which follows staff use."
     }
    },
    {
     "name": "Status of one worklist run",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/worklist/runs/:run_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "worklist",
        "runs",
        ":run_id"
       ],
       "variable": [
        {
         "key": "run_id",
         "value": ""
        }
       ]
      },
      "description": "Counts and progress only (no patient rows). 404 panel_worklist_run_not_found\nfor a run that is not your practice's."
     }
    },
    {
     "name": "Care gaps for one patient",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/care-gaps",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "care-gaps"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The practice care-gap rules (colorectal and breast screening, kidney\nhealth and HbA1c in diabetes, statin in diabetes), each with its status,\ndates, evidence and guideline citation, evaluated on what YOUR practice may\nuse for this patient (clinic data basis: the patient's sharing switches, or\nyour own records under practice-of-record with a BAA). Nothing is assumed:\na missing input is insufficient_data, never a guess."
     }
    },
    {
     "name": "Between-visit signals from the patient's own home data",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/between-visit",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "between-visit"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Signals (home BP vs office, resting heart rate, sleep, activity, CGM time\nin range, at-home labs) computed ONLY from the data types the patient has\nswitched on for your practice (home_bp, wearables, home_labs, cgm; default\noff; read live, so turning one off removes it from the next call). Every\nsignal is member-reported, never practice-confirmed and cites its source."
     }
    },
    {
     "name": "Your practice's clinicians, as staff_ref values",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/clinicians",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "clinicians"
       ]
      },
      "description": "The active clinical staff of your practice (admin, provider,\npharmacist, therapist) as staff_ref values with name and role, to map your\nown users to: result writes name the clinician who did it. Staff names are\nnot patient data. Needs clinical.loops.write or clinical.panel.write."
     }
    },
    {
     "name": "Triage one worklist finding (addressed, snoozed, dismissed or reopened)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/worklist/items/:item_ref/triage",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "worklist",
        "items",
        ":item_ref",
        "triage"
       ],
       "variable": [
        {
         "key": "item_ref",
         "value": ""
        }
       ]
      },
      "description": "The same states and rules as Norvya's worklist screen (worklist_triage):\naddressed and dismissed need a reason_code; snoozed needs snooze_until\n(or snooze_days) and comes back on that date; open reopens. A later run at\na HIGHER severity, or the finding coming back after it cleared, reopens it\nautomatically. The change is recorded with your client as the actor and\nis visible to staff at once. 404 worklist_item_not_found for a ref that is\nnot in your latest worklist run; 422 worklist_reason_required,\nworklist_invalid_reason, worklist_note_required_for_other,\nworklist_snooze_until_required, workl",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"state\": \"addressed\",\n  \"reason_code\": \"addressed_in_visit\",\n  \"note\": \"string\",\n  \"snooze_until\": \"2026-11-15\",\n  \"snooze_days\": 0\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's results awaiting follow-up (acknowledge, inform, act, close)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/results",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "results"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The patient's items in your practice's result follow-up inbox, oldest\nfirst: what arrived, whether a clinician acknowledged it, whether the\npatient was told, the action recorded, and the overdue clocks. A pointer,\nnever the value: fetch the value from its source. A flag is carried only\nwhen a source supplied it (flag_origin says which kind). Only results the\npatient still shares with you."
     }
    },
    {
     "name": "Record that a named clinician acknowledged a result",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/results/:result_ref/acknowledge",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "results",
        ":result_ref",
        "acknowledge"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "result_ref",
         "value": ""
        }
       ]
      },
      "description": "The clinician named by `clinician` saw it. NOT notification of the\npatient (that is /informed). Re-acknowledging keeps the first record.\n409 already_closed; 422 clinician_not_found.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_1a2b3c4d5e6f7a8b9c0d1e2f\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record that the patient was told",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/results/:result_ref/informed",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "results",
        ":result_ref",
        "informed"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "result_ref",
         "value": ""
        }
       ]
      },
      "description": "By the named clinician, by `method`. 422 invalid_inform_method.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_1a2b3c4d5e6f7a8b9c0d1e2f\",\n  \"note\": \"string\",\n  \"method\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record the action taken on a result",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/results/:result_ref/action",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "results",
        ":result_ref",
        "action"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "result_ref",
         "value": ""
        }
       ]
      },
      "description": "What was done, in the clinician's words, and what kind of thing it\nwas. 422 action_text_required, invalid_action_link_kind.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"action_taken\": \"string\",\n  \"link_kind\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Close the loop on a result",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/results/:result_ref/close",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "results",
        ":result_ref",
        "close"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "result_ref",
         "value": ""
        }
       ]
      },
      "description": "Refused until a clinician acknowledged it (409 acknowledge_first) and,\nfor a flagged result, the patient was told (409 patient_not_informed) and\nan action recorded (409 action_not_recorded).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"reason\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Referrals your practice tracks for a patient, with their loop status",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/referrals",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "referrals"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Each tracked referral's status, stage, the dates recorded, how each\nfact was established, and the overdue clocks your practice set. No record\nof an appointment is not a record that none was made."
     }
    },
    {
     "name": "Move a tracked referral (scheduled, seen, report received, completed, ...)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/referrals/:referral_ref/status",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "referrals",
        ":referral_ref",
        "status"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "referral_ref",
         "value": ""
        }
       ]
      },
      "description": "Through referral_loop's own functions and transition table (422\ninvalid_transition:<from>-><to>). scheduled / seen need occurred_on;\nreport_received needs report_source and the report text or your\ndocument_ref; completed (the referring provider has the outcome) needs a\nreport on file (409 no_report_to_send). Recorded with source\npractice_system.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"status\": \"scheduled\",\n  \"occurred_on\": \"2026-11-02\",\n  \"note\": \"string\",\n  \"report_source\": \"string\",\n  \"report\": \"string\",\n  \"document_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Questionnaires you may request",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/instruments",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "instruments"
       ]
      },
      "description": "Norvya's validated instrument library (scored server-side), with the\nversion, the licence record and whether the wording is English-only.\n`clinician_rated` lists the clinician-rated measures (recorded with POST\n/v1/patients/{member_ref}/clinician-ratings where recordable);\n`not_requestable` lists every other questionnaire Norvya supports with\nthe reason (parent-completed child screens, feature flows with their own\nred-flag checks, licences this deployment does not hold, specialty-hub\nchecks, crisis triage checks). Treating practices only;\ninstruments.request or instruments.read."
     }
    },
    {
     "name": "Ask a patient to complete a questionnaire",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/instrument-requests",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "instrument-requests"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Norvya sends its own generic notification (\"Questionnaire from your\ncare team\"; no instrument name in the push) and shows the questionnaire in\nthe app. The patient answers in Norvya, never through this API, so a crisis\nanswer reaches the patient's crisis resources and your staff first.\nIdempotent with external_id. 409 member_not_accepting_requests when the\npatient muted your organisation.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"instrument_id\": \"phq9\",\n  \"external_id\": \"ORD-55120\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's questionnaire scores",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/instrument-responses",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "instrument-responses"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Total, severity band, positive-screen flag and subscales with the\ninstrument version and completion time. Never item-level answers.\nMental-health questionnaires only while the patient shares mental health\nwith you, others while they share medical history; pending requests are\nyours only. crisis_flag true means Norvya's crisis gate fired in the app:\nfollow your practice's crisis protocol (crisis_guidance)."
     }
    },
    {
     "name": "Sandbox: make a synthetic patient complete a requested questionnaire",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/instrument-requests/:response_ref/simulate-completion",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "instrument-requests",
        ":response_ref",
        "simulate-completion"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "response_ref",
         "value": ""
        }
       ]
      },
      "description": "Sandbox organisations only (404 elsewhere). Scored server-side like a\nreal submission; crisis_example (PHQ-9) shows what a crisis-flagged\nresponse looks like. No notification or push is sent; your\ninstrument.completed webhook fires as it would live.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"answers\": [\n    0\n  ],\n  \"crisis_example\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record a clinician-rated measure a named clinician assigned",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/clinician-ratings",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "clinician-ratings"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The measures Norvya lets a practice's staff enter (GET /v1/instruments\nclinician_rated[] with recordable true: today the Nine-Hole Peg Test and\nFOIS), scored by Norvya and stored exactly as the staff screen stores them,\nattributed to the clinician you name (an active clinical staff member of\nyour practice; 422 clinician_not_found). The patient must share their\nmedical history with you (409 member_not_sharing).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"instrument_id\": \"fois\",\n  \"values\": [\n    5\n  ],\n  \"clinician\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Ask a caseload to complete a questionnaire",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/instrument-requests/batch",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "instrument-requests",
        "batch"
       ]
      },
      "description": "One requestable instrument to up to 500 of your active members\n(member_refs) or a cohort: all_active, care_program (active enrolments in\none programme) or worklist_finding (patients with that finding in your\nlatest completed worklist run). Sent asynchronously with Norvya's own\ngeneric notification, one request per member (a member who already has\nyour request for it pending gets no second one; members who muted your\norganisation are refused). Each member answers in the app, where the\ncrisis gate runs first. Poll the status_url (batch_ref) or subscribe to\ninstrument.batch_dispatched; completion",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"instrument_id\": \"phq9\",\n  \"member_refs\": [\n    \"string\"\n  ],\n  \"cohort\": {\n    \"kind\": \"all_active\",\n    \"program\": \"string\",\n    \"code\": \"string\"\n  },\n  \"external_id\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your caseload batches, newest first",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/instrument-requests/batch",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "instrument-requests",
        "batch"
       ]
      },
      "description": "The batches THIS client started for your organisation (no member data)."
     }
    },
    {
     "name": "A caseload batch: progress and results",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/instrument-requests/batch/:batch_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "instrument-requests",
        "batch",
        ":batch_ref"
       ],
       "variable": [
        {
         "key": "batch_ref",
         "value": ""
        }
       ]
      },
      "description": "Progress (requested, already pending, refused, completed) and an\naggregate (completed, positive screens, crisis flags) with small cells\nwithheld. With instruments.read as well: the per-member list (member_ref,\noutcome, status, and the score band, positive screen and crisis_flag only\nwhere the member shares that instrument's results with you). crisis_flag\ntrue means the patient already saw crisis resources and your staff were\nnotified in Norvya: follow your crisis protocol (crisis_guidance)."
     }
    }
   ]
  },
  {
   "name": "Data in",
   "description": "Send your panel (a FHIR Bulk Data export, or a spreadsheet with a saved column mapping). You get a dry run first; patients are created only after commit, under a practice-of-record basis with a BAA on file.",
   "item": [
    {
     "name": "Stage a panel import and get its dry run",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/imports",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "imports"
       ]
      },
      "description": "Parses and stages the file (held encrypted; nothing reaches a live table)\nand returns the dry run. Identity is the MRN only — never a name or birth\ndate match. A spreadsheet is accepted ONLY when every sheet matches a\nmapping profile saved by your practice's admin in Norvya (no interactive\nmapping over the API): 422 panel_import_mapping_profile_required otherwise.\nMedical practice with a BAA on file only (409 not_a_medical_practice /\npanel_import_baa_required).",
      "body": {
       "mode": "formdata",
       "formdata": [
        {
         "key": "files",
         "type": "file",
         "src": []
        },
        {
         "key": "identifier_system",
         "value": "",
         "type": "text"
        }
       ]
      }
     }
    },
    {
     "name": "One panel import: dry run, progress, result",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/imports/:import_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "imports",
        ":import_id"
       ],
       "variable": [
        {
         "key": "import_id",
         "value": ""
        }
       ]
      },
      "description": "Imports made through the API by your practice only (404 panel_import_not_found otherwise)."
     }
    },
    {
     "name": "Commit a staged import",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/imports/:import_id/commit",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "imports",
        ":import_id",
        "commit"
       ],
       "variable": [
        {
         "key": "import_id",
         "value": ""
        }
       ]
      },
      "description": "Writes the import in the background (poll GET, or subscribe to\nimport.completed / import.failed). New MRNs become managed, login-disabled\npatient records under the practice-of-record basis. Refused (409) with the\ndry run's first blocking code (e.g. panel_import_date_format_unconfirmed,\npanel_import_nothing_to_import), panel_import_baa_required when no BAA is on\nfile NOW, panel_import_not_staged, panel_import_commit_in_progress. The BAA\nis checked again by the worker before the first write.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"run_worklist\": false,\n  \"create_possible_duplicates\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Discard a staged import",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/panel/imports/:import_id/discard",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "panel",
        "imports",
        ":import_id",
        "discard"
       ],
       "variable": [
        {
         "key": "import_id",
         "value": ""
        }
       ]
      },
      "description": "Deletes the held file; the manifest (counts, reasons, hash) stays."
     }
    }
   ]
  },
  {
   "name": "Events (webhooks)",
   "description": "Signed notifications: a member newly at high risk of leaving (gyms), a worklist run finishing, a patient newly needing attention, an import completing, a population export ready, a registry acknowledgement or a Reportability Response arriving, a patient's care-management time reaching a program's first published mark, an appointment booked or cancelled in Norvya (practices), a member joining, a member's message, a questionnaire completed, a worklist item triaged, a claims import completed, a social-needs screen completed or a community referral updated, an imported patient claiming their account, a caseload questionnaire batch dispatched, a hospital-at-home escalation, a pharmacy refill due or discharge follow-up opened, a care-site change of condition, medication incident or MAR exception, and a medical-travel inquiry, journey, journey message, flight leg, nursing visit or invoice update; and, from the specialty and programme families, a roster's enrolment numbers changing, a raised falls tier, a challenge ending, an occupational exam coming due, a med-spa adverse event, a rehab goal met, a dietitian caseload flag, a Collaborative Care review due, a lesion recheck due, a patch-test read and a hospice IDG review due. Payloads carry no health data, only a reference to fetch with your token.",
   "item": [
    {
     "name": "Your webhook endpoints",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/webhooks",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "webhooks"
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Register a webhook endpoint (secret shown once)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/webhooks",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "webhooks"
       ]
      },
      "description": "HTTPS only; the host must resolve to public addresses only (loopback,\nprivate, link-local / metadata, CGNAT and ULA ranges are refused, at\nregistration and again at every send; redirects are never followed).\nYour client must also hold the scope behind each event\n(worklist.* / patient.attention_needed: clinical.panel.read; import.*:\npanel.import.write; population.export_completed: population.export —\nthese are practice events, for medical practices only; patient.admitted /\npatient.discharged / patient.ed_visit: transitions.notices.read, treating\npractices and hospitals; transition.episode_enrol",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"url\": \"string\",\n  \"events\": [\n    \"string\"\n  ]\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Delete a webhook endpoint",
     "request": {
      "method": "DELETE",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/webhooks/:webhook_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "webhooks",
        ":webhook_id"
       ],
       "variable": [
        {
         "key": "webhook_id",
         "value": ""
        }
       ]
      },
      "description": "Pending deliveries are cancelled."
     }
    },
    {
     "name": "Re-enable a disabled webhook endpoint",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/webhooks/:webhook_id/enable",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "webhooks",
        ":webhook_id",
        "enable"
       ],
       "variable": [
        {
         "key": "webhook_id",
         "value": ""
        }
       ]
      },
      "description": "The URL is re-checked; the failure count resets. Deliveries cancelled\nwhile it was disabled are not re-sent."
     }
    },
    {
     "name": "Recent deliveries of one webhook endpoint",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/webhooks/:webhook_id/deliveries",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "webhooks",
        ":webhook_id",
        "deliveries"
       ],
       "variable": [
        {
         "key": "webhook_id",
         "value": ""
        }
       ]
      },
      "description": "Newest first: status, attempts, next retry, last HTTP status / error\nclass, and the (PHI-free) payload. Response bodies are never stored."
     }
    }
   ]
  },
  {
   "name": "EHR embedding: cards and chart documents",
   "description": "For EMR vendors and practices, with no EHR registration needed: find a patient's member_ref from your own MRN and date of birth, fetch the same CDS Hooks cards Norvya's hook service returns and render them natively, and get the pre-visit brief as a FHIR R4 DocumentReference to file in the chart. Medical practices only; each patient's sharing choices apply.",
   "item": [
    {
     "name": "Find a patient's member_ref from your MRN and date of birth",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/match",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        "match"
       ]
      },
      "description": "Returns the member_ref of the ONE active patient of your practice whose\nMRN in Norvya equals identifier.value AND whose date of birth equals\nbirth_date. identifier.system must be one your practice uses for its MRN\nin Norvya (its SMART or write-back registration) or\nurn:norvya:practice-mrn. Anything else (no match, several matches, a\nwrong birth date, an unknown system, someone else's patient) is the same\n404 member_not_found. Rate limited more tightly than other calls (429\nrate_limited); every call is audited (never with the identifier value or\nbirth date). Medical practices only (409 not_a_me",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"birth_date\": \"1968-05-01\",\n  \"identifier\": {\n    \"system\": \"urn:norvya:practice-mrn\",\n    \"value\": \"MRN-004211\"\n  }\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "CDS Hooks-format cards for one patient, to render in your own UI",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/cards",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "cards"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The cards Norvya's CDS Hooks service returns when this patient's chart\nis opened at your practice, as CDS Hooks 2.0 card objects, so you can\nrender them natively without registering a CDS Hooks service. A card is a\npointer: it names the record areas the patient shares with your practice,\nnever a value. The SMART launch link is included only when your practice\nhas an enabled SMART registration in Norvya. 404 member_not_found for\nanyone who is not your active patient; 409 not_a_medical_practice."
     }
    },
    {
     "name": "The pre-visit brief as a FHIR R4 DocumentReference, ready to file in your chart",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/brief/document",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "brief",
        "document"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The same consent-gated brief as GET .../brief (sections the patient\nhas not shared with your practice are never computed and are listed as\nnot shared), rendered as a plain FHIR R4 DocumentReference: text/plain\ninline (base64), LOINC 34133-9 Summary of episode note, docStatus\npreliminary (Norvya output for clinician review), no id and no vendor\nextensions. 409 not_a_medical_practice; 422 ehr_patient_id_invalid."
     }
    }
   ]
  },
  {
   "name": "Population",
   "description": "Your whole panel at once. Aggregate counts (panel size, worklist priority tiers, rising risk, care gaps by measure) with small-cell suppression: counts below the minimum cell are withheld, and so is any cell that could be recovered by subtraction. Five eCQM-style quality measures and the Million Hearts ABCS as suppressed rates; these are NOT a certified eCQM calculation. A QRDA Category III file for 2026 with true counts, not submission-validated, audited. Asynchronous FHIR Bulk Data export of the panel, identified (each patient's sharing choices apply) or HIPAA Safe Harbor de-identified, audited per file. Programme reporting: HRSA UDS tables and the UDS+ FHIR submission for health centres, EPSDT screening counts (explicitly not a CMS-416 report), social-needs screening and referral counts, and HEDIS only where your organisation holds an NCQA licence and uploaded its own measure definitions (Norvya ships no HEDIS logic). Medical practices and programme clinics only.",
   "item": [
    {
     "name": "Aggregate picture of your whole panel, small cells suppressed",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/summary",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "summary"
       ]
      },
      "description": "Panel size; patients by worklist priority tier and rising risk from the\nlatest completed worklist run (named, with when it finished); open care\ngaps by measure and gap code for the current measurement year. Counts\nonly: no member_refs, no ids, no free text. Every count from 1 to\nmin_cell - 1 is withheld, and further cells are withheld when one could\notherwise be recovered by subtracting from a total (the `suppression`\nfield says how). Medical practices only (409 not_a_medical_practice)."
     }
    },
    {
     "name": "Quality measures and Million Hearts ABCS for your panel (not certified)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/measures",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "measures"
       ]
      },
      "description": "Five eCQM-style measures (CMS165v14, CMS122v14, CMS2v15, CMS138v14,\nCMS69v14) and the CDC Million Hearts ABCS, as rates whose numerators and\ndenominators are withheld below min_cell (with complementary\nsuppression). `certified` is always false: this is NOT a certified eCQM\ncalculation (no CQL, no encounters; each measure lists `not_modelled`).\nThe measure identifiers are valid for the 2026 period only\n(`spec_version_valid`). 422 invalid_period / period_too_long."
     }
    },
    {
     "name": "QRDA Category III file for the 2026 period (true counts, not submission-validated)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/measures/qrda3",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "measures",
        "qrda3"
       ]
      },
      "description": "The QRDA III document from Norvya's quality-measures engine: TRUE\ncounts (a submission with suppressed counts would be invalid), labelled\nNOT SUBMISSION-VALIDATED, with no CMS EHR Certification ID (Norvya is not\nONC-certified). X-Norvya-Validation-Gaps lists what keeps it from\nvalidating. 2026 performance period only (422\nmeasure_version_unavailable). Every download is a chained PHI_EXPORT\naudit row and is refused (503) when the audit log is down."
     }
    },
    {
     "name": "Start an asynchronous FHIR Bulk Data export of your panel",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/population/exports",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "exports"
       ]
      },
      "description": "Queues an export of every active patient of your practice as one NDJSON\nfile per FHIR resource type (US Core-shaped, the same builders as\nNorvya's provider $export). deidentify=none: identified, each patient\nscoped by their sharing choices with your practice (and your own records\nunder practice-of-record with a BAA), exactly as the provider export.\ndeidentify=safe_harbor: HIPAA Safe Harbor (random per-export patient ids\nthat do not link across exports, dates reduced to the year, birth year\nomitted at 90+, three-digit ZIP, free text removed, record numbers\nremoved, DocumentReference left out), ",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"types\": [\n    \"string\"\n  ],\n  \"since\": \"string\",\n  \"deidentify\": \"none\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Status and manifest of one export",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/exports/:export_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "exports",
        ":export_id"
       ],
       "variable": [
        {
         "key": "export_id",
         "value": ""
        }
       ]
      },
      "description": "200 with `status` while it runs and once it ends; the manifest (FHIR\nBulk Data shape: output[{type, url, count}], requiresAccessToken,\ntransactionTime, plus `deidentified`) once completed. 404\nexport_not_found for an export another client or organisation started;\n410 export_expired / export_deleted."
     }
    },
    {
     "name": "Cancel or delete an export",
     "request": {
      "method": "DELETE",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/exports/:export_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "exports",
        ":export_id"
       ],
       "variable": [
        {
         "key": "export_id",
         "value": ""
        }
       ]
      },
      "description": "Cancels a running export or deletes a finished one's files. Idempotent\n(204 again for an export already deleted or expired)."
     }
    },
    {
     "name": "Download one NDJSON file of a completed export",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/exports/:export_id/files/:name",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "exports",
        ":export_id",
        "files",
        ":name"
       ],
       "variable": [
        {
         "key": "export_id",
         "value": ""
        },
        {
         "key": "name",
         "value": ""
        }
       ]
      },
      "description": "application/fhir+ndjson, one resource per line. Every download is a\nchained PHI_EXPORT audit row, written BEFORE the file is returned and\nrefused (503) when the audit log is down. 409 export_not_ready while it\nruns; 404 export_file_not_found; 410 once expired or deleted."
     }
    },
    {
     "name": "Social needs prevalence and closed-loop rates for your panel, small cells suppressed",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/social-needs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "social-needs"
       ]
      },
      "description": "Screening rate, any unmet need, each domain's positive rate (housing,\nfood, transportation, utilities), your referrals by status with the\nclosed and needs-met rates, and members with a need you have not\nreferred. Counts as cells, primary + complementary suppression; members\nwho do not share their medical history are counted, never examined."
     }
    },
    {
     "name": "HRSA UDS tables Norvya can contribute to (UDS-aligned, not validated), small cells suppressed",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/uds",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "uds"
       ]
      },
      "description": "Tables 3A, 3B, 4, 6A and the 6B / 7 measures Norvya computes, with\ncompleteness and what is out of scope, from uds_reporting. Labelled\n\"UDS-aligned, not validated in the EHBs/UDS+ test environment\". PRIMARY\nsmall-cell suppression only (the staff screen's rule; `suppression` says\nwhy); true counts only through /population/uds/export."
     }
    },
    {
     "name": "UDS tables with true counts (health centres; audited, fails closed)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/uds/export",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "uds",
        "export"
       ]
      },
      "description": "The staff export: TRUE counts (a UDS submission cannot carry suppressed\ncells). 409 uds_not_health_center unless your UDS settings declare a\nhealth centre. A chained PHI_EXPORT row first; 503 when the audit log is\ndown."
     }
    },
    {
     "name": "UDS+ patient-level FHIR export (health centres; audited, fails closed)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/uds-plus",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "uds-plus"
       ]
      },
      "description": "fhir_bulk.uds_plus_export (the one FHIR builder): one Patient per UDS\npatient under a per-clinic token, the patient's clinical resources within\ntheir sharing choices, 42 CFR Part 2 resources always withheld, the\nidentifier scan before release. Shaped to HRSA UDS+ FHIR IG 2.0.0 but NOT\nvalidated in HRSA's UDS+ test receiver (`profile_claimed` false). A\nchained PHI_EXPORT row first; 503 when the audit log is down; 500\nexport_identifier_detected if a direct identifier is found."
     }
    },
    {
     "name": "EPSDT components due now for the children of your panel (not a CMS-416), suppressed",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/epsdt",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "epsdt"
       ]
      },
      "description": "Children your practice holds (guardian-linked child profiles), how\nmany share their record with you, and per EPSDT component how many have\nit due now on Norvya's schedule (epsdt.py). NOT a CMS-416: no eligibility\nmonths, no claims. Vision, hearing and oral health carry\nperiodicity_asserted false (Norvya does not assert those ages)."
     }
    },
    {
     "name": "HEDIS measures for NCQA licensees only (409 hedis_not_licensed otherwise)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/hedis",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "hedis"
       ]
      },
      "description": "No HEDIS specification logic is in Norvya (NCQA requires a licence for\nevery use). A deployment that holds an NCQA licence (HEDIS_LICENSED) and\nuploaded its own measure definitions gets each one computed by the Norvya\ncomputation it binds to, as suppressed cells; otherwise 409\nhedis_not_licensed (or hedis_no_definitions). Never certified."
     }
    }
   ]
  },
  {
   "name": "Care transitions",
   "description": "For hospitals: send your HL7 v2 admission/discharge (ADT) feed and get counts back (never names or record numbers); a discharge opens the patient's 30-day follow-up. Run the follow-up from your own care-management system: the worklist (day N of 30, the 48-72 hour call, the 7-day visit, medicine reconciliation, red flags from the patient's check-ins with their MedlinePlus or CDC source), LACE and HOSPITAL scores only when every input is recorded, write-back of calls, visits, closes and returns, and operational outcomes with small cells withheld (not risk-adjusted HRRP measures; days at home only where ascertained). For practices on the receiving side: the admissions, discharges and ED visits Norvya received for your patients, with the Transitional Care Management clock, plus webhooks for each.",
   "item": [
    {
     "name": "Send an HL7 v2 ADT batch from your feed",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "text/plain"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/adt",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "adt"
       ]
      },
      "description": "A01 admit, A02 transfer, A03 discharge, A04 ED registration (patient\nclass E). Each message is matched only to YOUR organisation's actively\nlinked patients: a PID-3 identifier equal to the MRN Norvya holds for the\npatient AND the PID-7 birth date, or the full name AND birth date, on\nexactly one patient; anything else is held unmatched for your staff's\nreview in Norvya, never guessed. Idempotent on MSH-10. At a hospital, an\ninpatient A03 opens the patient's 30-day post-discharge episode, and a\nlater admission or ED visit inside the 30 days is recorded as a return.\nThe response is counts only: n",
      "body": {
       "mode": "raw",
       "raw": ""
      }
     }
    },
    {
     "name": "Enrol a discharged patient in 30-day post-discharge follow-up",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/episodes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "episodes"
       ]
      },
      "description": "Opens the patient's episode exactly as a navigator does in Norvya (same\nvalidation, same duplicate rule: one episode per patient per discharge\ndate, 409 episode_exists) and sends the patient Norvya's generic \"your\ncare team added a check-in\" notice. The patient must be actively linked\nto your hospital (404 member_not_found). Validation errors are machine\ncodes (422 discharge_date_required, discharge_date_too_old,\ndischarge_date_in_future, admit_after_discharge, condition_invalid,\ndisposition_invalid ...). Hospitals only (409 not_a_hospital) with a BAA\non file (409 transitions_baa_required).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"admit_date\": \"2026-10-09\",\n  \"condition\": \"heart_failure\",\n  \"discharge_date\": \"2026-10-14\",\n  \"discharge_unit\": \"4 West\",\n  \"disposition\": \"home\",\n  \"member_ref\": \"mr_3f9a0c1d2e4b5a6978c0d1e2\",\n  \"pcp_name\": \"Dr. Rivera\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your post-discharge worklist: who to call, what is due, who is at risk",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/worklist",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "worklist"
       ]
      },
      "description": "One row per episode, in the transitions team's order (an open red flag\nfirst, then an overdue call, then readmission-risk band, then a due\ncall): day N of 30, what is due (the 48-72 hour call, the 7-day\nfollow-up visit, medicine reconciliation, red-flag review) with due\ntimes, the open issues, and the LACE / HOSPITAL scores with citation\nONLY when every input was recorded by staff (never imputed). Only\npatients whose link with your hospital is live. Hospitals only."
     }
    },
    {
     "name": "One post-discharge episode: contacts, follow-up, check-ins, medicines, tasks",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/episodes/:episode_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "episodes",
        ":episode_id"
       ],
       "variable": [
        {
         "key": "episode_id",
         "value": ""
        }
       ]
      },
      "description": "The episode's state and record: calls made, the follow-up visit, every\ncheck-in with what the patient answered and each red flag as its\nsource's wording and citation (MedlinePlus / CDC), medicine\nreconciliation per medicine (staff-confirmed or not, the patient's\nanswer), open and resolved tasks, and the readmission-risk scores when\nrecorded. 404 episode_not_found for an id that is not an episode of your\nhospital or whose patient's link is no longer live (one answer for\nboth)."
     }
    },
    {
     "name": "Record a call to the patient",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/episodes/:episode_id/contacts",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "episodes",
        ":episode_id",
        "contacts"
       ],
       "variable": [
        {
         "key": "episode_id",
         "value": ""
        }
       ]
      },
      "description": "A call attempt from your care-management system: outcome (reached\nstops the 48-72 hour clock), optional note, optional time WITH an offset\n(422 contact_at_needs_offset, contact_in_future). Returns the episode.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"contact_at\": \"2026-10-15T15:30:00Z\",\n  \"note\": \"Weighing daily, has scale.\",\n  \"outcome\": \"reached\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record the booked follow-up visit",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/episodes/:episode_id/followup",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "episodes",
        ":episode_id",
        "followup"
       ],
       "variable": [
        {
         "key": "episode_id",
         "value": ""
        }
       ]
      },
      "description": "The visit date and who it is with (422 followup_date_required,\nfollowup_before_discharge, followup_with_required); resolves an open\n\"no follow-up\" task. Within 7 days of discharge counts toward the\nfollow-up measure.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"date\": \"2026-10-20\",\n  \"with\": \"Dr. Rivera, Riverside FM\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Close the episode",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/episodes/:episode_id/close",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "episodes",
        ":episode_id",
        "close"
       ],
       "variable": [
        {
         "key": "episode_id",
         "value": ""
        }
       ]
      },
      "description": "completed, readmitted (needs readmitted_on inside the 30 days) or\nwithdrawn (needs a reason). 409 episode_closed when it already is.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"outcome\": \"completed\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record a readmission or ED return",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/episodes/:episode_id/returns",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "episodes",
        ":episode_id",
        "returns"
       ],
       "variable": [
        {
         "key": "episode_id",
         "value": ""
        }
       ]
      },
      "description": "A readmission (closes an active episode as readmitted) or an ED\nreturn, dated after discharge and within the 30 days (422\nreturn_outside_window). Recorded with source staff, the same as a\nnavigator's entry, and as a care event days-at-home reads.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"date\": \"2026-10-18\",\n  \"kind\": \"ed_return\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Operational post-discharge outcomes, small cells suppressed (not HRRP measures)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/transitions/outcomes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "transitions",
        "outcomes"
       ]
      },
      "description": "Counts for episodes discharged in the range: by condition, 30-day\nreadmissions and ED returns known to Norvya (from your ADT feed or\nrecorded by staff: no record does not mean no return), follow-up booked\nwithin 7 days, reached within 72 hours, check-in engagement, and days at\nhome ONLY for episodes whose full 30 days fall inside an ascertainment\nperiod (no ascertainment, no number). Operational counts for your team,\nNOT risk-adjusted HRRP measures and not comparable to CMS's published\nrates. Small cells are withheld, with complementary suppression (the\n`suppression` field says how). Counts on"
     }
    },
    {
     "name": "Hospital admissions, discharges and ED visits Norvya received for one patient",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/encounters",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "encounters"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Every notice your practice may see for this patient, newest first:\nfrom a hospital / HIE ADT feed (yours, or a hospital's through Norvya)\nor sent by the patient. A feed notice is visible while the patient\nshares their medical history with your practice, or under a\npractice-of-record relationship with a BAA on file; a notice the patient\nsent is always visible to the practices they sent it to (and gone once\nthey withdraw it). A discharge carries its Transitional Care Management\nclock: contact by the 2nd business day, face-to-face by day 14 (moderate\ncomplexity) or 7 (high), the 30-day period. A "
     }
    }
   ]
  },
  {
   "name": "Public-health reporting",
   "description": "Report from your own system to the state, one explicit call at a time. Immunization registry: readiness of your connection, the patient's record with a reference per dose, a preview of what the HL7 v2 VXU would contain, the submission itself with the registry's acknowledgement and retry state, and history queries (Z34 / Z44) whose returned doses land on the record. Electronic case reporting: match a patient against the CSTE / CDC / APHL trigger codes (a match is never a statement that a case is reportable), confirm or dismiss, build the FHIR eICR, transmit it, and read or file the Reportability Response. Syndromic surveillance (NSSP): record an emergency or urgent-care visit with its chief complaint and send its HL7 v2 ADT message. Webhooks for registry acknowledgements and Reportability Responses. Treating practices and hospitals only; every transmission is audited before it leaves.",
   "item": [
    {
     "name": "Your immunization registry connection: readiness, never credentials",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/iis",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "iis"
       ]
      },
      "description": "Whether a dose report or history query would be transmitted right now,\nand if not, why: the connection's status, the state, whether an\nadministrator attested to the state's data-exchange agreement, and the\nonboarding steps still missing. Never the endpoint, the user name, the\npassword or the facility id. Activation itself is done by your\norganisation's administrator in Norvya, not through the API."
     }
    },
    {
     "name": "Your registry submissions and their acknowledgements",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/iis/submissions",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "iis",
        "submissions"
       ]
      },
      "description": "Newest first: dose reports (VXU) and history queries (QBP) your\norganisation sent — through the API or from Norvya's own screens — with\nthe registry's ACK code, Norvya's retry state (5 min, 30 min, 2 h, 12 h,\n24 h; then failed_permanent) and the review queue (needs_review: a data\nproblem the registry reported, never retried automatically). Patients no\nlonger linked to you are left out."
     }
    },
    {
     "name": "One registry submission",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/iis/submissions/:submission_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "iis",
        "submissions",
        ":submission_ref"
       ],
       "variable": [
        {
         "key": "submission_ref",
         "value": ""
        }
       ]
      },
      "description": "Status, ACK code and retry state of one submission. Another\norganisation's submission and an unknown ref are the same 404\niis_submission_not_found."
     }
    },
    {
     "name": "A patient's immunization record (with refs to report)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/immunizations",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "immunizations"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Completed doses on the patient's Norvya record, newest first, each with\nthe immunization_ref you report it by, plus Norvya's adult forecast. The\npatient must share their medical history with your organisation (403\nmedical_history_not_shared)."
     }
    },
    {
     "name": "What a registry report of one dose would contain",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/immunizations/:immunization_ref/iis-preview",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "immunizations",
        ":immunization_ref",
        "iis-preview"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "immunization_ref",
         "value": ""
        }
       ]
      },
      "description": "Builds the HL7 v2.5.1 VXU^V04 with the same builder a submission uses\n(your state's published local rules applied) and returns a summary: the\nsegments, the vaccine, whether it reports a new administration (00) or\na historical dose (01), and whether the VFC eligibility observation is\nincluded. Not the HL7 text. A dose the builder cannot report truthfully\nis refused with its reason (422 iis_uncoded_dose, iis_patient_incomplete,\niis_vfc_eligibility_unknown ...). Needs a configured connection (409\niis_not_configured); nothing is sent."
     }
    },
    {
     "name": "Report one dose to your state immunization registry",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/immunizations/:immunization_ref/iis-submissions",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "immunizations",
        ":immunization_ref",
        "iis-submissions"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "immunization_ref",
         "value": ""
        }
       ]
      },
      "description": "An explicit act: builds the VXU and sends it over the CDC IIS web\nservice to your registry, reads the ACK and answers with the submission.\nA transport failure or an application reject (AR / CR) is retried on the\nbackoff ladder; an application error (AE / CE) or a dose Norvya cannot\nreport truthfully waits in needs_review for your staff. Refused unless the\nconnection is active under an attested state agreement (409\niis_not_active, nothing recorded). The disclosure is audited before it\nleaves and refused when the audit log is down. Subscribe to\npublic_health.iis_ack_received for ACKs that arrive"
     }
    },
    {
     "name": "Ask your registry for a patient's immunization history",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/iis-queries",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "iis-queries"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "QBP^Q11 (Z34 history, or Z44 evaluated history and forecast) for one\npatient. Doses the registry returns are added to the patient's record\n(source iis, document reviewed; duplicates skipped) and the record comes\nback with Norvya's adult forecast. A candidate list, no match or a\nprotected record is reported in query_status and nothing is imported.\nThe query sends the patient's identity to the state, so it is audited as a\ndisclosure first (fail closed), and the answer as a read. Needs an active\nconnection (409 iis_not_active). A registry outage is retried in the\nbackground and reported here as 5",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"profile\": \"Z44\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Electronic case reporting readiness",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/case-reporting",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "case-reporting"
       ]
      },
      "description": "Whether case reporting is active for your organisation and, if not,\nwhat is missing; the trigger-code release Norvya matches against (the\nCSTE / CDC / APHL eRSD; Norvya ships no condition list of its own); what\ntrigger matching can and cannot see; and what is not claimed."
     }
    },
    {
     "name": "Match a patient's record against the reportable-condition trigger codes",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/case-reports/evaluate",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "case-reports",
        "evaluate"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Matches the patient's coded conditions, labs and immunizations against\nthe active eRSD release and raises a candidate per matched condition\n(already-known ones come back too). A match is NOT a statement that the\ncase is reportable: only the Reportability Response decides. An empty list\nis not a statement that there is nothing to report (see coverage). 409\ncase_reporting_not_active; 409 no_ersd_release."
     }
    },
    {
     "name": "Case-report candidates waiting for review, and their history",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/case-reports/candidates",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "case-reports",
        "candidates"
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Confirm or dismiss a case-report candidate",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/case-reports/candidates/:candidate_ref/review",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "case-reports",
        "candidates",
        ":candidate_ref",
        "review"
       ],
       "variable": [
        {
         "key": "candidate_ref",
         "value": ""
        }
       ]
      },
      "description": "Your clinician's decision, recorded from your system. A candidate whose\ntrigger data the patient keeps closed (sharing_blocked) cannot be\nconfirmed here: overriding a patient's sharing choice needs a clinician's\nrecorded reason inside Norvya (409 override_requires_clinician). A sent\ncandidate cannot be changed (409 already_sent).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"action\": \"confirm\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Build the eICR for a confirmed candidate",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/case-reports/candidates/:candidate_ref/build",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "case-reports",
        "candidates",
        ":candidate_ref",
        "build"
       ],
       "variable": [
        {
         "key": "candidate_ref",
         "value": ""
        }
       ]
      },
      "description": "Builds the FHIR eICR (hl7.fhir.us.ecr 2.1.2) from the patient's record\nthrough Norvya's one FHIR builder and stores it encrypted, ready to\ntransmit. 42 CFR Part 2 records are always withheld; clinical detail\nbehind a closed sharing flag is withheld unless a clinician recorded an\noverride. The document itself is not returned. Audited as a disclosure\n(fail closed). 409 candidate_not_confirmed."
     }
    },
    {
     "name": "Your eICRs and the Reportability Responses that came back",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/case-reports",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "case-reports"
       ]
      },
      "description": ""
     }
    },
    {
     "name": "One eICR and its Reportability Response",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/case-reports/:report_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "case-reports",
        ":report_ref"
       ],
       "variable": [
        {
         "key": "report_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Transmit a built eICR to public health",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/case-reports/:report_ref/transmit",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "case-reports",
        ":report_ref",
        "transmit"
       ],
       "variable": [
        {
         "key": "report_ref",
         "value": ""
        }
       ]
      },
      "description": "Hands the stored eICR to your organisation's configured adapter (Direct\nto the AIMS platform, or a drop directory your bridge collects). An\nexplicit act, audited before it leaves and refused when the audit log is\ndown. 409 already_sent; 409 document_not_stored; a failed hand-off marks\nthe report failed and answers 503 with the adapter's code."
     }
    },
    {
     "name": "File the Reportability Response public health sent",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/fhir+json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/case-reports/:report_ref/response",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "case-reports",
        ":report_ref",
        "response"
       ],
       "variable": [
        {
         "key": "report_ref",
         "value": ""
        }
       ]
      },
      "description": "For organisations whose own system receives the RR. A FHIR RR is read\nfor its determinations; a CDA RR is stored and marked not parsed. 413\nfile_too_large; 415 unsupported_media_type; 422 unreadable_response.",
      "body": {
       "mode": "raw",
       "raw": ""
      }
     }
    },
    {
     "name": "Syndromic surveillance readiness",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/syndromic/status",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "syndromic",
        "status"
       ]
      },
      "description": "What is configured and what is missing before your organisation can\nsend: the facility registration and its NSSP onboarding attestation, the\njurisdiction, the syndromic endpoint. Built against the PHIN Messaging\nGuide R1.1 + 2012 addendum and not NIST-validated (see not_claimed)."
     }
    },
    {
     "name": "Record an emergency or urgent-care visit",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/syndromic/visits",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "syndromic",
        "visits"
       ]
      },
      "description": "The encounter as your facility records it, keyed on your visit number\n(recording the same number again updates it). Chief complaint in the\npatient's own words: Norvya never derives one, and a visit without it is\nnever sent. Nothing is sent by recording. 409 syndromic_not_onboarded;\n409 visit_number_in_use (that number belongs to another patient).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"member_ref\": \"string\",\n  \"visit_number\": \"ED-2026-000123\",\n  \"arrived_at\": \"2026-10-15T14:05:00Z\",\n  \"patient_class\": \"E\",\n  \"chief_complaint\": \"cough and fever 3 days\",\n  \"disposition\": \"string\",\n  \"discharged_at\": \"string\",\n  \"age_years\": 0,\n  \"diagnoses\": [\n    {\n      \"code\": \"J06.9\",\n      \"system\": \"I10\",\n      \"text\": \"string\"\n    }\n  ]\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Visits on file",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/syndromic/visits",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "syndromic",
        "visits"
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Send one visit's syndromic ADT message",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/syndromic/visits/:visit_ref/send",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "syndromic",
        "visits",
        ":visit_ref",
        "send"
       ],
       "variable": [
        {
         "key": "visit_ref",
         "value": ""
        }
       ]
      },
      "description": "Builds the HL7 v2.5.1 ADT (A01 / A03 / A04 / A08) and hands it to your\nendpoint's adapter — one explicit send; Norvya never transmits on its own.\nThe same content for the same visit and trigger is refused (409\nduplicate_message: double counting inflates a surveillance signal); 409\nchief_complaint_missing. Audited before it leaves, refused when the audit\nlog is down.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"trigger\": \"A04\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "What was sent where (no patient data)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/public-health/syndromic/messages",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "public-health",
        "syndromic",
        "messages"
       ]
      },
      "description": "Each message: trigger, control id, jurisdiction, status, time, any\nwarnings (age_not_recorded, disposition_not_recorded). No patient\nreference beyond the visit_ref you already hold."
     }
    }
   ]
  },
  {
   "name": "Billing & scheduling",
   "description": "For practice-management and revenue-cycle systems. Appointments both ways: send yours by your own appointment id (idempotent; cancelling never deletes) so the pre-visit brief is ready before each visit, and read every appointment of the practice, including those patients booked in Norvya, on the practice's clock with cursor paging. Norvya does not send its own reminders for appointments your system sent unless the practice turns that on. Care-management minutes and remote-monitoring days per patient per program per month (CCM, PCM, chronic pain, RPM, RTM, APCM, CoCM, BHI, TCM), with the program's published reference marks reached and its reference codes, each labelled a candidate for your biller's review: never a charge, an eligibility determination or a code selected for the patient. Billing candidates for staff review. No Surprises Act Good Faith Estimates from your codes and charges, with Norvya's required-contents check and a PDF in the patient's language. Not exposed: claim submission, ERA posting and eligibility-file intake; your practice-management system remains the claims engine. Treating practices only.",
   "item": [
    {
     "name": "Your practice's zone, providers and reminder setting",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/scheduling/settings",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "scheduling",
        "settings"
       ]
      },
      "description": "The practice zone Norvya stores appointments on (from your practice's\nNorvya hours; UTC when none are set), its active clinicians and staff as\nstaff_ref values to map your own provider list to (names and roles only),\nand whether Norvya sends its own reminders for appointments your system\nsends (off by default: your system usually reminds)."
     }
    },
    {
     "name": "Turn Norvya's reminders for your appointments on or off",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/scheduling/settings",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "scheduling",
        "settings"
       ]
      },
      "description": "Set norvya_reminders_for_partner_appointments. While false, Norvya sends\nno appointment reminder (push, in-app or email) for an appointment your\nsystem sent, so a patient is not reminded twice. Appointments booked in\nNorvya itself are reminded either way. Audited as a settings change.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"norvya_reminders_for_partner_appointments\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Create or update an appointment by YOUR appointment id",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/appointments/ext/:external_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "appointments",
        "ext",
        ":external_id"
       ],
       "variable": [
        {
         "key": "external_id",
         "value": ""
        }
       ]
      },
      "description": "Idempotent: the same external_id from your client always lands on the\nsame Norvya appointment (another client's ids are a separate namespace).\nThe appointment becomes an ordinary Norvya appointment, so the pre-visit\nbrief and your staff's screens see it. `start` must carry a UTC offset. A\nbooked appointment that started more than 24 hours ago is refused\n(booked_in_past: send history as completed, no_show or cancelled). An id\nstays bound to its first patient (409 external_id_member_mismatch). Your\nown change is never sent back to you as a webhook.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"member_ref\": \"mr_3f9c1a0b7d2e4c6a8b1d0e2f\",\n  \"start\": \"2026-10-20T09:30:00-04:00\",\n  \"duration_minutes\": 30,\n  \"timezone\": \"America/New_York\",\n  \"status\": \"booked\",\n  \"visit_type\": \"follow_up\",\n  \"provider\": {\n    \"staff_ref\": \"stf_1a2b3c4d5e6f\",\n    \"label\": \"Dr. Ana Ruiz\"\n  },\n  \"location\": \"Main Street office\",\n  \"telehealth\": false,\n  \"cancellation_reason\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One of YOUR appointments, by your id",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/appointments/ext/:external_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "appointments",
        "ext",
        ":external_id"
       ],
       "variable": [
        {
         "key": "external_id",
         "value": ""
        }
       ]
      },
      "description": "An appointment your client sent. Anything else answers 404\nappointment_not_found."
     }
    },
    {
     "name": "Cancel one of YOUR appointments (never deleted)",
     "request": {
      "method": "DELETE",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/appointments/ext/:external_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "appointments",
        "ext",
        ":external_id"
       ],
       "variable": [
        {
         "key": "external_id",
         "value": ""
        }
       ]
      },
      "description": "DELETE means cancel: the status becomes cancelled and the row stays, so\nits history is legible and the brief no longer counts it. Repeating it is\nharmless. Returns the appointment."
     }
    },
    {
     "name": "Your practice's appointments, booked in Norvya or sent by a practice system",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/appointments",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "appointments"
       ]
      },
      "description": "Ordered by start time. Includes appointments patients booked in Norvya\n(so your system can mirror them) and every practice system's appointments;\nexternal_id is filled only for your own. Patients no longer linked to your\npractice are left out. Pass next_cursor back as ?cursor= for the next page."
     }
    },
    {
     "name": "One appointment of your practice",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/appointments/:appointment_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "appointments",
        ":appointment_ref"
       ],
       "variable": [
        {
         "key": "appointment_ref",
         "value": ""
        }
       ]
      },
      "description": "The resource an appointment.booked / appointment.cancelled webhook\npoints to. Another practice's appointment, an unknown ref and one whose\npatient is no longer linked are the same 404 appointment_not_found."
     }
    },
    {
     "name": "Care-management minutes and remote days per patient per program, for your biller",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/billing/care-management",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "billing",
        "care-management"
       ]
      },
      "description": "Every patient with an enrolment overlapping the month or minutes filed\nunder a program, per program: enrolment and consent state, minutes (by\nactivity) and, for remote monitoring, device days per 30-day period,\nwhether the program's first published reference mark was reached, the\nmarks reached, what is still missing, and the program's reference codes.\nEach row is status candidate_for_biller_review: never a charge, an\neligibility determination or a code selected for the patient. The same\nevidence Norvya's staff month view shows (care_programs). Needs care\nmanagement enabled for your practice."
     }
    },
    {
     "name": "One patient's care-management month, for your biller",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/care-management",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "care-management"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The rows of GET /v1/billing/care-management for one patient (the\nresource billing.threshold_met points to). A patient with nothing filed\nthis month answers an empty programs list."
     }
    },
    {
     "name": "Patients whose recorded data match published CMS criteria: for staff review",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/billing/candidates",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "billing",
        "candidates"
       ]
      },
      "description": "Patients whose RECORDED data match the published CMS criteria for CCM,\nPCM, APCM (by level) or a possibly-due annual wellness visit, each with\nthe criteria met and the record each came from, what Norvya does not know\n(payer, QMB status, consent, enrolment elsewhere, Part B date, the\nclinician's judgement) and staff_must_confirm: true. For staff review,\nnot an eligibility determination; no code is attached to a patient and no\namount is shown. Patients already enrolled in the program are left out."
     }
    },
    {
     "name": "Issue a Good Faith Estimate for a patient",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/good-faith-estimates",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "good-faith-estimates"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "A No Surprises Act estimate (45 CFR 149.610) for an uninsured or\nself-pay patient, from YOUR codes and charges (Norvya never chooses a code\nor a price). Lines without a provider belong to your practice and take its\nname, organisation NPI, TIN and address unless you pass convening_*. The\nsame required-contents check as Norvya's own screen: anything §149.610(c)\nasks for that is missing is refused as 422 {code:\nrequired_contents_missing, missing: [...]}, and nothing is recorded. The\npatient's name and date of birth come from Norvya. Issued documents are\nretained six years and never edited; delive",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"trigger\": \"scheduled\",\n  \"triggered_on\": \"2026-10-16\",\n  \"primary_service\": \"Diabetes follow-up visit with A1c\",\n  \"service_date\": \"string\",\n  \"delivery_method\": \"string\",\n  \"lines\": [\n    {\n      \"description\": \"Office visit, established patient\",\n      \"service_code\": \"99213\",\n      \"code_type\": \"CPT\",\n      \"quantity\": 0,\n      \"expected_charge\": \"150.00\",\n      \"diagnosis_codes\": [\n        \"E11.9\"\n      ],\n      \"provider_name\": \"string\",\n      \"npi\": \"string\",\n      \"tin\": \"string\",\n      \"location\": \"string\",\n      \"state\": \"string\",\n      \"role\": \"string\"\n    }\n  ],\n  \"separately_scheduled\": [\n    \"string\"\n  ],\n  \"diagnosis_codes\": [\n    \"string\"\n  ],\n  \"convening_npi\": \"string\",\n  \"convening_tin\": \"string\",\n  \"convening_location\": \"string\",\n  \"convening_state\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's Good Faith Estimates from your practice",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/good-faith-estimates",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "good-faith-estimates"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Every estimate version your practice issued for the patient (through the\nAPI or Norvya's own screen), newest first, without the document body."
     }
    },
    {
     "name": "One Good Faith Estimate, with the issued document",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/good-faith-estimates/:estimate_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "good-faith-estimates",
        ":estimate_ref"
       ],
       "variable": [
        {
         "key": "estimate_ref",
         "value": ""
        }
       ]
      },
      "description": "The issued snapshot (what the PDF shows), its SHA-256 and whether it\nstill verifies, and the timing status of its request. Another practice's\nestimate and an unknown ref are the same 404 estimate_not_found."
     }
    },
    {
     "name": "The estimate as a PDF, in the patient's language",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/good-faith-estimates/:estimate_ref/pdf",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "good-faith-estimates",
        ":estimate_ref",
        "pdf"
       ],
       "variable": [
        {
         "key": "estimate_ref",
         "value": ""
        }
       ]
      },
      "description": "Rendered by the same builder as Norvya's own copy, in the patient's app\nlanguage (or ?lang=), with the English disclaimers kept as the binding\ntext. A disclosure: audited as an export before it is returned and refused\nwhen the audit log is down."
     }
    },
    {
     "name": "Issue a new version of a Good Faith Estimate",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/good-faith-estimates/:estimate_ref/reissue",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "good-faith-estimates",
        ":estimate_ref",
        "reissue"
       ],
       "variable": [
        {
         "key": "estimate_ref",
         "value": ""
        }
       ]
      },
      "description": "A new version for a change in the items or charges, or after a\nreschedule (good_faith_estimate.issue: the same builder and §149.610(c)\nrequired-contents check as the first issue; a refusal records nothing).\nThe previous version is kept, marked superseded, never edited; the PDF of\nthe new version is rendered on request like any other. 409 request_closed\nfor a cancelled request, 409 estimate_superseded for an older version.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"reason\": \"string\",\n  \"lines\": [\n    {\n      \"description\": \"Office visit, established patient\",\n      \"service_code\": \"99213\",\n      \"code_type\": \"CPT\",\n      \"quantity\": 0,\n      \"expected_charge\": \"150.00\",\n      \"diagnosis_codes\": [\n        \"E11.9\"\n      ],\n      \"provider_name\": \"string\",\n      \"npi\": \"string\",\n      \"tin\": \"string\",\n      \"location\": \"string\",\n      \"state\": \"string\",\n      \"role\": \"string\"\n    }\n  ],\n  \"separately_scheduled\": [\n    \"string\"\n  ],\n  \"diagnosis_codes\": [\n    \"string\"\n  ],\n  \"convening_npi\": \"string\",\n  \"convening_tin\": \"string\",\n  \"convening_location\": \"string\",\n  \"convening_state\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record that the scheduled item was rescheduled",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/good-faith-estimates/:estimate_ref/reschedule",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "good-faith-estimates",
        ":estimate_ref",
        "reschedule"
       ],
       "variable": [
        {
         "key": "estimate_ref",
         "value": ""
        }
       ]
      },
      "description": "good_faith_estimate.reschedule: the §149.610(b)(1)(vi) clock restarts\nfrom scheduled_on and the current version then needs a new one (timing\nstatus reissue_needed): POST .../reissue next. 422\nservice_date_before_scheduling, scheduled_on_in_future; 409 request_closed.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"scheduled_on\": \"2026-10-20\",\n  \"service_date\": \"2026-11-12\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Cancel the estimate request (the item will not take place)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/good-faith-estimates/:estimate_ref/cancel",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "good-faith-estimates",
        ":estimate_ref",
        "cancel"
       ],
       "variable": [
        {
         "key": "estimate_ref",
         "value": ""
        }
       ]
      },
      "description": "good_faith_estimate.cancel: the request closes (request_status\ncancelled); issued versions stay on file for the six-year retention and\nstay readable. 409 request_closed when already closed.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"reason\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    }
   ]
  },
  {
   "name": "Social needs & programmes",
   "description": "Health-related social needs as a closed loop: request a validated screen (AHC-HRSN and others) from your system, read the coded findings (SNOMED CT / ICD-10-CM Z codes), make a referral to a community organisation and track it to accepted, completed or declined, with webhooks for completed screens and referral updates. Community care: the VA Community Care, IHS Purchased/Referred Care and TRICARE referrals and authorisations your staff keyed in, with visits used, documentation due dates and what needs attention. Norvya does not authorise care or determine eligibility; the agency's portal remains the system of record. Treating practices only.",
   "item": [
    {
     "name": "Social needs vocabulary: screeners, findings and their codes, referral statuses",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/social-needs/reference",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "social-needs",
        "reference"
       ]
      },
      "description": "The findings a screen can produce with the ICD-10-CM Z-codes and SNOMED\nCT concepts Norvya asserts (Z59.10 inadequate housing, not the retired\nZ59.1), the US Core `sdoh` category, the referral statuses and their FHIR\nTask.status. No patient data."
     }
    },
    {
     "name": "Ask a patient to complete a social needs screen",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/social-needs/screenings",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "social-needs",
        "screenings"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Creates a request for the AHC-HRSN core screen and sends Norvya's\ngeneric \"Questionnaire from your care team\" push (the instrument name stays\nin the app). 409 patient_muted_clinic when the patient muted your\npractice; 422 screener_not_available for PRAPARE (not built), 422\nscreener_not_supported for anything else. The completed screen raises\nsocial_needs.screening_completed.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"instrument\": \"ahc_hrsn\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's social needs screen, coded findings and your referrals",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/social-needs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "social-needs"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The latest submitted AHC-HRSN screen: each domain positive or not, the\npositive findings coded (ICD-10-CM Z-code; SNOMED CT where certain; US\nCore category sdoh), any screen you requested that is still pending, and\nthe closed-loop referrals YOUR practice made. The patient must share their\nmedical history with you (403 medical_history_not_shared). The\ninterpersonal-safety domain never leaves Norvya."
     }
    },
    {
     "name": "Create a closed-loop referral to a community organisation",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/social-needs/referrals",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "social-needs",
        "referrals"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "One referral for one finding (codes stamped from the finding at write\ntime, so a later terminology change cannot rewrite history). The patient\nmust share their medical history with you. 422 unknown_finding /\nfinding_not_available (interpersonal safety) / invalid_referral_status.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"finding\": \"food_insecurity\",\n  \"resource_name\": \"Mid-Ohio Food Collective\",\n  \"resource_contact\": \"(614) 555-0100\",\n  \"status\": \"sent\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your practice's closed-loop community referrals",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/social-needs/referrals",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "social-needs",
        "referrals"
       ]
      },
      "description": "Newest first, at most 500, for patients still linked and sharing their\nmedical history with you."
     }
    },
    {
     "name": "One closed-loop referral",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/social-needs/referrals/:referral_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "social-needs",
        "referrals",
        ":referral_ref"
       ],
       "variable": [
        {
         "key": "referral_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Move a referral along its loop (sent, accepted, completed, declined...)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/social-needs/referrals/:referral_ref/status",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "social-needs",
        "referrals",
        ":referral_ref",
        "status"
       ],
       "variable": [
        {
         "key": "referral_ref",
         "value": ""
        }
       ]
      },
      "description": "Any hrsn status (aliases service_delivered -> completed, declined ->\ndeclined_by_patient). A closed status stamps closed_at; reopening clears\nit. Other clients of your practice receive social_needs.referral_updated;\nyour own client does not.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"status\": \"accepted\",\n  \"outcome_note\": \"Enrolled in weekly food box.\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's VA / IHS / TRICARE referrals and authorisations at your practice",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/community-care/authorizations",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "community-care",
        "authorizations"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The referrals and authorisations your practice recorded from the\nagency (agency_care): numbers, authorised services, dates and visits,\nvisits counted, documents sent, the advisory flags. Norvya does not\nauthorise care, determine eligibility or submit to any agency system."
     }
    },
    {
     "name": "Your practice's community-care referrals and authorisations",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/community-care/authorizations",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "community-care",
        "authorizations"
       ]
      },
      "description": ""
     }
    }
   ]
  },
  {
   "name": "Unit readiness",
   "description": "For military units and first-responder organisations only: readiness as counts (physiology off members' own baselines, training-load bands, duty status) over the members who share biometrics with the unit. Nothing below the minimum cell, small cells and dominant states withheld, no questionnaire or behavioural-health field (enforced in code), no individual. Never a projection: projection.available is always false. A conversation starter, not a duty-status or deployability determination; Norvya is not a DoD system of record.",
   "item": [
    {
     "name": "Unit readiness as counts only (military units and first responders); never a projection",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/population/readiness",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "population",
        "readiness"
       ]
      },
      "description": "readiness_unit's COMMAND tier: physiology, training-load and duty\nstatus distributions over members who share biometrics with the unit;\nnothing at all below agg_min_cell members, small cells and dominance\nwithheld, no questionnaire or behavioural-health field (asserted in\ncode), no individual. `projection.available` is always false: Norvya\nholds no military parameter set and refuses to project. A conversation\nstarter, not a duty-status or deployability determination. 409\nnot_a_unit for any other organisation."
     }
    }
   ]
  },
  {
   "name": "Member data in: observations and workouts",
   "description": "Send what your own system measured for a member, keyed by your id so a resend replaces and a delete retracts: vitals, body measurements and lab results (practices, with a BAA; recorded with your organisation as the source and coded to LOINC / UCUM where Norvya is sure of the code), and completed workouts (gyms and fitness apps) that strength progress, weekly sets and readiness then read. Every value lands in the member's provenance-bearing observation record, never as a silent overwrite of something the member entered.",
   "item": [
    {
     "name": "Write measurements to a member's record",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/observations",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "observations"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Vitals, lab results and body composition, one outcome per item\n(created | duplicate | rejected with a machine code). Practices (BAA on\nfile): every type, recorded as your practice's own record. Gyms: body\ncomposition and weight / height / heart rate / blood pressure, while the\nmember shares body measurements with you; never labs. Units are\nconverted, never assumed; implausible values are refused. Idempotent per\nitem by external_id.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"items\": [\n    {\n      \"external_id\": \"VS-2026-10-14-0001\",\n      \"type\": \"vital\",\n      \"code\": \"blood_pressure\",\n      \"value\": 128,\n      \"value_secondary\": 82,\n      \"unit\": \"mmHg\",\n      \"effective_at\": \"2026-10-14T09:30:00-04:00\",\n      \"device\": \"InBody 570\",\n      \"name\": \"LDL\",\n      \"loinc\": \"13457-7\",\n      \"collected_at\": \"2026-10-13T08:05:00-04:00\",\n      \"reference_low\": 0.0,\n      \"reference_high\": 0.0,\n      \"reference_text\": \"<100 mg/dL\",\n      \"interpretation\": \"string\",\n      \"lab_name\": \"Example Reference Laboratory\",\n      \"weight\": {\n        \"value\": 82.4,\n        \"unit\": \"kg\"\n      },\n      \"body_fat_pct\": 21.4,\n      \"skeletal_muscle_mass\": {\n        \"value\": 82.4,\n        \"unit\": \"kg\"\n      },\n      \"bone_mass\": {\n        \"value\": 82.4,\n        \"unit\": \"kg\"\n      },\n      \"body_water_pct\": 0.0,\n      \"visceral_fat\": 9,\n      \"smi\": 0.0,\n      \"ecw_tbw\": 0.0\n    }\n  ]\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Retract one of your own measurement items",
     "request": {
      "method": "DELETE",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/observations/:external_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "observations",
        ":external_id"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "external_id",
         "value": ""
        }
       ]
      },
      "description": "Removes the rows YOUR item created; their observations are marked\nentered-in-error in Norvya's ledger. Another source's data is never\ntouched. The external_id is not reusable afterwards."
     }
    },
    {
     "name": "Write completed training sessions to a member's record",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/workouts",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "workouts"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Exercises, sets, reps, load and RPE, stored as a logged session so the\nmember's strength progress (estimated 1RM), weekly hard sets and training\nreadiness include it. Gyms, fitness and personal-training organisations,\nwhile the member shares activity with you.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"items\": [\n    {\n      \"external_id\": \"GYM-SESSION-88412\",\n      \"started_at\": \"2026-10-14T18:00:00-04:00\",\n      \"duration_minutes\": 55,\n      \"workout_type\": \"string\",\n      \"session_rpe\": 7,\n      \"device\": \"string\",\n      \"exercises\": [\n        {}\n      ]\n    }\n  ]\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Retract one of your own workout items",
     "request": {
      "method": "DELETE",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/workouts/:external_id",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "workouts",
        ":external_id"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "external_id",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    }
   ]
  },
  {
   "name": "Enrolment & messaging",
   "description": "Reach the people you already know but who have not joined yet, then talk to them. Invitations go out by email in the invitee's language with your branding and a one-time code; a phone-only invitation returns its join link once for you to deliver through your own consented channel (Norvya texts no one who has not opted in). Reusable join codes for a front desk or a class. Joining is always the person's own choice on the app's normal consent screen: an invitation never creates a link or sets a sharing switch, and the answer never reveals whether an address belongs to a Norvya account. Messages to a member land in their in-app inbox; the notification is generic and the text never reaches a lock screen. Refused when the member turned messages off for you; daily caps per member and per organisation. Bulk enrolment from a roster is the Enrolment roster family below. Webhooks: member.joined, message.received.",
   "item": [
    {
     "name": "Invite a person to join your organisation on Norvya",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/invites",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "invites"
       ]
      },
      "description": "Norvya emails its own invitation (your organisation's name and\nbranding, the person's language) with a link and a one-time code that open\nthe app's join screen. The person signs up or signs in and chooses there\nwhat to share with you; nothing is pre-granted. The answer is the same\nwhether or not the address already has a Norvya account. An open\ninvitation to the same address is returned instead of a new one\n(deduplicated: true). A phone number is recorded but never texted by\nNorvya: with no email, deliver join_url through your own consented channel.\nSandbox: recorded, never emailed (simulated:",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"email\": \"alex@example.com\",\n  \"phone\": \"+15551234567\",\n  \"first_name\": \"Alex\",\n  \"language\": \"es\",\n  \"external_id\": \"CRM-00042\",\n  \"sharing_request\": [\n    \"analyses\",\n    \"biometrics\"\n  ],\n  \"expires_in_days\": 14\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your invitations",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/invites",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "invites"
       ]
      },
      "description": "Newest first. member_ref appears once the person joined and while they\nstay linked. No address, name or code is ever returned here."
     }
    },
    {
     "name": "One invitation's status",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/invites/:invite_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "invites",
        ":invite_ref"
       ],
       "variable": [
        {
         "key": "invite_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Revoke an invitation",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/invites/:invite_ref/revoke",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "invites",
        ":invite_ref",
        "revoke"
       ],
       "variable": [
        {
         "key": "invite_ref",
         "value": ""
        }
       ]
      },
      "description": "Its code stops working at once. Idempotent; a joined invitation cannot\nbe revoked (409 invite_already_joined: the member leaves from the app)."
     }
    },
    {
     "name": "Sandbox: a synthetic member joins through this invitation",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/invites/:invite_ref/simulate-join",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "invites",
        ":invite_ref",
        "simulate-join"
       ],
       "variable": [
        {
         "key": "invite_ref",
         "value": ""
        }
       ]
      },
      "description": "Sandbox credentials only (403 sandbox_only otherwise). Creates a\nsynthetic member (HTEST labels), links it as the app's join would, marks\nthe invitation joined and queues member.joined."
     }
    },
    {
     "name": "Your join codes",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/join-codes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "join-codes"
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Create a printable join code for your organisation",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/join-codes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "join-codes"
       ]
      },
      "description": "A code (and a join_url) to print or send yourself. A person enters it on\nthe app's join screen exactly like your clinic code and chooses what to\nshare. Optional expiry and use limit; at most 50 live codes.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"label\": \"Front desk poster\",\n  \"max_uses\": 500,\n  \"expires_in_days\": 90\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Revoke a join code",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/join-codes/:code_ref/revoke",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "join-codes",
        ":code_ref",
        "revoke"
       ],
       "variable": [
        {
         "key": "code_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Sandbox: a synthetic member joins with this code",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/join-codes/:code_ref/simulate-join",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "join-codes",
        ":code_ref",
        "simulate-join"
       ],
       "variable": [
        {
         "key": "code_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Send a member a secure in-app message",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/messages",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "messages"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The message lands in your organisation's conversation with the member\n(the one your staff use in Norvya) and the member gets Norvya's generic\nnotification (\"Message from your care team\"), never your text, through\ntheir own settings: push, or a text only if they opted in for you; quiet\nhours and caps apply. Plain text, at most 2000 characters, no attachments\nin v1. 409 member_messages_off when the member turned messages from you\noff; 429 member_message_cap_reached (PARTNER_MESSAGES_PER_MEMBER_PER_DAY,\ndefault 5 a day) or message_daily_cap_reached. Sandbox / synthetic\nmembers: written, never sen",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"body\": \"Your class pass renews next week.\",\n  \"subject\": \"Membership\",\n  \"thread_ref\": \"msg_5e7a9c1b3d5f7a9c1e3a5b7d\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your organisation's conversation with a member",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/messages",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "messages"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Oldest first (the newest `limit`), as your staff see it in Norvya:\nmessages from your organisation (sent_via partner_api or norvya) and the\nmember's replies. Staff names are never returned. Reading never marks a\nmessage read. Audited as a disclosure."
     }
    },
    {
     "name": "Sandbox: the synthetic member replies",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/members/:member_ref/messages/simulate-reply",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "members",
        ":member_ref",
        "messages",
        "simulate-reply"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Sandbox credentials only (403 sandbox_only otherwise). A fixed reply from\nthe synthetic member through the same hook every member message passes, so\nmessage.received fires exactly as it would in production."
     }
    }
   ]
  },
  {
   "name": "Claims in",
   "description": "Attach claims you already hold to your members: CMS CCLF files (Parts A, B and D) or a plan's claims in the documented generic shape. A dry run first (counts, match rate, rejections by code and row number, never a value), then an asynchronous commit and a claims.import_completed webhook. Claims match on your member reference, the member's MBI or plan member id (fingerprinted in memory, never stored), never on name or birth date; unmatched claims are dropped. Per member: a claims summary (settings, diagnoses, prescription fills) alongside what the member connected through Blue Button, and the member's record connections. Risk scores are refused unless an official CMS-HCC model is loaded. Claims never rewrite the member's own condition or medication list. Risk-adjustment audit evidence per member: the diagnosis codes in your imported claims with the dated claims documenting each, grouped into CMS-HCC categories only when an official model is loaded, never a risk score.",
   "item": [
    {
     "name": "Stage a claims import (CCLF or plan claims) and get its dry run",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "text/csv"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/claims/imports",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "claims",
        "imports"
       ]
      },
      "description": "Parses the file(s) in the request, matches each claim to exactly one of\nyour active members (member_ref, or the MBI / plan member id against the\ncoverage recorded for the member, by fingerprint; never by name or birth\ndate) and stages the matched claims. Nothing is attached until commit.\nMBIs, plan member ids and claim numbers are never stored. Treating\npractices and programme organisations with a BAA on file (409\nnot_a_medical_practice / claims_baa_required).",
      "body": {
       "mode": "raw",
       "raw": ""
      }
     }
    },
    {
     "name": "One claims import: dry run, progress, result",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/claims/imports/:claims_import_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "claims",
        "imports",
        ":claims_import_ref"
       ],
       "variable": [
        {
         "key": "claims_import_ref",
         "value": ""
        }
       ]
      },
      "description": "Imports YOUR client sent only (404 claims_import_not_found otherwise).\nCounts and row numbers only; no identifier or claim content."
     }
    },
    {
     "name": "Commit a staged claims import",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/claims/imports/:claims_import_ref/commit",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "claims",
        "imports",
        ":claims_import_ref",
        "commit"
       ],
       "variable": [
        {
         "key": "claims_import_ref",
         "value": ""
        }
       ]
      },
      "description": "Attaches the staged claims in the background (poll GET, or subscribe\nto claims.import_completed). Members whose link ended since the dry run\nare dropped; a claim you sent before (same claim number) is replaced.\nClaims never change a member's self-reported conditions or medications.\n409 claims_import_not_staged / claims_import_commit_in_progress /\nclaims_import_nothing_to_commit / claims_baa_required (re-checked by the\nworker before the first write)."
     }
    },
    {
     "name": "Discard a staged claims import",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/claims/imports/:claims_import_ref/discard",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "claims",
        "imports",
        ":claims_import_ref",
        "discard"
       ],
       "variable": [
        {
         "key": "claims_import_ref",
         "value": ""
        }
       ]
      },
      "description": "Deletes the staged claims; the manifest (counts, codes, hash) stays."
     }
    },
    {
     "name": "A member's claims summary (your imports + their Blue Button)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/claims-summary",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "claims-summary"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Counts by part and setting, service-date span, the top ICD-10\ncategories and CMS-HCC condition categories (only when an official CMS\nmodel is loaded; never a guessed mapping and never a risk score) from the\nclaims you imported (BAA gate), plus the member's own Medicare Blue Button\nsummary when they share their medical history with you."
     }
    },
    {
     "name": "Whether a member connected Medicare Blue Button or VA records",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/connections",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "connections"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Status, connected and last-sync times only, and only when the member\nshares their medical history with you (shared false and an empty list\notherwise). Read-only: connecting is the member's act in the app."
     }
    },
    {
     "name": "HCC audit evidence for a member (never a score)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/risk-adjustment-evidence",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "risk-adjustment-evidence"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Every ICD-10-CM code in the claims YOU imported for the member, each\nwith the dated claims that document it (claim_ref, part, setting, place\nof service, procedure codes present, service dates). When an official\nCMS-HCC model is loaded the codes are grouped into condition categories\nafter the hierarchy (suppressed categories listed, unmapped codes kept);\notherwise condition_categories is null with reason hcc_model_not_loaded:\nNorvya never ships or guesses a mapping. risk_score is always null. The\nclaims are not filtered for risk-adjustment-eligible encounter types (CMS's\nfiltering logic is not "
     }
    }
   ]
  },
  {
   "name": "Practice operations & reports",
   "description": "The rest of a practice's day from your own system: the member annual review a physician hands the patient (data or PDF, for the findings you select; urgent and practice-internal findings refused), one clinician's morning brief, rule-based outreach drafts for open worklist findings (never sent by the call), the practice's quarterly value report and programme outcomes report as aggregates with small cells withheld (JSON or PDF; observational, no dollar figure), clinicians' licence and NPI fields with their verification state, a telehealth video room for an existing appointment, the benefits-coordination worklist, and invitations for an imported patient to claim their own account (Norvya sends the invitation; the code goes to the patient only). Treating practices only.",
   "item": [
    {
     "name": "A patient's member annual review content (JSON)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/annual-review",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "annual-review"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The one-page review a physician hands the patient at their annual\nvisit, as data: their year in numbers (a critical value is withheld),\nwhat is going well, the findings YOU select (urgent, practice-internal and\nunverified-source findings are refused: 409\nmember_review_urgent_finding / member_review_finding_not_for_patients),\nscreenings and vaccines (only when the patient shares their medical\nhistory with you), the medicine count and the review sentence. Rule-based\nwording (no LLM). The doctor line is left out: there is no Norvya user\nbehind a partner call."
     }
    },
    {
     "name": "A patient's member annual review as a PDF",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/annual-review/content",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "annual-review",
        "content"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The same one-page review the practice prints from Norvya, for the\nselection you pass (the same refusals as the JSON call), rendered by the\nsame builder. A disclosure: audited as a PHI export before it is returned\n(503 when the audit log is down). No doctor line (no Norvya user behind a\npartner call)."
     }
    },
    {
     "name": "Your practice's quarterly value report (aggregates, JSON)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practice/value-report",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practice",
        "value-report"
       ]
      },
      "description": "The proof-of-value report Norvya's practice owners see: blood pressure,\nHbA1c and LDL control, follow-up, findings raised and closed, care gaps\nand engagement between two stored worklist snapshots. Aggregates only;\nevery count from 1 to min_cell - 1 is withheld by the engine. Printed\nframing: observational, this practice only, not a controlled comparison.\nNo dollar figure. 422 value_report_invalid_period."
     }
    },
    {
     "name": "Your practice's quarterly value report as a PDF",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practice/value-report/content",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practice",
        "value-report",
        "content"
       ]
      },
      "description": "The same report as the JSON call, rendered by the builder behind the\npractice owner's own PDF download. Aggregates only (small cells withheld\nby the engine); audited as an export before it is returned."
     }
    },
    {
     "name": "Your programme outcomes report (aggregates, JSON)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practice/outcomes-report",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practice",
        "outcomes-report"
       ]
      },
      "description": "The programme outcomes report (engagement, retention, paired measures,\nquestionnaire change, adherence, transitions) over a window: cohort\ncounts, proportions and medians with intervals and completeness, each\nbelow the small-cell minimum withheld (status too_small when the whole\ncohort is). Observational framing on every report. 422\noutcomes_invalid_compare / outcomes_invalid_date."
     }
    },
    {
     "name": "Your programme outcomes report as a PDF",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practice/outcomes-report/content",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practice",
        "outcomes-report",
        "content"
       ]
      },
      "description": "The same report as the JSON call, rendered by the builder behind the\npractice's own PDF download; small cells withheld, observational framing\nprinted. Audited as an export before it is returned."
     }
    },
    {
     "name": "One clinician's morning brief for a day",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practice/morning-brief?clinician=",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practice",
        "morning-brief"
       ],
       "query": [
        {
         "key": "clinician",
         "value": ""
        }
       ]
      },
      "description": "The members on the clinician's schedule that day (Norvya appointments,\nelse the practice's planned visits from a panel import, which are the\npractice's day, not the clinician's), each with what changed since their\nlast visit, their open referrals and the suggested labs to confirm\n(nothing is ordered). Read on what the practice may use for each member.\nAt most 40 members. 404 clinician_not_found."
     }
    },
    {
     "name": "Rule-based message drafts for open worklist findings",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practice/outreach-drafts",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practice",
        "outreach-drafts"
       ]
      },
      "description": "One draft per OPEN finding in your latest worklist run (the wording\nlibrary the annual review prints, in the patient's language, framed with\na greeting and \"reply to this message\"; never the clinician reason text\nor a number). Urgent and practice-internal findings, and patients who\nturned messages off, are skipped and counted. Nothing is sent: send the\nbody with POST /v1/members/{member_ref}/messages (messages.write) and\nmark the finding with POST /v1/panel/worklist/items/{item_ref}/triage."
     }
    },
    {
     "name": "Invite an imported patient to claim their own Norvya account",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/claim-invite",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "claim-invite"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "For a patient your practice imported (a practice-of-record account with\nno login): Norvya emails its own invitation, in the patient's language and\nyour branding, with a one-time code; claiming also needs the date of birth\nyou recorded (five wrong tries lock it for an hour). The contact you send\nis held sealed for the invitation and never put on the account. A fresh\ncode replaces any earlier one. outcome says what happened; the code is\nnever returned. Never looks up an account by address. 409\nclaim_invite_baa_required; 422 claim_email_invalid / claim_phone_invalid /\nclaim_channel_invalid. A san",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"channel\": \"email\",\n  \"email\": \"string\",\n  \"phone\": \"string\",\n  \"language\": \"es\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Where a patient's claim invitation stands",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/claim-invite",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "claim-invite"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "no_contact | not_sent | sent | expired | claimed | revoked, or\nhas_login for a patient who already signs in themselves; whether a\ncontact is on file (never the contact) and the dates. The resource a\nmember.account_claimed webhook points to."
     }
    },
    {
     "name": "Open a video room for an existing appointment",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/appointments/:appointment_ref/video-link",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "appointments",
        ":appointment_ref",
        "video-link"
       ],
       "variable": [
        {
         "key": "appointment_ref",
         "value": ""
        }
       ]
      },
      "description": "Through the app's own video path (telehealth_video.create_visit): the\nappointment's clinician hosts, the patient joins from the app, the room\nopens 15 minutes before and closes 60 minutes after the booked end.\nIdempotent: an open room for the appointment is returned (created false).\nRecording and transcription are off and cannot be turned on. 404\nappointment_not_found; 422 partner_appointment_required / host_required /\ninvalid_context; 503 video_not_activated (no BAA-covered vendor\nconfigured; a sandbox uses Norvya's simulated vendor).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"context\": \"concierge\",\n  \"interpreter_language\": \"es\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your clinicians with their licence and NPI fields",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practice/clinicians/credentials",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practice",
        "clinicians",
        "credentials"
       ]
      },
      "description": "The active clinical staff (admin, provider, pharmacist, therapist) as\nstaff_ref values with the licence fields Norvya holds on their account:\nlicence number, US state or issuing country and authority (DHA, DoH,\nMOHAP ... outside the US, where there is no NPI and no state), NPI, and\nwhether Norvya verified the professional (verified_professional, from the\nclinician registration review). Norvya does not track licence expiry on\nthe account and does not re-verify against a board here. Staff details\nare not patient data."
     }
    },
    {
     "name": "Your benefits-coordination worklist (transport, home modification)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/practice/benefits/worklist",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "practice",
        "benefits",
        "worklist"
       ]
      },
      "description": "The clinic benefits worklist (benefits.clinic_worklist): transport\nrequests and home-modification (HCBS) needs on OPEN community referrals,\neach with its member_ref and the sdoh_referral_ref of the referral it\nrides on, for patients who share their medical history with you (the\nsocial-needs family's gate). Norvya books no ride, authorises no service\nand determines no eligibility; every row says so."
     }
    }
   ]
  },
  {
   "name": "Specialty care",
   "description": "For specialty practices and the EMR vendors that serve them: a patient's specialty hub results through one {hub} path parameter (the hubs are listed on the call), each section under the patient's sharing switches with the domains they have not shared listed in withheld; the four direct specialty checks (eGFR as a number with its trend and never a KDIGO stage, the GLP-1 MTC/MEN2 check, the colonoscopy interval, the heart-failure symptom check); and stateless spirometry, lung-cancer screening and GI alarm checks that take your values and store nothing. Treating practices only. Questionnaires stay in Clinical intelligence (one instrument registry).",
   "item": [
    {
     "name": "A patient's specialty hub results",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/specialty/:hub",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "specialty",
        ":hub"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "hub",
         "value": ""
        }
       ]
      },
      "description": "The results the patient's condition hubs produced (home blood pressure,\nthe heart-failure symptom check, eGFR as a number with its trend, the\nGLP-1 MTC/MEN2 check, neuropathy, asthma control, PEST, RAPID3-style,\nthe colonoscopy interval, reminder plans, questionnaire scores), each\nsection under the patient's sharing switches for you with the domains\nthey have NOT shared listed in `withheld`. Never a KDIGO stage, never a\nrisk score from the left-out list, never item-level answers; 42 CFR Part 2\nquestionnaires never appear. 404 unknown_specialty."
     }
    },
    {
     "name": "eGFR, the GLP-1 thyroid check, the colonoscopy interval and the heart-failure check",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/specialty-checks",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "specialty-checks"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The four direct reads from the specialty hubs, each null when there is\nno result (or the data behind it is not shared: `withheld` lists the\ndomains). egfr: race-free CKD-EPI 2021 as a number with its trend, never a\nstage (ckd_stage is always null with the reason). glp1_thyroid_check: the\nmedullary thyroid cancer / MEN2 contraindication check on the problem\nlist. colonoscopy_interval: the stored surveillance recommendation.\nhf_symptom: the stored heart-failure symptom check."
     }
    },
    {
     "name": "Interpret spirometry values (GOLD criteria; stateless)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/clinical/checks/spirometry",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "clinical",
        "checks",
        "spirometry"
       ]
      },
      "description": "FEV1/FVC (+ FEV1 and FVC % predicted from your own report) to\nobstruction and GOLD grade, the hub's own rule. No patient, nothing\nstored. A COPD diagnosis needs a post-bronchodilator test.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"fev1_fvc\": 0.0,\n  \"fev1_pct_pred\": 0.0,\n  \"fvc_pct_pred\": 0.0\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Lung-cancer screening eligibility (USPSTF 2021; stateless)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/clinical/checks/lung-cancer-screening",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "clinical",
        "checks",
        "lung-cancer-screening"
       ]
      },
      "description": "Adults 50-80 with at least 20 pack-years who smoke now or quit within\n15 years. Smoking history is not stored by Norvya, so this is not a care\ngap: send the values from your record. Nothing stored.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"age\": 0,\n  \"pack_years\": 0.0,\n  \"current_smoker\": false,\n  \"years_since_quit\": 0.0\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "GI alarm-feature triage lane (stateless)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/clinical/checks/gi-alarm",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "clinical",
        "checks",
        "gi-alarm"
       ]
      },
      "description": "The red-flag lane (emergency | urgent | soon | self_manage) for the\nalarm features present; it only ever escalates. Unknown keys are refused\n(422 unknown_alarm_item). Not a diagnosis and not an emergency service.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"answers\": {\n    \"blood_in_stool\": true\n  }\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    }
   ]
  },
  {
   "name": "Hospital at home, days at home & wounds",
   "description": "For hospitals: open and close hospital-at-home episodes (the admission attestations are your clinician's, recorded as such), read contacts against your own protocol, escalations and the NEWS2 observation timeline, with a webhook on each escalation. A patient's observed days at home from recorded care events, only inside a recorded ascertainment period (no period, no number), and the wound log: each wound's location and assessment dates (never its measurements, which are image-based estimates, never the wound model's type, stage, severity, trajectory or tissue percentages, and never the photographs). Hospitals only.",
   "item": [
    {
     "name": "Your hospital-at-home episodes",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/hospital-at-home/episodes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospital-at-home",
        "episodes"
       ]
      },
      "description": "Episodes of patients still linked to your hospital, newest admission\nfirst, with contact counts (completed / missed / unrecorded: a contact\nwith no completion and no missed reason is unrecorded, never missed) and\ntoday's completed contacts. Norvya determines no eligibility and does not\ngrade a programme against its own schedule."
     }
    },
    {
     "name": "Open a hospital-at-home episode",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/hospital-at-home/episodes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospital-at-home",
        "episodes"
       ]
      },
      "description": "Opens the episode exactly as the staff screen does: admission from the\nemergency department or an inpatient bed only, all three attestations\n(your admitting clinician's, recorded as such; Norvya determines none of\nthem) true, one open episode per patient (409 episode_already_open), not\ndated in the future. The patient must be actively linked to your hospital\n(404 member_not_found). Mirrored into days at home as zero days away.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"member_ref\": \"string\",\n  \"admission_source\": \"string\",\n  \"admitted_on\": \"string\",\n  \"program_name\": \"string\",\n  \"primary_problem_text\": \"string\",\n  \"inpatient_level_attested\": false,\n  \"home_environment_assessed\": false,\n  \"patient_consented\": false,\n  \"protocol_in_person_visits_per_day\": 0,\n  \"protocol_clinician_eval_per_day\": 0,\n  \"escalation_plan_text\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One hospital-at-home episode: contacts, daily rollup, escalations",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/hospital-at-home/episodes/:episode_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospital-at-home",
        "episodes",
        ":episode_ref"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "The episode with every contact (scheduled / completed / missed /\nunrecorded), one row per day against the protocol your programme recorded\n(meets_protocol null when none was recorded), and the escalations with\ntheir response times. 404 episode_not_found for an episode that is not\nyours or whose patient's link is no longer live (one answer for both)."
     }
    },
    {
     "name": "The episode's NEWS2 observation timeline",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/hospital-at-home/episodes/:episode_ref/news2",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospital-at-home",
        "episodes",
        ":episode_ref",
        "news2"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "Every observation round, newest first (at most 50): the vital signs as\nrecorded, the NEWS2 score and band, or why the round could not be scored\n(incomplete, stale, age or pregnancy exclusion: stored, never scored as\nzero); the latest round re-scored against now (a fresh round goes stale\nafter max_age_minutes); the trend; and the alert level the care team was\ngiven. NEWS2 is a trigger for clinical review, not a diagnosis."
     }
    },
    {
     "name": "Close a hospital-at-home episode",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/hospital-at-home/episodes/:episode_ref/close",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospital-at-home",
        "episodes",
        ":episode_ref",
        "close"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "Ends the episode (409 episode_already_ended; 422 invalid_end_reason,\ndate_in_future, end_before_start). died is mirrored into days at home as a\ndeath event, exactly as the staff screen does.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"end_reason\": \"string\",\n  \"ended_on\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Observed days at home (no ascertainment, no number)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/days-at-home",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "days-at-home"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Days at home over the window ending today, from recorded care events,\ncounted only over the days a recorded ascertainment period covers (partial\ncoverage is never extrapolated). With no ascertainment period days_at_home\nis null with reason no_ascertainment_period: no recorded admission does not\nmean none happened. A same-day ED visit and a hospital-at-home episode are\nnot days away. Never a projection. The patient must share their medical\nhistory with you (403 consent_not_granted)."
     }
    },
    {
     "name": "A patient's wound log: the record and its assessment dates",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/wounds",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "wounds"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Each tracked wound (or burn): location, first and last assessment, the\nassessment count and the date of each assessment. No measurements: the\nwound tracker's measurements are image-based estimates, not a clinician's\nmeasurement, and are not shared with partners. The wound model's\nclassification (wound type, stage, severity, healing trajectory, tissue\npercentages) is not returned. Photographs are not available through the API.\nThe patient must share their skin scans with you (403 consent_not_granted)."
     }
    }
   ]
  },
  {
   "name": "Pharmacy",
   "description": "For pharmacies: the patient roster with dose-log adherence (an unrecorded dose is not a missed dose, and never a PDC), medication reviews to completion, discharge follow-up episodes with day-3 and day-30 checks, packing verification, deliveries, the medication sync plan (estimates from fills, never an order), monitoring and refills due. Webhooks for refills due and discharge episodes. Pharmacies only; a patient must share their medicines with the pharmacy. The assisted-living, group-home and nursing-home sites a pharmacy runs are in Care sites.",
   "item": [
    {
     "name": "Your pharmacy's patients",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients"
       ]
      },
      "description": "Every active member: whether they share medications with you and, when\nthey do, the pack cycle, the open discharge follow-up episode with its\nnext due contact, and the care site they live at (one of yours). With\npharmacy.adherence.read also the last 7 days' dose counts (taken, skipped\nand unrecorded kept apart; an unrecorded dose is never missed). A member\nwho has not shared medications is listed with every field withheld."
     }
    },
    {
     "name": "A patient's dose log and adherence summary",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients/:member_ref/adherence",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients",
        ":member_ref",
        "adherence"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "rx_doses.adherence_summary: confirmed_rate = taken / all due slots (a\nfloor), recorded_rate = taken / (taken + skipped), an estimate over the\nrecorded doses only; unrecorded doses are counted apart and never as\nmissed. Not a proportion of days covered (that needs fill claims). Plus\nevery dose recorded in the window, with who recorded it (patient,\ncaregiver or staff)."
     }
    },
    {
     "name": "A patient's medication reviews and whether one is due",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients/:member_ref/medication-reviews",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients",
        ":member_ref",
        "medication-reviews"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Start a medication review (or return the open draft)",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients/:member_ref/medication-reviews",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients",
        ":member_ref",
        "medication-reviews"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "med_review.start_review: the patient's current medicines and the\nautomatic flags (prompts for the pharmacist, not orders). One draft per\npatient: an open draft is refreshed and returned."
     }
    },
    {
     "name": "One medication review",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/medication-reviews/:review_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "medication-reviews",
        ":review_ref"
       ],
       "variable": [
        {
         "key": "review_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Add a recommendation to a draft review",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/medication-reviews/:review_ref/recommendations",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "medication-reviews",
        ":review_ref",
        "recommendations"
       ],
       "variable": [
        {
         "key": "review_ref",
         "value": ""
        }
       ]
      },
      "description": "med_review.add_recommendation (409 review_completed; 404\nfinding_not_found; 422 invalid_intervention_kind / description_required /\ninvalid_prescriber_response).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"kind\": \"string\",\n  \"description\": \"string\",\n  \"finding_key\": \"string\",\n  \"prescriber_response\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Complete a medication review",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/medication-reviews/:review_ref/complete",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "medication-reviews",
        ":review_ref",
        "complete"
       ],
       "variable": [
        {
         "key": "review_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"summary\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your discharge follow-up episodes",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/discharge-episodes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "discharge-episodes"
       ]
      },
      "description": "The day-3 and day-30 contacts (due / overdue / done), the medication\ncomparison counts and the 30-day outcome. An outcome that is null is \"not\nknown\", never \"no\". Patients no longer linked or no longer sharing\nmedications drop out."
     }
    },
    {
     "name": "Open a discharge follow-up episode",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/discharge-episodes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "discharge-episodes"
       ]
      },
      "description": "pharmacy_care.create_episode: the medication comparison is computed by\nmed_reconcile.compare; pre_admission_meds defaults to the patient's list\non file (422 invalid_discharged_from, date_out_of_range,\nmedication_list_invalid).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"member_ref\": \"mr_3f9c1a0b7d2e4c6a8b1d0e2f\",\n  \"discharge_date\": \"2026-10-12\",\n  \"discharged_from\": \"string\",\n  \"facility_label\": \"string\",\n  \"discharge_meds\": [\n    null\n  ],\n  \"pre_admission_meds\": [\n    null\n  ]\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One discharge follow-up episode",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/discharge-episodes/:episode_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "discharge-episodes",
        ":episode_ref"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Replace the episode's medication lists (the comparison is recomputed)",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/discharge-episodes/:episode_ref/medications",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "discharge-episodes",
        ":episode_ref",
        "medications"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"discharge_meds\": [\n    null\n  ],\n  \"pre_admission_meds\": [\n    null\n  ]\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record how one medication difference was resolved",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/discharge-episodes/:episode_ref/resolutions",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "discharge-episodes",
        ":episode_ref",
        "resolutions"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"item_key\": \"string\",\n  \"status\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record a day-3 or day-30 contact attempt",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/discharge-episodes/:episode_ref/checks/:which",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "discharge-episodes",
        ":episode_ref",
        "checks",
        ":which"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        },
        {
         "key": "which",
         "value": ""
        }
       ]
      },
      "description": "reached or declined completes the check with the items you confirmed;\nany other result is recorded as an attempt (422 invalid_check /\ninvalid_contact_result).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"contact_result\": \"string\",\n  \"items\": {},\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record the 30-day outcome",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/discharge-episodes/:episode_ref/outcome",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "discharge-episodes",
        ":episode_ref",
        "outcome"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "A readmission or ED visit needs its date inside the 30-day window (422\nevent_date_required / outside_30_day_window / invalid_outcome_source); a\nrecorded event is mirrored once into the care events every consumer reads.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"readmitted\": false,\n  \"readmit_date\": \"string\",\n  \"ed_visit\": false,\n  \"ed_date\": \"string\",\n  \"source\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Close (or reopen) an episode",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/discharge-episodes/:episode_ref/close",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "discharge-episodes",
        ":episode_ref",
        "close"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"reopen\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "The packing queue",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/packing",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "packing"
       ]
      },
      "description": "pharmacy_ops.packing_queue: active pack cycles due within `days`\n(overdue first), each with the change count against the last verified\npack (the first pack has no baseline and says so)."
     }
    },
    {
     "name": "A patient's pack change report",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients/:member_ref/packing",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients",
        ":member_ref",
        "packing"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Record a verified pack",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients/:member_ref/packing/verify",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients",
        ":member_ref",
        "packing",
        "verify"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "pharmacy_ops.verify_pack: every checklist item must be true (422\nchecklist_incomplete); the current list becomes the next baseline;\nmark_filled moves the pack cycle (404 cycle_not_found without one).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"checklist\": {},\n  \"note\": \"string\",\n  \"mark_filled\": false,\n  \"fill_date\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's confirmed deliveries",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients/:member_ref/deliveries",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients",
        ":member_ref",
        "deliveries"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Confirm a delivery at the door",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients/:member_ref/deliveries",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients",
        ":member_ref",
        "deliveries"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "pharmacy_ops.record_delivery without a photo (422 recipient_required;\n404 cycle_not_found when mark_filled and no cycle).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"recipient_name\": \"string\",\n  \"note\": \"string\",\n  \"mark_filled\": false,\n  \"notify_family\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A refill-sync plan from your own fill records",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/patients/:member_ref/sync-plan",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "patients",
        ":member_ref",
        "sync-plan"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "pharmacy_ops.sync_plan: when each medicine runs out and the short fill\nthat reaches one sync date. Quantities assume steady use; estimates for\nthe pharmacist, never an order."
     }
    },
    {
     "name": "Monitoring due across your patients",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/monitoring-due",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "monitoring-due"
       ]
      },
      "description": "care_sites.monitoring_due for every patient who shares medications:\na consensus monitoring schedule (antipsychotics, lithium, valproate,\ncarbamazepine, clozapine ANC, oral terbinafine) overridden per check by an\nactive prescriber order you recorded. It lists what has not been\nRECORDED in Norvya, never that something was not done; the prescriber's\norders win."
     }
    },
    {
     "name": "Pack refills due soon or overdue",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/pharmacy/refills-due",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "pharmacy",
        "refills-due"
       ]
      },
      "description": "Your active pack cycles whose next fill is within `days` (overdue\nincluded), from rx_doses.pack_cycle_dict: next fill = last fill + cycle\ndays; an overdue cycle is reported overdue, never rolled forward."
     }
    }
   ]
  },
  {
   "name": "Care sites",
   "description": "For the organisations that run assisted-living, group-home and nursing-home sites: pharmacies AND care-facility operators, each reaching only the sites it owns (a pharmacy named as a facility site's dispenser does not reach that site here). The census, the MAR (scheduled and PRN administrations with follow-up), rounds, medication incidents, change-of-condition reports, the resident care plan and emergency preparedness. A nursing home is the same site with site_type nursing_home, the operator's recorded licence kind and bed count, and each resident's short or long stay; Norvya does no MDS assessment, PDPM coding or CMS submission. The MAR and medication incidents need the resident's medicines shared with the organisation (at a pharmacy's site, everything does). Webhooks for changes of condition, incidents and MAR exceptions go to the site's owner. Admitting a resident (an existing patient, or one without a Norvya login by your own resident ID) and issuing, listing and revoking family read-only access, each attested by a named staff member under the app's consent rules.",
   "item": [
    {
     "name": "Your assisted living, group home and nursing home sites",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites"
       ]
      },
      "description": "Every active site your organisation (a pharmacy or a care-facility\noperator) owns; never a site you only dispense to. site_type is assisted_living,\ngroup_home or nursing_home (site_types lists them). A nursing home also\ncarries licensure_kind (snf | nf | snf_nf: skilled nursing facility,\nnursing facility, or both) and licensed_beds as the operator recorded them\n(null when not recorded, and always null at other site types); Norvya\nverifies neither."
     }
    },
    {
     "name": "A site's census",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/census",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "census"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_living.site_census: residents per wing with today's\ndue-but-unrecorded doses (never \"missed\"), as-needed follow-ups waiting,\nevents in 24 hours, falls in 30 days, no vitals in the site's N days (a\nNorvya convention the site sets), open condition reports, rounds not\nrecorded. At a nursing home each resident's stay_type (short_stay |\nlong_stay, or null when not recorded) is included."
     }
    },
    {
     "name": "A resident's medication administration record for today",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/mar",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "mar"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Record a scheduled dose as given, held or refused",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/mar/administrations",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "mar",
        "administrations"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "care_sites.record_staff_dose, the MAR function the site's staff use:\nthe slot must be on the resident's schedule today (422\nslot_not_scheduled / invalid_time / invalid_outcome; an as-needed\nmedicine goes through /mar/prn). Recording the same slot again replaces\nit. held and refused are kept apart from given, with the reason, and\nraise care_site.mar_exception.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"schedule_ref\": \"rxs_8a1f0c3e5b7d9a2c4e6f8b0d\",\n  \"slot_time\": \"08:00\",\n  \"outcome\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record an as-needed dose with its reason",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/mar/prn",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "mar",
        "prn"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "care_sites.record_prn: only an as-needed medicine on the resident's\nschedule (422 not_as_needed / invalid_details); a follow-up is due in 60\nminutes.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"schedule_ref\": \"string\",\n  \"reason\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record whether an as-needed dose worked",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/mar/prn/:event_ref/follow-up",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "mar",
        "prn",
        ":event_ref",
        "follow-up"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "event_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"effect\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A site's rounds board",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/rounds",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "rounds"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_living.rounds_board: each facility-configured plan's slots\n(recorded / due / not_recorded / upcoming) and the shift lead's escalation\nlist. A slot with no check is NOT RECORDED, never \"missed\"."
     }
    },
    {
     "name": "Record a round check",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/round-plans/:plan_ref/checks",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "round-plans",
        ":plan_ref",
        "checks"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "plan_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_living.record_check (409 already_recorded / no_round_due;\n422 invalid_round_outcome / invalid_slot / note_required for concern).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"outcome\": \"string\",\n  \"slot_at\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A site's medication incidents",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/medication-incidents",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "medication-incidents"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Report a medication incident",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/medication-incidents",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "medication-incidents"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_safety.report_incident: the site owner's reviewers (the\npharmacy, or at a facility site the facility and its linked pharmacy) get\nNorvya's generic alert and review it in the app (422 invalid_incident_type /\ninvalid_severity / description_required / invalid_date).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"incident_type\": \"string\",\n  \"severity\": \"string\",\n  \"description\": \"string\",\n  \"action_taken\": \"string\",\n  \"occurred_at\": \"string\",\n  \"schedule_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A site's incident and change-of-condition reports",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/condition-reports",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "condition-reports"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Report an incident or a change in a resident's condition",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/condition-reports",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "condition-reports"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_living.report_condition, the engine's escalation path\nunchanged: Norvya sends its generic alert to the site's nurses (or, with\nnone on staff, its managers and the pharmacy's staff) and the report waits\nfor a nurse, manager or the pharmacy to acknowledge it in the app. Not\nINTERACT and nobody's SBAR form (422 invalid_report_kind /\ninvalid_report_category / invalid_severity / invalid_report_request /\ndescription_required / invalid_date).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"kind\": \"string\",\n  \"category\": \"string\",\n  \"severity\": \"string\",\n  \"description\": \"string\",\n  \"action_taken\": \"string\",\n  \"request\": \"string\",\n  \"noticed_since\": \"string\",\n  \"occurred_at\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A resident's functional needs and service plan",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/care-plan",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "care-plan"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_living.plan_view: a Norvya list of everyday-support\ncategories with the support level staff entered (NOT a validated\ninstrument: validated is false), goals and review dates."
     }
    },
    {
     "name": "A site's emergency-preparedness attestations",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/emergency-preparedness",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "emergency-preparedness"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        }
       ]
      },
      "description": "preparedness.overview: what the SITE attested for each element, its\nhazards and the exercises it recorded. Never a statement that the site is\ncovered by or compliant with any rule (applicability says why). The\nidentified emergency roster is not exposed here."
     }
    },
    {
     "name": "The staff who may attest an admission or a family invitation at a site",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/attesting-staff",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "attesting-staff"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        }
       ]
      },
      "description": "The active staff the app lets admit residents and issue family access at\nthis site (care_sites.require_manage: at a pharmacy's site its admin,\nprovider or pharmacist; at a facility's site its admin or provider and the\nsite's managers), as staff_ref values with role and display name to map your own\nuser list to. Staff names are not patient data. Needs\ncare_sites.residents.write or care_sites.family.write."
     }
    },
    {
     "name": "Admit a resident (an existing patient, or one without a Norvya login)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        }
       ]
      },
      "description": "care_sites.add_resident, the app's admission engine. The named staff\nmember (attested_by_staff_ref, 422 attesting_staff_not_found) attests the\nconsent basis; consent_attested must be true (422\nconsent_attestation_required; invalid_consent_basis). With member_ref the\npatient must be your member, and at a pharmacy's site share medicines with\nit (403 medications_not_shared). Without it, full_name (422 name_required)\nand your resident_id (422 resident_id_required) create a resident with no\nNorvya login, linked to your organisation with medicines shared. 409\nalready_resident (at this site) / alread",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"member_ref\": \"string\",\n  \"full_name\": \"string\",\n  \"resident_id\": \"string\",\n  \"date_of_birth\": \"string\",\n  \"room_label\": \"string\",\n  \"wing\": \"string\",\n  \"stay_type\": \"string\",\n  \"consent_basis\": \"string\",\n  \"consent_attested\": false,\n  \"attested_by_staff_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Family access issued for a resident",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/family",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "family"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_living.family_list: every invitation for the resident at this\nsite with its status (invited, expired, active, revoked), basis and what it\nshares. The family member's name is never returned."
     }
    },
    {
     "name": "Issue a family member read-only access to a resident",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/residents/:member_ref/family",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "residents",
        ":member_ref",
        "family"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_living.issue_family_access, the app's engine: basis resident\nor guardian (422 invalid_consent_basis), attested by the named staff\nmember (422 consent_attestation_required / attesting_staff_not_found),\nsomething shared (422 nothing_shared), a valid address that is not the\nresident's (422 invalid_email), one open invitation per address (409\nalready_invited). `code` is returned ONCE; Norvya also emails it with its\ngeneric wording (no resident, no facility, nothing about health; a\nsandbox sends nothing). The family member sees counts and dated event\ntypes, never notes or medicine names. ",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"email\": \"string\",\n  \"relationship\": \"string\",\n  \"consent_basis\": \"string\",\n  \"consent_attested\": false,\n  \"attested_by_staff_ref\": \"string\",\n  \"share_events\": false,\n  \"share_medications\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Revoke a family member's access (takes effect at once)",
     "request": {
      "method": "DELETE",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/care-sites/:site_ref/family/:family_access_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-sites",
        ":site_ref",
        "family",
        ":family_access_ref"
       ],
       "variable": [
        {
         "key": "site_ref",
         "value": ""
        },
        {
         "key": "family_access_ref",
         "value": ""
        }
       ]
      },
      "description": "care_site_living.revoke_family_access: an unclaimed code stops working\nand a claimed access's caregiver grant is retracted, so the family member's\nnext read is refused. 404 family_access_not_found; 409 already_revoked."
     }
    }
   ]
  },
  {
   "name": "Medical travel",
   "description": "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.",
   "item": [
    {
     "name": "Medical travel vocabularies: phases, leg modes, nursing statuses, invoice flags, languages",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/reference",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "reference"
       ]
      },
      "description": "No patient data. `not_exposed` names what stays in Norvya because a\nperson attests to it (a nurse's visit record, an approval decision, an\ninvoice issue)."
     }
    },
    {
     "name": "Your desk's care journeys (open by default), with continuity and nursing flags",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys"
       ]
      },
      "description": "Patients actively on your roster only (a sandbox: synthetic members).\nNewest first, at most 500."
     }
    },
    {
     "name": "Open a care journey for a patient on your roster (waits for the patient's acceptance)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys"
       ]
      },
      "description": "travel_coordination.create_for_patient: the patient receives Norvya's\ngeneric \"request to review\" push and the journey stays consent_status\n`pending` until they accept in the app; until then every write answers\n409 care_journey_consent_pending. One open journey per patient per desk\n(409 care_journey_already_open).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"member_ref\": \"mr_3f9c1a0b7d2e4c6a8b1d0e2f\",\n  \"origin_country\": \"AE\",\n  \"destination_country\": \"US\",\n  \"primary_language\": \"ar\",\n  \"interpreter_required\": false,\n  \"treating_facility\": \"string\",\n  \"facility_ref\": \"string\",\n  \"sponsor_type\": \"government\",\n  \"sponsor_name\": \"string\",\n  \"reason\": \"string\",\n  \"planned_arrival\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One care journey: phase, dates, timeline, continuity after repatriation",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Move a journey forward a phase",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/phase",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "phase"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "care_journey.advance: forward only (409 phase_not_forward), the dates\nset by the move (arrival, discharge, departure), a timeline line and a\nchained audit row. 409 care_journey_consent_pending until the patient\naccepted; 409 approvals_required when your desk requires approvals before\ntravel.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"to_phase\": \"arrived\",\n  \"on_date\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Link (or unlink) the journey's partner hospital",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/facility",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "facility"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"facility_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Flights and transfers, each end in its own time zone, with live flight status",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/legs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "legs"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "`live` is null until the leg is checked (a flight-data provider must be\nconfigured; GET /v1/travel/reference). Marking an outbound leg flown never\nmoves the journey's phase."
     }
    },
    {
     "name": "Add a flight or transfer leg",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/legs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "legs"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "journey_ops.create_leg (direction, mode and both places required; local\ntimes with each end's IANA zone; oxygen 0.5-15 L/min; an escort must be\non the care team on the day of departure).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"direction\": \"string\",\n  \"mode\": \"string\",\n  \"status\": \"string\",\n  \"leg_order\": 0,\n  \"carrier\": \"string\",\n  \"flight_number\": \"string\",\n  \"booking_reference\": \"string\",\n  \"depart_place\": \"AUH\",\n  \"arrive_place\": \"IAH\",\n  \"depart_at\": \"2026-10-20T02:10\",\n  \"depart_tz\": \"Asia/Dubai\",\n  \"arrive_at\": \"string\",\n  \"arrive_tz\": \"string\",\n  \"stretcher\": false,\n  \"oxygen\": false,\n  \"oxygen_lpm\": 0.0,\n  \"wheelchair\": \"string\",\n  \"medical_escort_required\": false,\n  \"escort_staff_ref\": \"string\",\n  \"other_needs\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Edit a leg (any subset; \"\" clears a text field)",
     "request": {
      "method": "PATCH",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/legs/:leg_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "legs",
        ":leg_ref"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        },
        {
         "key": "leg_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"direction\": \"string\",\n  \"mode\": \"string\",\n  \"status\": \"string\",\n  \"leg_order\": 0,\n  \"carrier\": \"string\",\n  \"flight_number\": \"string\",\n  \"booking_reference\": \"string\",\n  \"depart_place\": \"AUH\",\n  \"arrive_place\": \"IAH\",\n  \"depart_at\": \"2026-10-20T02:10\",\n  \"depart_tz\": \"Asia/Dubai\",\n  \"arrive_at\": \"string\",\n  \"arrive_tz\": \"string\",\n  \"stretcher\": false,\n  \"oxygen\": false,\n  \"oxygen_lpm\": 0.0,\n  \"wheelchair\": \"string\",\n  \"medical_escort_required\": false,\n  \"escort_staff_ref\": \"string\",\n  \"other_needs\": \"string\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Cancel a leg (kept, never deleted)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/legs/:leg_ref/cancel",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "legs",
        ":leg_ref",
        "cancel"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        },
        {
         "key": "leg_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"reason\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Check the leg's live flight status now",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/legs/:leg_ref/refresh-status",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "legs",
        ":leg_ref",
        "refresh-status"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        },
        {
         "key": "leg_ref",
         "value": ""
        }
       ]
      },
      "description": "flight_status.refresh_leg (cached a few minutes per flight and day).\nOnly the live fields change; the leg status and the phase stay manual.\n503 flight_status_not_configured; 409 flight_status_leg_not_active; 422\nflight_status_needs_flight_number / flight_status_needs_departure."
     }
    },
    {
     "name": "The journey's care team and the staff hours logged on it",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/team",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "team"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "Time tracking, not payroll (journey_ops): minutes by staff member,\nactivity and day; superseded, voided and open entries are not counted.\nAdding members and clocking time stay in Norvya (a named staff member)."
     }
    },
    {
     "name": "Approval progress on the journey (read only)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/approvals",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "approvals"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "Each run of the desk's approval template: steps, the current step and\nthe decisions with who decided in what role. A step is decided in Norvya\nby a staff member whose role the step requires."
     }
    },
    {
     "name": "Your partner-hospital directory (accreditations as recorded; Norvya verifies none)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/facilities",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "facilities"
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Add a partner hospital to your directory",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/facilities",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "facilities"
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"name\": \"string\",\n  \"facility_type\": \"string\",\n  \"city\": \"string\",\n  \"country\": \"string\",\n  \"address\": \"string\",\n  \"phone\": \"string\",\n  \"email\": \"string\",\n  \"website\": \"string\",\n  \"contacts\": [\n    {}\n  ],\n  \"specialties\": [\n    \"string\"\n  ],\n  \"accreditations\": [\n    {}\n  ],\n  \"agreement_status\": \"string\",\n  \"agreement_expires_on\": \"string\",\n  \"languages_spoken\": [\n    \"string\"\n  ],\n  \"notes\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One partner hospital",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/facilities/:facility_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "facilities",
        ":facility_ref"
       ],
       "variable": [
        {
         "key": "facility_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Update a partner hospital (any subset)",
     "request": {
      "method": "PATCH",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/facilities/:facility_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "facilities",
        ":facility_ref"
       ],
       "variable": [
        {
         "key": "facility_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"name\": \"string\",\n  \"facility_type\": \"string\",\n  \"city\": \"string\",\n  \"country\": \"string\",\n  \"address\": \"string\",\n  \"phone\": \"string\",\n  \"email\": \"string\",\n  \"website\": \"string\",\n  \"contacts\": [\n    {}\n  ],\n  \"specialties\": [\n    \"string\"\n  ],\n  \"accreditations\": [\n    {}\n  ],\n  \"agreement_status\": \"string\",\n  \"agreement_expires_on\": \"string\",\n  \"languages_spoken\": [\n    \"string\"\n  ],\n  \"notes\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A home-nursing case: PRN, LOMN, LOG versions, exception starts, pauses, flags, hours check",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "nursing_authorization.case_dict. Flags: extension_required,\nlog_expired, lomn_pending, paused, no_log. Documents are described (name,\ntype, size, SHA-256), never returned."
     }
    },
    {
     "name": "Move a nursing case forward (the LOG gates nursing_active)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/status",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "status"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "nursing_authorization.set_status: forward only (409\nnursing_status_not_forward); paused and resume stay in Norvya (409\nnursing_status_use_pause); nursing_active needs a LOG or exception start\ncovering today (409 nursing_log_not_in_force).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"status\": \"nursing_active\",\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record a new version of the sponsor's Letter of Guarantee (multipart, with the letter)",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/logs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "logs"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "nursing_authorization.record_log: a NEW version (never edited); the\nnewest version gates scheduling. 409 log_prn_mismatch when the PRN is not\nthe case's; 413 nursing_document_too_large; 422 nursing_document_type.",
      "body": {
       "mode": "formdata",
       "formdata": [
        {
         "key": "sponsor_reference",
         "value": "",
         "type": "text"
        },
        {
         "key": "start_date",
         "value": "",
         "type": "text"
        },
        {
         "key": "end_date",
         "value": "",
         "type": "text"
        },
        {
         "key": "approved_hours",
         "value": "",
         "type": "text"
        },
        {
         "key": "hours_unit",
         "value": "",
         "type": "text"
        },
        {
         "key": "issued_on",
         "value": "",
         "type": "text"
        },
        {
         "key": "document",
         "type": "file",
         "src": []
        }
       ]
      }
     }
    },
    {
     "name": "Planned nursing shifts and the dates the paperwork allows",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/shifts",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "shifts"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Plan a nursing shift (refused outside the newest LOG's dates or in a pause)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/shifts",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "shifts"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "nursing_authorization.create_shift. The server's gate: 409\nnursing_no_log (no LOG at all), 409 shift_outside_log (outside the newest\nLOG's dates and any exception start; a lapsed LOG escalates to the desk at\nonce), 409 nursing_paused, 409 shift_overlap (the same nurse elsewhere),\n422 shift_nurse_not_on_team.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"nurse_staff_ref\": \"string\",\n  \"start_local\": \"2026-10-12T08:00\",\n  \"end_local\": \"2026-10-12T20:00\",\n  \"tz\": \"string\",\n  \"note\": \"string\",\n  \"confirmed\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Confirm or cancel a shift (cancel needs a reason)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/shifts/:shift_ref/status",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "shifts",
        ":shift_ref",
        "status"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        },
        {
         "key": "shift_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"status\": \"cancelled\",\n  \"reason\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Scheduled and delivered minutes against the LOMN and the LOG, by day, week and span",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/hours-check",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "hours-check"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Visit records: nurses' notes with vitals, medication administration, incidents (read only)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/visits",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "visits"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "home_nursing_records.care_record_summary over case-local days (default\nthe last 14). A scheduled dose with nothing recorded is `not_recorded`,\nnever \"missed\". Written in Norvya by the nurse on the care team; a partner\nsystem does not write them. Items carry an item_ref for translation."
     }
    },
    {
     "name": "Patient and family satisfaction survey results for the case",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/surveys",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "surveys"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "Every response with plain averages (the desk's own quality questions,\nnot a validated instrument). A comment the crisis path flagged is withheld\n(comment_withheld: crisis_path)."
     }
    },
    {
     "name": "A sponsor referral's status: consent basis, documented consent, claim of the account",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/referral",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "referral"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Send a sponsor's home-nursing referral for a patient without the app",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/referrals",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "referrals"
       ]
      },
      "description": "nursing_referral.create_ipc_referral: a MANAGED patient account (nobody\ncan sign in; nothing is sent to it), linked to your desk, and a nursing\ncase keyed to the PRN, status referral_received. The case is consent\n`pending` on the documented basis: NOTHING moves on it until desk staff\nrecord the patient's signed consent form in Norvya (or the patient claims\nthe account and accepts in the app). 409 prn_taken. In a sandbox the\naccount is labelled synthetic and no contact is stored.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"sponsor_reference\": \"IPC-26-1005\",\n  \"full_name\": \"string\",\n  \"date_of_birth\": \"string\",\n  \"care_country\": \"GB\",\n  \"care_state\": \"FL\",\n  \"sex\": \"string\",\n  \"email\": \"string\",\n  \"phone\": \"string\",\n  \"diagnosis_summary\": \"string\",\n  \"language\": \"string\",\n  \"sponsor_name\": \"string\",\n  \"origin_country\": \"AE\",\n  \"received_on\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "The journey's HL7 International Patient Summary (FHIR document Bundle)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/ips",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "ips"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "care_journey.ips_from_packet over the coordinator's consent-scoped\npacket (fhir_export.patient_bundle -> fhir_export.ips_document; never a\nsecond builder). Withheld sections are marked, not empty. 403\ncare_journey_handoff_not_shared; 503 care_journey_bundle_unavailable."
     }
    },
    {
     "name": "The repatriation packet: the FHIR collection bundle plus the travel context",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/repatriation-packet",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "repatriation-packet"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "What the patient carries home, as the desk may see it: consent-scoped\nper resource type (medications need share_medications, labs share_labs,\nvitals share_biometrics...); what was withheld is named in\nconsent_excluded."
     }
    },
    {
     "name": "The bilingual readable summary for the clinician at home (pdf or accessible html)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/summary/:fmt",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "summary",
        ":fmt"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        },
        {
         "key": "fmt",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "The weekly nursing reports for the case (drafts, sent, every version)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/reports",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "reports"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Download a weekly nursing report (pdf or accessible html, in a chosen language)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/reports/:report_ref/:fmt",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "reports",
        ":report_ref",
        ":fmt"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        },
        {
         "key": "report_ref",
         "value": ""
        },
        {
         "key": "fmt",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Your desk's monthly home-nursing invoices across cases",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/invoices",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "invoices"
       ]
      },
      "description": "One invoice per PRN per calendar month, built from approved timesheets\nagainst the LOG (nursing_reports). Newest first, at most 500. Norvya does\nnot send or collect them."
     }
    },
    {
     "name": "The case's monthly invoices",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/invoices",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "invoices"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "One invoice with its lines (care, overage, exception, outside, pause) and hold flags",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/invoices/:invoice_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "invoices",
        ":invoice_ref"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        },
        {
         "key": "invoice_ref",
         "value": ""
        }
       ]
      },
      "description": "Money is integer minor units with an ISO 4217 code (exponent given);\nhours are minutes. Hours over the LOG are their own held `overage` line."
     }
    },
    {
     "name": "Download an invoice (pdf or accessible html, in a chosen language)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/nursing/invoices/:invoice_ref/:fmt",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "nursing",
        "invoices",
        ":invoice_ref",
        ":fmt"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        },
        {
         "key": "invoice_ref",
         "value": ""
        },
        {
         "key": "fmt",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Machine-translate one free-text item on the journey",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/translations",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "translations"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "translation_items: the saved translation is served again for the same\nsource text (free, identical); a new one writes a chained AI_INFERENCE\naudit row. Needs the scope that reads the item as well (travel.nursing.read\nfor nursing items, travel.billing.read for an invoice's reasons). A\ntranslation that could not be validated is status `failed` with a reason,\nnot an error; legal_reference_only items (a LOMN) are a reading aid, never\nthe document. 503 translation_disabled.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"item_type\": \"shift_note\",\n  \"item_ref\": \"string\",\n  \"field\": \"string\",\n  \"target_language\": \"ar\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your desk's travel inquiries (open emergencies first, then newest)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/inquiries",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "inquiries"
       ]
      },
      "description": "travel_coordination.list_inquiries (the desk screen's list), at most 500;\n`counts` by status across the desk."
     }
    },
    {
     "name": "Create an inquiry from your CRM (by your own id)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/inquiries",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "inquiries"
       ]
      },
      "description": "travel_coordination.create_inquiry: status `new`, attributed to your\nsystem (never a person). A member_ref links a patient on your roster.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"external_id\": \"CRM-2026-00417\",\n  \"contact_name\": \"string\",\n  \"origin_country\": \"AE\",\n  \"contact_detail\": \"string\",\n  \"primary_language\": \"ar\",\n  \"interpreter_required\": false,\n  \"condition_summary\": \"string\",\n  \"sponsor_type\": \"government\",\n  \"sponsor_name\": \"string\",\n  \"member_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One inquiry with its status history and quote versions",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/inquiries/:inquiry_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "inquiries",
        ":inquiry_ref"
       ],
       "variable": [
        {
         "key": "inquiry_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Edit an open inquiry, or link / unlink the patient",
     "request": {
      "method": "PATCH",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/inquiries/:inquiry_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "inquiries",
        ":inquiry_ref"
       ],
       "variable": [
        {
         "key": "inquiry_ref",
         "value": ""
        }
       ]
      },
      "description": "travel_coordination.update_inquiry + link_patient (409 inquiry_closed\nonce declined or converted).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"contact_name\": \"string\",\n  \"contact_detail\": \"string\",\n  \"origin_country\": \"string\",\n  \"primary_language\": \"string\",\n  \"interpreter_required\": false,\n  \"condition_summary\": \"string\",\n  \"sponsor_type\": \"string\",\n  \"sponsor_name\": \"string\",\n  \"member_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Move an inquiry (the desk's own moves: reviewing, accepted, declined)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/inquiries/:inquiry_ref/status",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "inquiries",
        ":inquiry_ref",
        "status"
       ],
       "variable": [
        {
         "key": "inquiry_ref",
         "value": ""
        }
       ]
      },
      "description": "travel_coordination.move: only the moves the desk's screen allows from\nthe current status (409 inquiry_move_not_allowed).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"to_status\": \"reviewing\",\n  \"reason\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Issue the first quote or a revision (an immutable Good Faith Estimate version)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/inquiries/:inquiry_ref/quote",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "inquiries",
        ":inquiry_ref",
        "quote"
       ],
       "variable": [
        {
         "key": "inquiry_ref",
         "value": ""
        }
       ]
      },
      "description": "travel_coordination.issue_quote -> good_faith_estimate.issue: hashed,\nkept six years; a revision supersedes, never overwrites. In the app when\nthe inquiry was linked to a patient before the first quote, otherwise\nrecorded as e-mail delivery (your desk sends it; Norvya does not). Norvya\nnever chooses a code or a price and takes no payment.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"payload\": {},\n  \"primary_service\": \"string\",\n  \"recipient_dob\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Convert an accepted inquiry to a care journey (waits for the patient's acceptance)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/inquiries/:inquiry_ref/convert",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "inquiries",
        ":inquiry_ref",
        "convert"
       ],
       "variable": [
        {
         "key": "inquiry_ref",
         "value": ""
        }
       ]
      },
      "description": "travel_coordination.convert_inquiry — the function the desk's Convert\nbutton calls: 409 inquiry_not_accepted / inquiry_patient_not_linked; the\njourney is coordinator-opened, so the patient is asked in the app (generic\npush) and every journey write answers 409 care_journey_consent_pending\nuntil they accept. Needs travel.journeys.write as well.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"destination_country\": \"string\",\n  \"treating_facility\": \"string\",\n  \"planned_arrival\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "The journey's in-app thread (desk, patient, approved caregiver)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/messages",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "messages"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "The thread the desk's staff read in Norvya (travel_coordination.thread_rows),\noldest first, the last 200. The patient and caregiver are sender_role only,\nnever named; `mine` marks your own client's messages. A message sent with\n\"write in mine, send in theirs\" carries the translation the sender previewed."
     }
    },
    {
     "name": "Post in the journey's thread as your desk's system",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/travel/journeys/:journey_ref/messages",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "travel",
        "journeys",
        ":journey_ref",
        "messages"
       ],
       "variable": [
        {
         "key": "journey_ref",
         "value": ""
        }
       ]
      },
      "description": "travel_coordination.post: shown in Norvya as \"Partner system: <your\nclient's label>\", never as a person. The patient, the linked caregiver and\ndesk staff who wrote on the thread get Norvya's generic \"new message\" push\n(no content on the lock screen). 409 care_journey_consent_pending until\nthe patient accepts; 409 journey_closed once closed.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"body\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    }
   ]
  },
  {
   "name": "Records & documents",
   "description": "One patient's record as a FHIR R4 Bundle, built by the same builders and under the same consent scope as the population export (the patient's sharing choices, your own records, 42 CFR Part 2 records only under a covering consent), size-capped with the bulk export for large records. The documents Norvya already produces about a patient, listed and downloaded as PDF (or HTML where that is the only form) in the patient's language where the document supports it: survivorship care plans, Good Faith Estimates, post-discharge summaries, the wellness visit's written prevention plan, the medical-travel repatriation summary, weekly nursing reports and nursing invoices, and the pharmacist's completed medication review. Each kind keeps its own gate and scope; kinds a patient's sharing withholds are named, and kinds Norvya does not serve are listed with the reason. Every download is audited as a disclosure before it is returned.",
   "item": [
    {
     "name": "One patient's record as a FHIR R4 Bundle",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/record",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "record"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "A `collection` Bundle built by the same builders and the same consent\nscope as the population export (fhir_bulk.patient_export): the patient's\nsharing choices with your practice, your practice's own records under\npractice-of-record, member home data per their switches, 42 CFR Part 2\nprogram records only under a covering consent (labelled). What consent\nleft out is named in an OperationOutcome entry. A BAA on file is required\n(409 record_baa_required; a sandbox needs none). Capped at\nPARTNER_RECORD_MAX_RESOURCES resources / PARTNER_RECORD_MAX_BYTES bytes:\nbeyond that, 413 record_too_large_use_p"
     }
    },
    {
     "name": "The documents Norvya holds about a patient for your practice",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/documents",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "documents"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Each kind maps to a document Norvya already produces for your staff\n(survivorship care plan, Good Faith Estimate when you also hold\nbilling.read, post-discharge summary for hospitals, the wellness visit's\nwritten prevention plan; for medical-travel desks the bilingual\nrepatriation summary, weekly nursing reports and, with\ntravel.billing.read, nursing invoices; for pharmacies the completed\nmedication review letter), under that kind's own gate. Kinds the patient's\nsharing withholds are named in `withheld`; kinds Norvya does not serve\nhere are listed with the reason in `not_available`."
     }
    },
    {
     "name": "One document's metadata",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/documents/:document_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "documents",
        ":document_ref"
       ],
       "variable": [
        {
         "key": "document_ref",
         "value": ""
        }
       ]
      },
      "description": "404 document_not_found for another organisation's document, a member\nno longer linked, or a kind your token or the patient's sharing does not\nallow."
     }
    },
    {
     "name": "Download a document, in the patient's language where the document supports it",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/documents/:document_ref/content",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "documents",
        ":document_ref",
        "content"
       ],
       "variable": [
        {
         "key": "document_ref",
         "value": ""
        }
       ]
      },
      "description": "Rendered by the same builder as Norvya's own copy. A disclosure:\naudited as a PHI export before it is returned and refused (503) when the\naudit log is down. 422 document_language_unsupported for a language the\ndocument cannot be rendered in. Content-Language names the language used\n(a builder falls back to English when the script's font is missing)."
     }
    }
   ]
  },
  {
   "name": "Enrolment roster",
   "description": "For plans, state programmes and practices that hold covered lives: upload a roster (CSV / NDJSON, or a CMS eligibility / attribution file), review its dry run, and have Norvya invite everyone on it in bulk through the same invitation and in-app consent screen, under a daily cap (queued, not dropped), with reminders and phone-only join links. The enrolment report is small-cell-suppressed counts by cohort; MBIs are never stored raw, addresses are held sealed only until delivered, and a person who declines is never invited by that organisation again. Webhook: roster.enrolment_summary.",
   "item": [
    {
     "name": "Upload a roster of eligible members and get its dry run",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "text/csv"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters"
       ]
      },
      "description": "Parses the roster in the request, classifies every row (to invite,\nalready a member, opted out, duplicate, invalid, not eligible today, no\ncontact) and stages it. Nothing is sent until commit. MBIs and plan member\nids are fingerprinted, birth dates and last names validated and dropped;\naddresses are kept as keyed hashes and, encrypted, only until delivered.\nNever says whether an address has a Norvya account.",
      "body": {
       "mode": "raw",
       "raw": ""
      }
     }
    },
    {
     "name": "Your rosters",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters"
       ]
      },
      "description": "Newest first; rosters YOUR client uploaded. Counts only."
     }
    },
    {
     "name": "One roster: dry run, progress, result",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters/:roster_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters",
        ":roster_ref"
       ],
       "variable": [
        {
         "key": "roster_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Commit a staged roster: Norvya invites its people",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters/:roster_ref/commit",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters",
        ":roster_ref",
        "commit"
       ],
       "variable": [
        {
         "key": "roster_ref",
         "value": ""
        }
       ]
      },
      "description": "One invitation per row, in the person's language (Norvya's email with\na decline link, your organisation's branding), in the background. Open\ninvitations to the same address are reused (no second email); people who\ndeclined you are skipped. When the daily cap (PARTNER_INVITES_PER_DAY,\nshared with single invitations) is reached the remaining rows stay queued\nand go out on the following UTC days: none is dropped (status inviting,\nresult.queued). Phone-only rows: collect their links from join-links.\n409 roster_not_staged / roster_nothing_to_invite / organisation_not_joinable."
     }
    },
    {
     "name": "Discard a staged roster",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters/:roster_ref/discard",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters",
        ":roster_ref",
        "discard"
       ],
       "variable": [
        {
         "key": "roster_ref",
         "value": ""
        }
       ]
      },
      "description": "Its sealed addresses are purged at once; the manifest (counts, codes,\nhash) stays. A committed roster cannot be discarded (revoke invitations\nwith POST /v1/invites/{ref}/revoke)."
     }
    },
    {
     "name": "Remind the people who have not joined yet",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters/:roster_ref/remind",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters",
        ":roster_ref",
        "remind"
       ],
       "variable": [
        {
         "key": "roster_ref",
         "value": ""
        }
       ]
      },
      "description": "At most once every PARTNER_ROSTER_REMIND_DAYS (default 7) per roster and\nPARTNER_ROSTER_MAX_REMINDERS (default 2) per person; never to someone who\njoined, declined or whose invitation you revoked. Each reminder is a new\ninvitation (the old code stops working) through the same queue and cap.\n409 roster_remind_too_soon / roster_not_committed."
     }
    },
    {
     "name": "The join report: who was invited, opened, joined, declined",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters/:roster_ref/enrolment",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters",
        ":roster_ref",
        "enrolment"
       ],
       "variable": [
        {
         "key": "roster_ref",
         "value": ""
        }
       ]
      },
      "description": "Counts per status overall and per cohort with small-cell suppression\n(AGG_MIN_CELL, primary + complementary; safe to share beyond your team),\nthen your own roster rows: external_id, status, member_ref once joined and\nwhile linked, joined_at. Audited as a disclosure."
     }
    },
    {
     "name": "Phone-only rows' join links (shown once)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters/:roster_ref/join-links",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters",
        ":roster_ref",
        "join-links"
       ],
       "variable": [
        {
         "key": "roster_ref",
         "value": ""
        }
       ]
      },
      "description": "Norvya never texts someone without an account (no opt-in on record):\ndeliver each join_url, with its decline_url, through your own consented\nchannel. Each link is returned ONCE and then forgotten (only its hash\nremains); call again after a reminder for the new links."
     }
    },
    {
     "name": "Sandbox: a share of the roster's invitations join",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rosters/:roster_ref/simulate-joins",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rosters",
        ":roster_ref",
        "simulate-joins"
       ],
       "variable": [
        {
         "key": "roster_ref",
         "value": ""
        }
       ]
      },
      "description": "Sandbox credentials only (403 sandbox_only otherwise): synthetic members\njoin through the roster's open invitations (member.joined fires), so the\nenrolment report shows data.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"fraction\": 0.0\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    }
   ]
  },
  {
   "name": "Older adults",
   "description": "For geriatric practices, GUIDE-style dementia programmes and aging services: an older patient's falls risk tier (CDC STEADI) and falls-prevention programmes, physical function (Katz ADL / Lawton IADL only where the deployment holds the licence), medication burden for review (count, anticholinergic burden, sedatives; never advice), your care dyads (consent status, never the caregiver's contact details) with a staff contact log, the sleep-apnoea pathway and CPAP use (an unlogged night is unknown, not missed), the five fillable dementia risk factors (never a risk score) and the hospice review status (never an eligibility answer). Webhook: older_adults.falls_tier_raised.",
   "item": [
    {
     "name": "An older patient's falls risk tier, mobility checks and falls-prevention programmes",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/older-adults/falls",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "older-adults",
        "falls"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The newest CDC STEADI self-check as codes (tier, screen positive, falls\nin the past year, which gait / strength / balance tests flagged; fields the\nalgorithm filled from earlier checks are named in autofilled_from), the\nlatest SPPB, gait speed, Timed Up and Go and chair stand, and the patient's\nenrolments in named falls-prevention programmes with each programme's own\ncompletion threshold and fidelity. A check never done is null, never low.\nThe patient must share their medical history with you. Subscribe to\nolder_adults.falls_tier_raised for a tier that went up."
     }
    },
    {
     "name": "Physical function: Katz ADL and Lawton IADL where licensed and completed",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/older-adults/function",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "older-adults",
        "function"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The latest Katz ADL and Lawton IADL responses the patient completed\n(scored by Norvya) and whether you can request them. Their wording is\nlicensed: on a deployment without the licensed copy they are not\nrequestable (not_requestable_reason instrument_not_licensed) and no score is\ninvented. Request one with POST /v1/members/{member_ref}/instrument-requests."
     }
    },
    {
     "name": "Medication burden for medication review (65 and over)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/older-adults/medication-burden",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "older-adults",
        "medication-burden"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The same evaluation as the practice's medication-burden insight: the\ncount of CURRENT medications (only entries carrying a status or a stop date\ncount) with its band (under 5, polypharmacy 5-9, hyper-polypharmacy 10+),\nthe Anticholinergic Cognitive Burden total and band, sedatives, and regimen\nfinding codes. status explains an exclusion (under_65,\nmedications_not_shared, awaiting_medication_dates, ...). A list for review,\nnever a recommendation to stop or change a medicine."
     }
    },
    {
     "name": "Your care dyads for this patient (caregiver link, plan, contacts, GUIDE-shaped elements)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/older-adults/care-dyad",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "older-adults",
        "care-dyad"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Your organisation's dyads where this patient is the beneficiary:\nrelationship, status, whether the caregiver has a Norvya account and\nconsented, the navigator as a staff_ref, care-plan dates, contact counts,\nrespite hours and which GUIDE-shaped elements are present (no score; what\nNorvya does not do is listed in not_covered). Never the caregiver's name or\ncontact details, never the support-line number. Caregiver burden\nassessments only when the caregiver's own consent is recorded;\ncaregiver_app_access says whether the patient granted THAT caregiver the\nin-app caregiver summary. Recording these"
     }
    },
    {
     "name": "Log a contact with one of your care dyads",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/care-dyads/:dyad_ref/contacts",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "care-dyads",
        ":dyad_ref",
        "contacts"
       ],
       "variable": [
        {
         "key": "dyad_ref",
         "value": ""
        }
       ]
      },
      "description": "The staff contact log (care_dyad): date, kind, who it reached, minutes\nand after-hours, attributed to the member of your staff you name (422\nstaff_not_found). No free text. The beneficiary must still be your active\nmember sharing their medical history (else 404 care_dyad_not_found). The\nsame contact sent twice (date, kind, who, staff) returns the first with\ncreated false.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"contact_on\": \"2026-10-14\",\n  \"kind\": \"navigator_checkin\",\n  \"who\": \"string\",\n  \"minutes\": 0,\n  \"after_hours\": false,\n  \"staff\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "The sleep-apnoea pathway and CPAP adherence",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/older-adults/sleep-apnea",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "older-adults",
        "sleep-apnea"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Where the patient is on screen, sleep study, treatment, adherence:\nstate, next action, the STOP-BANG score and band (a screen, not a\ndiagnosis) and, while on treatment and sharing both biometrics and their\nwearables home data (which covers sleep and CPAP) with you, CPAP\nnights logged against the CMS definition (4 h on 21 of 30 nights). An\nunlogged night is unknown, not missed. Deep-sleep minutes and anything\nabout brain clearance are never reported."
     }
    },
    {
     "name": "The five fillable dementia risk factors (status only, no score)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/older-adults/dementia-risk-factors",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "older-adults",
        "dementia-risk-factors"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Hearing loss, social isolation (UCLA-3, a proxy), vision loss,\neducation and air pollution as controlled / borderline / elevated /\nunknown, with the in-app action that fills an unknown one. risk_score is\nalways null: Norvya does not turn the Lancet Commission's population\nattributable fractions into a personal dementia risk."
     }
    },
    {
     "name": "Hospice / serious-illness review status (never an eligibility answer)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/older-adults/hospice-review",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "older-adults",
        "hospice-review"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "supports_review says whether enough is recorded to be worth a\nconversation, and missing what is not; never whether the patient is\neligible. Your clinicians' latest Palliative Performance Scale level,\nwhich functional measures exist, hospital / ED counts ONLY inside an\nascertainment period (no period, no number), the weight trend while the\npatient shares biometrics, the serious-illness care status, and whether an\nadvance-care plan is on file (not its contents)."
     }
    }
   ]
  },
  {
   "name": "Life stages",
   "description": "What a parent or guardian shared with your practice about their child (the well-child and vaccine schedule, growth with WHO / CDC percentiles, EPSDT screening status; never adolescent screening answers, the newborn record or milestone checklists) and a patient's own pregnancy or postpartum summary.",
   "item": [
    {
     "name": "A child profile a parent or guardian shared with your practice",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/child-profile",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "child-profile"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Only what the guardian chose: with medical history, the well-child and\nvaccine schedule and the number of doses recorded (the doses:\n/v1/patients/{member_ref}/immunizations); with biometrics, the latest\ngrowth points. The guardian link is re-checked on every read (404\nchild_profile_not_found once it ends, or for a member who is not a\nguardian-managed child). The newborn record and milestone checklists are\nnever shared with an organisation (not_shared)."
     }
    },
    {
     "name": "A shared child's growth measurements with WHO / CDC percentiles",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/growth",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "growth"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Each measurement with its age (corrected age for a preterm baby while\nit applies) and its percentile from the WHO Child Growth Standards (under\n24 months) or the CDC 2000 charts (2-20 years). Before corrected term a\npoint needs a licensed preterm reference (licensed_reference_not_loaded\notherwise). The guardian must share growth (biometrics) with you."
     }
    },
    {
     "name": "A shared child's EPSDT screening status (developmental, autism, lead, adolescent)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/child-screening",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "child-screening"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Which EPSDT components Norvya holds or finds due: well visits,\nimmunizations, the scored developmental and autism screens (licensed\ninstruments only), blood lead, and the adolescent depression and\nsubstance-use screens as recorded-or-due only (their scores are never\nsent). not_recorded is never \"missed\". The guardian must share medical\nhistory with you."
     }
    },
    {
     "name": "A patient's pregnancy or postpartum summary",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/pregnancy",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "pregnancy"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The provider view of pregnancy_care: phase, gestational age or\npostpartum day, the prenatal / postpartum schedule as windows (never\n\"missed\"), home BP and glucose against the ACOG thresholds while the\npatient shares biometrics, medication flags and LactMed while they share\nmedications, and the latest warning-sign check's lane. A thoughts-of-harm\nanswer is never named; crisis_flag appears only when they share mental\nhealth with you. Needs medical history; refused for a guardian-managed\nchild profile."
     }
    }
   ]
  },
  {
   "name": "Employers & occupational health",
   "description": "For employers and the practices that examine their workers: the employer's GLP-1 programme (settings, enrolment code, an outcomes report with small cells suppressed and no person in it), wellness challenges and their suppressed results, the occupational-health worker roster, exam programmes, exams and next-due dates on a fixed released-field view, work injuries reported by the examining practice, and the organisation's own staff wellbeing aggregate. Webhooks: employer.challenge_completed, occupational.exam_due.",
   "item": [
    {
     "name": "Your GLP-1 programme set-up",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/employer/glp1-program",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "employer",
        "glp1-program"
       ]
      },
      "description": "The programme's name, enrolment code (employees join in the app with it,\nafter reading exactly what you will and will not see), start date, your\ndrug-cost figure and the enrolled count, suppressed below the minimum\ngroup size. null when no programme is set up."
     }
    },
    {
     "name": "Create or update your GLP-1 programme",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/employer/glp1-program",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "employer",
        "glp1-program"
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"name\": \"string\",\n  \"started_on\": \"string\",\n  \"drug_cost_per_member_month\": 0.0,\n  \"is_active\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Regenerate your programme's enrolment code",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/employer/glp1-program/enrollment-code",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "employer",
        "glp1-program",
        "enrollment-code"
       ]
      },
      "description": "The old code stops working at once; members already enrolled stay enrolled."
     }
    },
    {
     "name": "Your GLP-1 programme's aggregate report (never a person)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/employer/glp1-program/report",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "employer",
        "glp1-program",
        "report"
       ]
      },
      "description": "employer_glp1_report.build_report: enrolment composition, persistence at\n12 / 24 / 52 weeks, weight and HbA1c change (mean, median, quartiles; no\nminimum or maximum), engagement, the value block (YOUR drug cost x the\nmeasured programme months — arithmetic on your input, never a savings or\nROI claim) and recognition-challenge counts. Every cell is suppressed below\nmin_cell, with complementary suppression; status too_few_enrolled below it.\nNo names, ids, medications, side effects or demographic breakdowns."
     }
    },
    {
     "name": "Your recognition challenges and their group counts",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/employer/challenges",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "employer",
        "challenges"
       ]
      },
      "description": "The allow-listed catalog (participation and activity items only) and,\nper challenge, joined / completed / completions per ISO week among members\nwith an active programme enrolment — each suppressed below min_cell. No\nleaderboard, no names, nothing finer than a week."
     }
    },
    {
     "name": "Create a recognition challenge",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/employer/challenges",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "employer",
        "challenges"
       ]
      },
      "description": "sponsor_challenges.create_challenge: an allow-listed catalog item, a 7 to\n92 day window not in the past, recognition 'badge' only, at most 10 open\nper programme. No push is sent to members (they find it in the app).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"catalog_key\": \"string\",\n  \"start_on\": \"string\",\n  \"end_on\": \"string\",\n  \"recognition\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One challenge's group counts",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/employer/challenges/:challenge_ref/results",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "employer",
        "challenges",
        ":challenge_ref",
        "results"
       ],
       "variable": [
        {
         "key": "challenge_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Change a challenge's window or switch it off",
     "request": {
      "method": "PATCH",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/employer/challenges/:challenge_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "employer",
        "challenges",
        ":challenge_ref"
       ],
       "variable": [
        {
         "key": "challenge_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"start_on\": \"string\",\n  \"end_on\": \"string\",\n  \"is_active\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Occupational exam programmes",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/programs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "programs"
       ]
      },
      "description": "occupational_health.vocabulary: each programme with the CFR citation it\nrests on and whether its interval was read from the regulation\n(interval_asserted false = no due date is invented), hazards,\ndeterminations, statuses, injury outcomes and the keys an employer can\never be shown."
     }
    },
    {
     "name": "Practices you hold an active occupational-health service agreement with",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/providers",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "providers"
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Your occupational-health roster",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/workers",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "workers"
       ]
      },
      "description": "Your own roster rows (employee number, name, job, department, hazards).\nhas_account says whether the worker claimed the row in the app (which lets\nthem read their full record and the disclosure log); nothing else about\nthem is shown."
     }
    },
    {
     "name": "Add a worker to your roster",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/workers",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "workers"
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"employee_ref\": \"string\",\n  \"full_name\": \"string\",\n  \"job_title\": \"string\",\n  \"department\": \"string\",\n  \"hazards\": [\n    \"string\"\n  ],\n  \"first_exposure_on\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Exam determinations and due dates (released conclusions only)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/roster",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "roster"
       ]
      },
      "description": "occupational_health.roster: one row per exam of an active worker, built\nfrom the employer allow-list (EMPLOYER_VISIBLE_KEYS). A conclusion the\nexamining clinician has not released reads determination 'pending' with no\nrestrictions (released false)."
     }
    },
    {
     "name": "What has been released to you about one worker",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/workers/:worker_ref/exams",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "workers",
        ":worker_ref",
        "exams"
       ],
       "variable": [
        {
         "key": "worker_ref",
         "value": ""
        }
       ]
      },
      "description": "Every exam of the worker as the employer may hold it: programme,\nstatus, determination, restrictions, valid until, follow-up, due dates,\nreleased on. Never the worker's declaration, the findings or the notes\n(29 CFR 1910.134(e)(6); 1630.14(b)(1))."
     }
    },
    {
     "name": "When a worker's next exam in a programme is due",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/workers/:worker_ref/next-due?program=",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "workers",
        ":worker_ref",
        "next-due"
       ],
       "query": [
        {
         "key": "program",
         "value": ""
        }
       ],
       "variable": [
        {
         "key": "worker_ref",
         "value": ""
        }
       ]
      },
      "description": "occupational_health.next_due: only hearing conservation has an interval\nread from the regulation (annual after a baseline within six months of\nfirst exposure); every other programme answers asserted false with no\ndate, rather than a guessed one."
     }
    },
    {
     "name": "One exam, as released to you",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/exams/:exam_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "exams",
        ":exam_ref"
       ],
       "variable": [
        {
         "key": "exam_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Request an exam from a practice you hold an agreement with",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/exams",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "exams"
       ]
      },
      "description": "occupational_health.request_exam: the programme must be known, the\nagreement active, and a respirator request carries the supplemental\ninformation 1910.134(e)(5) requires (else 422\nsupplemental_information_required, never sent incomplete).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"worker_ref\": \"string\",\n  \"provider_ref\": \"string\",\n  \"program\": \"string\",\n  \"due_on\": \"string\",\n  \"reason\": \"string\",\n  \"supplemental\": {}\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Injury reports for your own log, with return-to-work status",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/injuries",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "injuries"
       ]
      },
      "description": "occupational_health.employer_injury_view: occurred on, work related,\noutcome, restricted work, recorded on — input for YOUR OSHA 300 log, not\nthe log (recordability is yours to decide under 29 CFR 1904). Never the\nclinical description. return_to_work is the latest RELEASED\nreturn_to_work or fitness_for_duty exam conclusion performed on or after\nthe injury (determination, restrictions, valid until), else null; Norvya\nrecords no return-to-work date."
     }
    },
    {
     "name": "Employers you examine for under an active agreement",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/provider/employers",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "provider",
        "employers"
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Record a work injury report for an employer you examine for",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/occupational/provider/injuries",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "occupational",
        "provider",
        "injuries"
       ]
      },
      "description": "occupational_health.record_injury under an ACTIVE service agreement.\nThe description is clinical and stays with you; the employer is shown\nonly occurred on, work related, outcome and restricted work.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"employer_ref\": \"string\",\n  \"employee_ref\": \"string\",\n  \"occurred_on\": \"string\",\n  \"description\": \"string\",\n  \"work_related\": false,\n  \"outcome\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your staff's combined burnout check-in results",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/staff-wellbeing",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "staff-wellbeing"
       ]
      },
      "description": "staff_wellbeing.clinic_aggregate (Copenhagen Burnout Inventory, work\nscale): eligible staff, how many answered, the band distribution and mean\n/ median, only once at least min_cell people answered in the 30-day window\n(below it even the response count is withheld). Never a name, a score or\nwho has not answered; a crisis answer never reaches the organisation."
     }
    }
   ]
  },
  {
   "name": "Med spas",
   "description": "For medical spas: pre-treatment clearances, treatments recorded against the member, adverse events reported and followed, re-treatment due dates and the aftercare photos the member chose to share. Webhook: medspa.adverse_event_reported. The medical director's GLP-1 oversight roster: patients on a GLP-1 who share their medication data, each finding quoting the FDA label with its citation (pending clinician sign-off; never a dose suggestion).",
   "item": [
    {
     "name": "Treatment-clearance intakes",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/clearances",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "clearances"
       ]
      },
      "description": "med_spa_clearance: each intake's category, status (awaiting_review |\nreviewed | expired), the screen's contraindication / precaution counts and\nthe supervising provider's decision with its expiry (a practice setting).\nThe screen is never a clearance: only a provider's decision makes one."
     }
    },
    {
     "name": "One clearance intake: flags, reasons, sources and the decision",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/clearances/:clearance_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "clearances",
        ":clearance_ref"
       ],
       "variable": [
        {
         "key": "clearance_ref",
         "value": ""
        }
       ]
      },
      "description": "Every flag the screen raised (item, severity, reason, the primary\nsource it rests on with its verbatim quote, and any disagreeing source),\nthe decision, its note and the deciding clinician as a staff_ref. The\nmember's raw answers and medication details stay in the app."
     }
    },
    {
     "name": "A patient's aesthetic treatments and aftercare plans",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/members/:member_ref/treatments",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "members",
        ":member_ref",
        "treatments"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Each treatment (category, areas, date, product, quantity, lot, treating\nclinician as staff_ref, consent on file) with its aftercare plan: the\nscheduled check-ins (the practice's own days for the category, else\nNorvya's default 1 / 3 / 14 — a convention, not a clinical standard), the\nwarning signs the patient reported and any alert (never closed by time)."
     }
    },
    {
     "name": "Record an aesthetic treatment (schedules its aftercare check-ins)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/members/:member_ref/treatments",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "members",
        ":member_ref",
        "treatments"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "med_spa_aftercare.create_treatment: its validation (category, areas,\ndate within the last 365 days and not in the future, units), then the\ncheck-ins are scheduled and the patient is reminded by Norvya's generic\npush when one is due.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"category\": \"string\",\n  \"areas\": [\n    \"string\"\n  ],\n  \"treated_on\": \"string\",\n  \"product_name\": \"string\",\n  \"quantity\": 0.0,\n  \"quantity_unit\": \"string\",\n  \"lot_number\": \"string\",\n  \"provider\": \"string\",\n  \"notes\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One treatment and its aftercare plan",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/treatments/:treatment_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "treatments",
        ":treatment_ref"
       ],
       "variable": [
        {
         "key": "treatment_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Adverse events after aesthetic treatments",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/adverse-events",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "adverse-events"
       ]
      },
      "description": "Confirmed events (recorded by staff or through the API), drafts a\npatient's warning-sign check-in created (a clinician confirms or dismisses\nthem in the app) and dismissed drafts with the reason. from / to filter on\nthe date the event was recorded (default the last 90 days)."
     }
    },
    {
     "name": "One adverse event",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/adverse-events/:event_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "adverse-events",
        ":event_ref"
       ],
       "variable": [
        {
         "key": "event_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Report an adverse event after an aesthetic treatment",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/members/:member_ref/adverse-events",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "members",
        ":member_ref",
        "adverse-events"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "med_spa_aftercare.create_event: recorded as confirmed (the practice\nreporting it), its vocabulary validated by the engine, optionally tied to\none of the patient's treatments here. Fires medspa.adverse_event_reported\nto your other subscribed endpoints.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"event_type\": \"string\",\n  \"severity\": \"string\",\n  \"description\": \"string\",\n  \"onset_on\": \"string\",\n  \"actions_taken\": \"string\",\n  \"outcome\": \"string\",\n  \"follow_up_on\": \"string\",\n  \"treatment_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Patients whose retreatment may be due, on your practice's own intervals",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/retreatment-due",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "retreatment-due"
       ]
      },
      "description": "med_spa_retreatment.compute_items: the latest active treatment per\npatient, category and area, due on the interval YOUR practice saved (a\npractice setting, not clinical guidance; a category without one is never\ndue). reminders_opted_out = the patient asked this practice for no\nretreatment reminders."
     }
    },
    {
     "name": "A patient's photo timeline (metadata only)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/members/:member_ref/photos",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "members",
        ":member_ref",
        "photos"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "med_spa_photos: each active photo's view, phase, area, date, the\ntreatment it belongs to, and its consent flags (member_visible,\nmarketing_consent: only the patient grants marketing). Image bytes are not\nserved (image: null) — Norvya has no signed short-lived URL for aesthetic\nphotos, and they are never sent to a model."
     }
    },
    {
     "name": "GLP-1 oversight roster for your medical director",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/glp1-oversight",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "glp1-oversight"
       ]
      },
      "description": "glp1_oversight.roster, the staff oversight screen's own engine: each\npatient on a GLP-1 / GIP medicine whose medication data they share with\nyour practice (the share_medications switch; others are not listed), the\ntherapy and dose as recorded, start date, last injection logged, weight\ntrend, latest HbA1c / eGFR / creatinine, diabetes monitoring status and\nthe live findings, ranked as on the staff screen. Each finding quotes the\nFDA prescribing information verbatim with its URL (citations[]; a plateau\nis a Norvya convention and says so). Every rule is pending clinician\nsign-off. Never a dose su"
     }
    },
    {
     "name": "One patient's GLP-1 oversight row",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/medspa/glp1-oversight/:member_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "medspa",
        "glp1-oversight",
        ":member_ref"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The same row as on the roster. 404 member_not_on_glp1_roster when the\npatient is not on it — not on a GLP-1, or not sharing medication data with\nyour practice: the two read the same, on purpose."
     }
    }
   ]
  },
  {
   "name": "Rehab (PT / OT / speech)",
   "description": "Rehab episodes with the lead therapist and restrictions, home exercise programs with recorded days (an unrecorded day is not a missed one), goals, home-safety recommendations, IDDSI diet levels for dysphagia, standardised outcome measures scored server-side and a practice outcomes summary. Webhook: rehab.goal_met.",
   "item": [
    {
     "name": "A patient's recovery episodes (PT / OT / speech)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/episodes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "episodes"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Every recovery episode the patient has in Norvya (the same list your\nstaff see): discipline, lead therapist (staff_ref when one of yours),\nweight-bearing and precautions (set only by clinical staff), milestones the\npatient recorded, the latest warning-sign check lane and the episode's\noutcome measures. Phases are general education; none exist for OT / SLP\nconditions (no source was read for a timeline)."
     }
    },
    {
     "name": "One recovery episode",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/episodes/:episode_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "episodes",
        ":episode_ref"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    },
    {
     "name": "Set an episode's discipline and lead therapist",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/episodes/:episode_ref/care",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "episodes",
        ":episode_ref",
        "care"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "rehab_disciplines.set_episode_care, as the staff screen. The lead\ntherapist is a staff_ref of your practice (empty string clears it). An\nepisode another practice holds is 409 episode_held_by_another_practice.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"discipline\": \"string\",\n  \"lead_therapist\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Set weight-bearing status and precautions (a named clinician's order)",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/episodes/:episode_ref/restrictions",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "episodes",
        ":episode_ref",
        "restrictions"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "rehab_episodes.set_restrictions with the named clinician as the author.\nThe patient sees them as set by their care team; the app never infers or\nrelaxes one.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"weight_bearing\": \"string\",\n  \"precautions\": [\n    \"string\"\n  ]\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Request or record an outcome measure for an episode",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/episodes/:episode_ref/outcome-measures",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "episodes",
        ":episode_ref",
        "outcome-measures"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "Two kinds, never mixed. A CLINICIAN-RATED measure (FOIS, Nine-Hole Peg\nTest) is recorded with `values` for the named clinician and scored by\nNorvya (rehab_disciplines.record_clinician_measure). A PATIENT-REPORTED PT\nmeasure (ODI, LEFS, QuickDASH, NDI: licensed, available only where this\ndeployment holds the licence) is REQUESTED: the patient answers it in\nNorvya, scored server-side through the same questionnaire path as every\nrequest (idempotent with external_id; the same generic push; the\ninstrument.completed event when answered). `values` on a patient-reported\nmeasure is 422 patient_reported",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"instrument_id\": \"fois\",\n  \"timepoint\": \"string\",\n  \"values\": [\n    0.0\n  ],\n  \"external_id\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's home exercise programs and recorded days",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/home-programs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "home-programs"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The active program per discipline (pt / ot / slp) with its exercises and\nadherence over the last 28 days as RECORDED days and fully-completed days\n(OT / SLP: how hard the recorded days felt, the patient's own word). There\nis deliberately no missed-day count: a day with nothing recorded is\nunknown."
     }
    },
    {
     "name": "Assign a home exercise program (replaces the discipline's active one)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/home-programs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "home-programs"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "pain_care.start_program with the named clinician as the assigner, as the\nstaff screens do: one active program per discipline (the focus decides\nit), validated exercises and doses.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"focus\": \"string\",\n  \"items\": [\n    {}\n  ],\n  \"note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "End your practice's active home program for a discipline",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/home-programs/:discipline/end",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "home-programs",
        ":discipline",
        "end"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "discipline",
         "value": ""
        }
       ]
      },
      "description": "Only a program your practice assigned (a self-started or another\npractice's program is 409 program_held_elsewhere).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's functional goals and their own ratings",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/goals",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "goals"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Goals in the therapist's own words by domain, with the patient's 0-10\nrating of how close each feels (at most one a day). ?goal_ref= narrows to\none (the rehab.goal_met event's resource_url)."
     }
    },
    {
     "name": "Create a functional goal",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/goals",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "goals"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"discipline\": \"string\",\n  \"domain\": \"string\",\n  \"text\": \"string\",\n  \"target_date\": \"string\",\n  \"episode_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Update a goal your practice set (status met / discontinued, text, target date)",
     "request": {
      "method": "PATCH",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/goals/:goal_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "goals",
        ":goal_ref"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "goal_ref",
         "value": ""
        }
       ]
      },
      "description": "rehab_disciplines.update_goal. Marking a goal met sends rehab.goal_met to\nyour subscribed endpoints (once per goal). Another practice's goal is 409\ngoal_set_by_another_practice.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"status\": \"string\",\n  \"text\": \"string\",\n  \"target_date\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's home-safety checklist (CDC STEADI; no score)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/home-safety",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "home-safety"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The patient's answers (yes / no / na), the items an OT recommended and\ncounts only. It is NOT a fall-risk score and produces no number."
     }
    },
    {
     "name": "Recommend home-safety items (replaces the list)",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/home-safety/recommendations",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "home-safety",
        "recommendations"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"items\": [\n    \"string\"\n  ]\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's current IDDSI food and drink levels",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/iddsi",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "iddsi"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The levels a clinician set (only clinical staff set them; the app never\nchanges or infers a level), with the IDDSI framework attribution."
     }
    },
    {
     "name": "Set IDDSI food and / or drink levels (a named clinician's order)",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/iddsi",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "iddsi"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "rehab_disciplines.set_iddsi: the new order replaces the active one.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"food_level\": \"string\",\n  \"drink_level\": 0,\n  \"food_transitional\": false,\n  \"note\": \"string\",\n  \"episode_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "End the IDDSI levels your practice set",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/iddsi/end",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "iddsi",
        "end"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Episode outcome measures and recorded clinician measures",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/patients/:member_ref/outcome-measures",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "patients",
        ":member_ref",
        "outcome-measures"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Per episode: each PT measure's baseline, follow-up, change and whether\nthe published MCID (cited next to it) was reached (pt_outcomes; a\nprovisional follow-up is an interval, not a discharge). Plus the\nclinician-rated measures recorded for the patient, and which measures this\ndeployment can request or record."
     }
    },
    {
     "name": "Your practice's PT outcome summary (aggregate, small cells withheld)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/rehab/outcomes-summary",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "rehab",
        "outcomes-summary"
       ]
      },
      "description": "pt_outcomes.practice_summary over the patients who share their medical\nhistory with you (the staff route's population); counts below the\nsmall-cell minimum are suppressed by the engine."
     }
    }
   ]
  },
  {
   "name": "Nutrition (dietitians)",
   "description": "For dietitians and nutrition professionals: the caseload with lapse flags, a patient's food-log review, targets and meal rules released to the patient, ADIME notes, and Medical Nutrition Therapy hours with superbill candidates for the biller's review (never a charge). Webhook: nutrition.caseload_flagged.",
   "item": [
    {
     "name": "Your practice's dietitians (and providers) as staff_ref values",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/staff",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "staff"
       ]
      },
      "description": "The active staff a nutrition write may name (role admin, provider or\ndietitian), with role and display name. Staff names are not patient\ndata."
     }
    },
    {
     "name": "Your dietitians' caseload",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/caseload",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "caseload"
       ]
      },
      "description": "dietitian_practice.caseload: each active member with whether they share\nnutrition, target status (set here / elsewhere / none), the next visit\ndate, last logged date, logged days in 14 and flags (never_logged,\nno_logs_7d, off_target_14d). The thresholds are NORVYA CONVENTIONS, not\nclinical guidelines (`conventions`). No flag or log date for a member who\ndoes not share nutrition. ?member_ref= narrows to one (the\nnutrition.caseload_flagged event's resource_url)."
     }
    },
    {
     "name": "The food-log review against targets (the dietitian's view)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/review",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "review"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "dietitian_practice.client_review: days logged and NOT logged (unknown,\nnever missed or non-adherent), daily totals, averages over logged days\nonly, days within +/-10 % of each target with the target's source, sodium\n/ potassium with how many items carried a value, water (only when the\npatient shares daily logs) and context (conditions / medications, each\nunder its own sharing switch). The patient must share nutrition (409\nnutrition_not_shared)."
     }
    },
    {
     "name": "A patient's dietitian nutrition targets",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/targets",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "targets"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The active targets (which Norvya holds the patient's plan to while they\nare in force), whether your practice set them, your practice's history\nwith the guardrail findings the dietitian saw, and the bounds."
     }
    },
    {
     "name": "Set nutrition targets for a named dietitian",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/targets",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "targets"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "dietitian_practice.set_targets: the values lock onto the patient's plan;\nDRI / AMDR guardrail findings are RETURNED (guardrail_issues), never\nclamped. Targets another practice set are 409\ntargets_set_by_another_practice. The patient gets Norvya's generic in-app\nnotice.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"calories\": 0.0,\n  \"protein_g\": 0.0,\n  \"carbs_g\": 0.0,\n  \"fat_g\": 0.0,\n  \"fiber_g\": 0.0,\n  \"water_oz\": 0.0,\n  \"sodium_mg_limit\": 0.0,\n  \"potassium_mg\": 0.0,\n  \"potassium_mode\": \"string\",\n  \"training_day_calories\": 0.0,\n  \"training_day_protein_g\": 0.0,\n  \"training_day_carbs_g\": 0.0,\n  \"training_day_fat_g\": 0.0,\n  \"rest_day_calories\": 0.0,\n  \"rest_day_protein_g\": 0.0,\n  \"rest_day_carbs_g\": 0.0,\n  \"rest_day_fat_g\": 0.0,\n  \"post_session_protein_g\": 0.0,\n  \"post_session_window_h\": 0.0,\n  \"pre_session_protein_g\": 0.0,\n  \"pre_session_window_h\": 0.0,\n  \"patient_note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Release the targets your practice set",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/targets/release",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "targets",
        "release"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's dietitian food rules and RD meals",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/meal-rules",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "meal-rules"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Avoid / limit food rules and the meals a dietitian pinned, which the\npatient's generated plans are held to (matching by name: `matching`\nstates its limits)."
     }
    },
    {
     "name": "Add an avoid / limit food rule",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/meal-rules/rules",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "meal-rules",
        "rules"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"kind\": \"string\",\n  \"term\": \"string\",\n  \"max_per_day\": 0,\n  \"max_per_week\": 0,\n  \"patient_note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "End a food rule your practice set",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/meal-rules/rules/:rule_ref/end",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "meal-rules",
        "rules",
        ":rule_ref",
        "end"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "rule_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Set the dietitian's meals (replaces your practice's active set)",
     "request": {
      "method": "PUT",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/meal-rules/meal-plan",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "meal-rules",
        "meal-plan"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"entries\": [\n    {}\n  ],\n  \"patient_note\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Release your practice's dietitian meals",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/meal-rules/meal-plan/release",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "meal-rules",
        "meal-plan",
        "release"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your practice's structured MNT visit notes (ADIME)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/notes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "notes"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The four Nutrition Care Process sections as free text (Norvya ships no\nNCPT code list), draft or final, author as staff_ref."
     }
    },
    {
     "name": "Write a structured MNT visit note for a named dietitian",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/notes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "notes"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "dietitian_practice.create_note: stored as the practice's clinic note\n(not visible to the patient), the targets in force appended; finalize\nsigns it.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"stf_4c1d2e3f4a5b6c7d8e9f0a1b\",\n  \"assessment\": \"string\",\n  \"diagnosis\": \"string\",\n  \"intervention\": \"string\",\n  \"monitoring_evaluation\": \"string\",\n  \"title\": \"string\",\n  \"follow_up_timeframe\": \"string\",\n  \"finalize\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Medicare MNT referrals, recorded visits and hours vs the rule text",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/mnt",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "mnt"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "dietitian_billing.hours_summary for one calendar year: the referrals\nyour practice recorded, the visits with the code and units YOUR dietitian\nrecorded (each status candidate_for_biller_review), hours recorded vs the\nhours in the rule text (NCD 180.1, quoted in rule_text), flags and\ncaveats. Never a coverage decision; hours billed by another practice are\nnot visible to Norvya."
     }
    },
    {
     "name": "A superbill candidate for your biller (JSON; never submitted)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/nutrition/patients/:member_ref/mnt/superbill-candidates?visit_refs=",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "nutrition",
        "patients",
        ":member_ref",
        "mnt",
        "superbill-candidates"
       ],
       "query": [
        {
         "key": "visit_refs",
         "value": ""
        }
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "dietitian_billing.build_claim_snapshot for the chosen recorded visits\n(the same snapshot the staff superbill prints): practice block, referring\nprovider, diagnoses with pointers, service lines with the code and units\nthe dietitian recorded, rendering clinician (staff_ref + NPI), charges, and\nmissing_fields your biller must complete. The patient identity block is\nleft out (you hold the patient's identity under your own record).\nstatus candidate_for_biller_review: Norvya never submits it, never picks a\ncode and makes no coverage decision. Audited as a PHI export before it is\nreturned (503 when t"
     }
    }
   ]
  },
  {
   "name": "Behavioral health",
   "description": "Measurement-based care: the therapy caseload with PHQ-9 / GAD-7 trends, homework assigned and ended (the patient's entries never leave), and the collaborative-care (CoCM / BHI) registry with enrolment, consent, discharge and month evidence as a candidate for the biller's review; signed therapy progress notes appear in Records & documents. Psychotherapy notes, safety plans and AI drafts never leave; a designated 42 CFR Part 2 programme is refused; substance-use data appears only when the patient shares it. Webhook: cocm.review_due.",
   "item": [
    {
     "name": "Your measurement-based-care caseload (patients who share mental health with you)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/behavioral/caseload",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "behavioral",
        "caseload"
       ]
      },
      "description": "The therapy practice's caseload exactly as Norvya's staff screen orders\nit: PHQ-9 / GAD-7 / PCL-5 totals with baseline, latest and trend, response\nand remission where a source defines them, what is due, the not-improving\nprompt and homework counts. A patient who does not share mental health\nwith you is never listed (only counted in withheld_not_sharing). crisis.open\nmeans a questionnaire tripped the crisis gate: the patient already saw\ncrisis resources and your staff were notified in Norvya; follow your\ncrisis protocol (crisis.guidance). Not a 42 CFR Part 2 program; BAA on file."
     }
    },
    {
     "name": "One patient's measurement-based care: scores, crisis state, episode and homework",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/behavioral",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "behavioral"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "409 member_not_sharing_mental_health unless the patient shares mental\nhealth with you. Homework is counts and dates: what the client wrote is\nnever returned. Psychotherapy notes and the safety plan are never\navailable here (`not_available` says why)."
     }
    },
    {
     "name": "Assign between-session homework",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/behavioral/homework",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "behavioral",
        "homework"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Through the therapy engine's own assignment (therapy_practice.\nassign_homework): the client completes it in Norvya's self-help tools and is\ntold with Norvya's generic notification (never your text on the lock\nscreen). Attributed to the clinician you name. Patients who share mental\nhealth with you and accept your messages only.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"kind\": \"behavioral_activation\",\n  \"cadence\": \"string\",\n  \"times_per_week\": 0,\n  \"practice_kind\": \"string\",\n  \"instructions\": \"string\",\n  \"start_date\": \"string\",\n  \"end_date\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "End an assignment",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/behavioral/homework/:homework_ref/end",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "behavioral",
        "homework",
        ":homework_ref",
        "end"
       ],
       "variable": [
        {
         "key": "homework_ref",
         "value": ""
        }
       ]
      },
      "description": "404 homework_not_found for another practice's assignment, a member no\nlonger linked or not sharing mental health with you.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Your Collaborative Care / BHI registry with each episode's status and flags",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/behavioral/cocm/registry",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "behavioral",
        "cocm",
        "registry"
       ]
      },
      "description": "The registry Norvya's staff screen shows, in its priority order, with\nthe flags it computes (crisis_open, not_improving, recommendation_pending,\nscale_overdue, no_recent_contact, consent_missing, consent_renewal_needed,\nteam_incomplete). Patients who do not share mental health with you are\ncounted, never shown; a substance-use target appears only when the patient\nshares substance-use information with you. Minutes: GET .../months/{month}\n(with billing.read) or GET /v1/billing/care-management?program=cocm."
     }
    },
    {
     "name": "Enrol a patient in Collaborative Care or general BHI",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/behavioral/cocm/episodes",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "behavioral",
        "cocm",
        "episodes"
       ]
      },
      "description": "The registry's own enrolment (cocm_registry.enroll): one active episode\nper patient (409 already_enrolled), the care team named by staff_ref (each an\nactive clinician of your practice). Consent is recorded separately\n(POST .../consent). Norvya keeps the registry; it does not decide\neligibility or billing.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"member_ref\": \"string\",\n  \"clinician\": \"string\",\n  \"model\": \"cocm\",\n  \"target_conditions\": [\n    \"string\"\n  ],\n  \"target_note\": \"string\",\n  \"start_date\": \"string\",\n  \"team\": {\n    \"treating_provider\": \"string\",\n    \"care_manager\": \"string\",\n    \"psychiatric_consultant\": \"string\"\n  },\n  \"scale_interval_days\": 0\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One Collaborative Care / BHI episode: status, consent, reviews",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/behavioral/cocm/episodes/:episode_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "behavioral",
        "cocm",
        "episodes",
        ":episode_ref"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "Status and flags, the consent state and how it was documented, the\ninitiating visit, discharge, and how often the episode was reviewed with the\npsychiatric consultant (never the recommendation or relapse-plan text)."
     }
    },
    {
     "name": "Record the patient's documented CoCM consent",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/behavioral/cocm/episodes/:episode_ref/consent",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "behavioral",
        "cocm",
        "episodes",
        ":episode_ref",
        "consent"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "Verbal or written consent your clinician documented, with both elements\nCMS describes (permission to consult specialists; told cost sharing\napplies) — 422 consent_elements_required otherwise. In-app consent is the\npatient's own act in Norvya and cannot be recorded here.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"method\": \"string\",\n  \"consent_date\": \"string\",\n  \"specialist_consult\": false,\n  \"cost_sharing_informed\": false\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Discharge a Collaborative Care / BHI episode",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/behavioral/cocm/episodes/:episode_ref/discharge",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "behavioral",
        "cocm",
        "episodes",
        ":episode_ref",
        "discharge"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        }
       ]
      },
      "description": "goals_met needs the relapse-prevention plan your clinician wrote (422\nrelapse_plan_required); 409 episode_closed for an episode already ended.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"reason\": \"string\",\n  \"end_date\": \"string\",\n  \"relapse_prevention_plan\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "An episode's month as a candidate for your biller's review",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/behavioral/cocm/episodes/:episode_ref/months/:month",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "behavioral",
        "cocm",
        "episodes",
        ":episode_ref",
        "months",
        ":month"
       ],
       "variable": [
        {
         "key": "episode_ref",
         "value": ""
        },
        {
         "key": "month",
         "value": ""
        }
       ]
      },
      "description": "Care-manager minutes (and other staff's, apart), consent in force, a\npsychiatric review and a rating scale in the month, the initiating visit\nand the six-month-break note, against the reference minutes CMS\nMLN909432 describes. status candidate_for_biller_review: never a charge, an\neligibility determination or a code attached to the patient. Needs\nbilling.read as well."
     }
    }
   ]
  },
  {
   "name": "Oncology",
   "description": "The survivorship caseload with open red flags (never the check-in answers), a patient's treatment episodes and care plan, and a staged FHIR treatment-summary import: dry run, then commit or discard by a named clinician.",
   "item": [
    {
     "name": "Your survivorship caseload with the status flags Norvya computes",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/oncology/caseload",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "oncology",
        "caseload"
       ]
      },
      "description": "Patients with a cancer episode who share their medical history with\nyou, in the staff screen's order (open red flags, the soonest dated\nfollow-up, then no shared plan): plan status (with the survivorship plan's\ndocument_ref when your practice authored it), the next dated follow-up item,\nthe latest check-in's lane and open red flags. Never the check-in answers."
     }
    },
    {
     "name": "One patient's cancer treatment summary",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/oncology",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "oncology"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Each cancer episode (type, diagnosis date, stage and histology as\nwritten, status, treatments with modality, agents and dates, who entered\nit), the check-in lanes and your open import drafts. 409 member_not_sharing\nunless the patient shares their medical history with you."
     }
    },
    {
     "name": "Stage a FHIR R4 oncology treatment summary as a draft (a dry run)",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/oncology/imports",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "oncology",
        "imports"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Mapped exactly as the care-team upload maps it\n(oncology_fhir_import.map_bundle: mCODE profiles, listed ICD-10-CM / SNOMED\nCT codes; nothing inferred, dosage never read) into a DRAFT: what was mapped\n(`proposal`) and every resource it did not use with the reason (`unmapped`).\nNothing reaches the patient's record until POST .../commit with the values\na clinician reviewed. One patient per bundle (422 bundle_multiple_patients);\nthe bundle is not stored. 409 member_not_sharing without medical-history\nsharing.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"bundle\": {}\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One oncology import: the draft, or what was committed",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/oncology/imports/:import_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "oncology",
        "imports",
        ":import_ref"
       ],
       "variable": [
        {
         "key": "import_ref",
         "value": ""
        }
       ]
      },
      "description": "404 import_not_found for another practice's import or a patient no\nlonger linked or sharing their medical history with you."
     }
    },
    {
     "name": "Commit the values a clinician reviewed",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/oncology/imports/:import_ref/commit",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "oncology",
        "imports",
        ":import_ref",
        "commit"
       ],
       "variable": [
        {
         "key": "import_ref",
         "value": ""
        }
       ]
      },
      "description": "The clinician's reviewed values — not the draft's — are written\n(oncology_fhir_import.confirm, entered by the care team): every treatment\nneeds the modality the clinician chose (422 invalid_treatments). With\nepisode_ref the treatments are added to that episode (identical rows not\nduplicated). 409 import_already_decided.",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"cancer_type\": \"string\",\n  \"status\": \"string\",\n  \"treatments\": [\n    {}\n  ],\n  \"diagnosis_date\": \"string\",\n  \"stage_text\": \"string\",\n  \"histology_text\": \"string\",\n  \"episode_ref\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Discard a staged oncology import",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/oncology/imports/:import_ref/discard",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "oncology",
        "imports",
        ":import_ref",
        "discard"
       ],
       "variable": [
        {
         "key": "import_ref",
         "value": ""
        }
       ]
      },
      "description": "",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    }
   ]
  },
  {
   "name": "Dermatology",
   "description": "Lesion photo history and rechecks due, HS and acne severity scores, patch tests and their reads, and dermatology wound records (the record and its assessment dates, no measurements). No image bytes and no AI classification: the skin classifier is its own family below and is switched off. Webhooks: derm.lesion_recheck_due, derm.patch_test_read_recorded.",
   "item": [
    {
     "name": "A patient's tracked skin lesions: metadata and recheck state",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/lesions",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "lesions"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Each lesion the patient is watching in Norvya: their name for it, the\nbody site, first noticed, monitoring cadence, next recheck and whether it\nis due, photographs taken, growth rate (image-based estimate) and status.\nNever the photograph and never the classifier's output (label,\nprobabilities, risk level). The patient must share skin scans with you (403\nconsent_not_granted)."
     }
    },
    {
     "name": "One tracked lesion: photograph series (metadata) and size changes",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/lesions/:lesion_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "lesions",
        ":lesion_ref"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        },
        {
         "key": "lesion_ref",
         "value": ""
        }
       ]
      },
      "description": "The lesion's summary plus, per photograph, when it was taken, the site,\nwhether an image is on file (never the image), the symptoms the patient\nrecorded and any biopsy pathology result; and between photographs the\nsize, colour and shape changes Norvya's comparison engine estimated.\nAnother member's or an unknown lesion is 404 lesion_not_found."
     }
    },
    {
     "name": "Your panel's lesion rechecks that are due (most overdue first)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/derm/rechecks",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "derm",
        "rechecks"
       ]
      },
      "description": "Watched lesions whose own recheck date has passed, for your active\nmembers who share skin scans with you (or one member with ?member_ref=).\nBeing overdue changes the urgency of the photograph, never an assessment;\nthe classifier's risk level is not used to order or shown."
     }
    },
    {
     "name": "Hurley stages, HS and acne sites, the IGA scale, patch-test grades and timepoints",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/derm/vocabulary",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "derm",
        "vocabulary"
       ]
      },
      "description": "What a client needs to build the severity and patch-test forms, with\neach instrument's source. Needs derm.read or derm.write. No patient data."
     }
    },
    {
     "name": "A patient's hidradenitis (IHS4 / Hurley) and acne (IGA) assessments",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/derm-severity",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "derm-severity"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Assessments clinicians recorded (Norvya never scores severity from a\nphotograph), newest first, with the instrument sources. SCORAD and PASI are\nstateless calculators in Norvya and are not stored, so there is no history\nto return (not_available). The patient must share their medical history\nwith you (403 consent_not_granted)."
     }
    },
    {
     "name": "Record a hidradenitis suppurativa assessment a named clinician made",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/derm-severity/hs",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "derm-severity",
        "hs"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The clinician's lesion counts (and, when they judged it, the Hurley\nstage); Norvya computes IHS4 and its band exactly as the staff screen does.\nclinician is an active clinical staff member of your practice (422\nclinician_not_found). Medical history shared (403 consent_not_granted).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"nodules\": 0,\n  \"abscesses\": 0,\n  \"draining_tunnels\": 0,\n  \"hurley_stage\": 0,\n  \"sites\": [\n    \"string\"\n  ],\n  \"flare\": false,\n  \"note\": \"string\",\n  \"assessed_on\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "Record an acne (IGA) assessment a named clinician made",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/derm-severity/acne",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "derm-severity",
        "acne"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The FDA 2005 IGA grade the clinician assigned, with optional counts and\nsites, stored exactly as the staff screen stores it. Medical history\nshared (403 consent_not_granted).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"iga_grade\": 0,\n  \"sites\": [\n    \"string\"\n  ],\n  \"inflammatory_count\": 0,\n  \"noninflammatory_count\": 0,\n  \"nodule_count\": 0,\n  \"scarring\": false,\n  \"note\": \"string\",\n  \"assessed_on\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's patch tests at your practice and their allergen avoidance list",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/patch-tests",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "patch-tests"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Your practice's sessions (panel, schedule, per-allergen reads, positives,\nunread allergens) and the patient's avoidance list across every session a\nclinician read (only reactions graded positive; doubtful and irritant\nexcluded with a count). Medical history shared (403 consent_not_granted)."
     }
    },
    {
     "name": "Start a patch test with your own panel",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/patch-tests",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "patch-tests"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "Patches applied by your practice: the panel you use, substance by\nsubstance (Norvya ships no allergen series), and when they went on. The\nanswer carries the read schedule (48h, 96h, day 7). Medical history shared\n(403 consent_not_granted).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"panel_name\": \"string\",\n  \"allergens\": [\n    \"string\"\n  ],\n  \"applied_at\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "One patch test of your practice",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patch-tests/:patch_test_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patch-tests",
        ":patch_test_ref"
       ],
       "variable": [
        {
         "key": "patch_test_ref",
         "value": ""
        }
       ]
      },
      "description": "Another practice's or an unknown session is 404 patch_test_not_found;\nthe patient must still be your member and share their medical history."
     }
    },
    {
     "name": "Record what a named clinician graded at one read",
     "request": {
      "method": "POST",
      "header": [
       {
        "key": "Content-Type",
        "value": "application/json"
       }
      ],
      "url": {
       "raw": "{{baseUrl}}/v1/patch-tests/:patch_test_ref/reads",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patch-tests",
        ":patch_test_ref",
        "reads"
       ],
       "variable": [
        {
         "key": "patch_test_ref",
         "value": ""
        }
       ]
      },
      "description": "ICDRG grades per allergen at 48h, 96h or day 7, read by the clinician\nwho looked at the skin (Norvya never reads a patch test from a photograph).\nA corrected read supersedes the earlier one, never edits it. Allergens must\nbe on the session's panel (422 allergen_not_in_panel).",
      "body": {
       "mode": "raw",
       "raw": "{\n  \"clinician\": \"string\",\n  \"timepoint\": \"48h\",\n  \"grades\": {},\n  \"read_at\": \"string\"\n}",
       "options": {
        "raw": {
         "language": "json"
        }
       }
      }
     }
    },
    {
     "name": "A patient's wound log: the record and its assessment dates (practices)",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/derm-wounds",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "derm-wounds"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The same wound log hospitals read (GET /v1/patients/{ref}/wounds), for a\ntreating practice: location, first and last assessment and the date of\neach assessment. No measurements (they are the wound tracker's image-based\nestimates and are not shared with partners) and never the wound model's\nclassification (type, stage, severity, trajectory, tissue percentages), the\nphotograph, the patient's notes, pain score or treatment text. Skin scans\nshared (403 consent_not_granted)."
     }
    }
   ]
  },
  {
   "name": "Skin AI (switched off)",
   "description": "The skin-lesion classifier is built but switched off by product decision: every call answers 409 skin_classifier_not_enabled, and a continuous-monitoring check fails if it is ever turned on. Listed so nobody builds against it expecting an answer.",
   "item": [
    {
     "name": "Whether the skin-lesion classifier is enabled, and its model card",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/derm/classifier",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "derm",
        "classifier"
       ]
      },
      "description": "enabled false today, with the reason and the measured performance from\nthe model card. Needs derm.read or derm.classify. No patient data."
     }
    },
    {
     "name": "Classify a skin-lesion photograph (NOT ENABLED: 409 skin_classifier_not_enabled)",
     "request": {
      "method": "POST",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/patients/:member_ref/skin-classifications",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "patients",
        ":member_ref",
        "skin-classifications"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "NOT ENABLED. Every call answers 409 skin_classifier_not_enabled (body:\nreason and model_card {id, url}; Link header to /model-cards/isic_binary)\nwhile PARTNER_SKIN_CLASSIFIER_ENABLED is off, and always in a sandbox. The\nmodel's malignant recall is 0.411 and its sensitivity differs by\nFitzpatrick skin type. Nothing is read from the image first.",
      "body": {
       "mode": "formdata",
       "formdata": [
        {
         "key": "file",
         "value": "",
         "type": "text"
        }
       ]
      }
     }
    }
   ]
  },
  {
   "name": "Hospice agencies",
   "description": "For hospice agencies: the census (election date, level of care as 42 CFR 418.302 names them, care site, length of stay, discharge), one patient's hospice record with the benefit period and the recertification and face-to-face dates computed from the dates your staff recorded (42 CFR 418.21 / 418.22), the IDG plan-of-care reviews due (last recorded review + 15 calendar days, 42 CFR 418.56(d)), and planned versus completed visits by discipline, where a visit is missed only when it was recorded not done. Read-only: admissions, levels of care, discharges, reviews and visit outcomes are recorded in Norvya. Never a prognosis, an eligibility statement or a billing verdict; IDG notes, staff names and family feedback stay in Norvya. Webhook: hospice.idg_review_due.",
   "item": [
    {
     "name": "Your hospice census",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/hospice/census",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospice",
        "census"
       ]
      },
      "description": "Every patient on service (or discharged, or all): election date, the\nbenefit period with its recertification and face-to-face dates (arithmetic\nfrom your recorded dates), level of care, care site, length of stay, IDG\nreview status and discharge. Never a prognosis or an eligibility statement."
     }
    },
    {
     "name": "One patient's hospice record",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/hospice/patients/:member_ref",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospice",
        "patients",
        ":member_ref"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": "The latest admission at your agency: levels of care over time, the\ncertification events your staff recorded, review dates (never the notes),\nand — with hospice.visits.read — the visits."
     }
    },
    {
     "name": "IDG plan-of-care reviews due",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/hospice/idg/due",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospice",
        "idg",
        "due"
       ]
      },
      "description": "Patients whose plan-of-care review is due within `within_days` or\noverdue: the last recorded review + 15 calendar days (42 CFR 418.56(d)),\nor the election date + 15 when none is recorded."
     }
    },
    {
     "name": "Your agency's visit schedule",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/hospice/visits",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospice",
        "visits"
       ]
      },
      "description": "Visits in the window by discipline with their state: upcoming,\ncompleted, missed (recorded not done), not_recorded (past, nothing\nrecorded — never counted as missed) or cancelled."
     }
    },
    {
     "name": "One patient's hospice visits",
     "request": {
      "method": "GET",
      "header": [],
      "url": {
       "raw": "{{baseUrl}}/v1/hospice/patients/:member_ref/visits",
       "host": [
        "{{baseUrl}}"
       ],
       "path": [
        "v1",
        "hospice",
        "patients",
        ":member_ref",
        "visits"
       ],
       "variable": [
        {
         "key": "member_ref",
         "value": ""
        }
       ]
      },
      "description": ""
     }
    }
   ]
  }
 ]
}
