List patients
List patients, through Ovok's Signals gateway.
List patients
| Method | Path |
|---|---|
GET | /v1/signals/api/patient |
- Sandbox: available
- Staging: available
- Production: unknown
Scoped to what the caller may see: a MANAGER gets the tenant, a SUBMITTER or SUBSCRIBER only the patients it is attached to. Newest first.
v1's paginate envelope, driven by page and limit (default 10). A page may start at most 10000 rows in; past that, walk with the keyset cursor: pass nextCursor back verbatim, and null means the last page.
Through ovok
- Who can call it: Manager apps and Submitter apps, and users whose access policy grants the capabilities.
- Capabilities, all required:
signals_patients:read. Project admins have every capability; client applications get no admin bypass. - If your access covers only some patients (anyone but project admins, manager or submitter apps, and anyone whose Patient access has no criteria), name them with
ids, each one you can read, at most 100. Signals then pages over just those patients, so pages and totals stay true. A patient is named by its Signals id, or by its Medplum Patient id where Signals takes arefId; ovok asks Signals which patient a Signals id is.
Request
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Page size. Defaults to 10, as in v1; at most 1000. |
ids | array of string | No | Only these patients, by Signals id. Repeat the parameter or separate with commas. |
sort | string | No | Accepted for v1 callers and ignored, as v1 ignored it. Newest first, always. |
page | number | No | 1-based, as v1 paged. A page may start at most 10000 rows in; walk further with cursor. |
cursor | string | No | Opaque keyset cursor: a previous answer's nextCursor, passed back verbatim. |
tags[key] | string | No | v1's tag filter: only patients whose tags.key equals one of the comma-separated values, or holds one in an array. Repeat with other keys to require them all. Keys are alphanumeric; tags.key= is accepted too. |
Responses
| Status | Meaning |
|---|---|
200 | One page of patients, each with its config. |
400 | The query carries a raw #, or more than 200 parameters. |
401 | Your ovok access token, or your client id and secret, are missing or invalid. |
403 | ovok refused the call: you lack a capability this route needs, or your session has no project, or your access covers only some patients and the call names none. From Signals: Authenticated, but the client's role does not permit this, or it is not attached to the patient. |
404 | A patient the call names is not one you can read. |
409 | Your project has no Signals tenant of its own (SIGNALS_TENANT_NOT_OWN), or it is moving to another one. |
422 | A patient id is not 1 to 64 letters, digits, ., _, ~ or -. More than 100 patients are named. From Signals: A query parameter failed validation, or the page starts too deep. |
429 | Too many requests. Retry after the seconds in Retry-After. |
500 | ovok hit an unexpected fault, such as your project having no Signals submitter. |
502 | Signals answered with something ovok couldn't use, or refused ovok's own credential. |
503 | Signals is unavailable. Retry after the seconds in Retry-After. |
504 | Signals did not answer in time. |
Example
curl --request GET 'https://api.sandbox.ovok.com/v1/signals/api/patient' \
--user "${OVOK_CLIENT_ID}:${OVOK_CLIENT_SECRET}"Last updated on