SlimSlim/Project

List project users

  • Sandbox: available
  • Staging: available
  • Production: unknown
GET
/v1/slim/project/{id}/users

Lists the practitioner memberships of a given project: your own project or one of its direct child projects. Use it to manage the team of a child project from its parent.

Auth: Bearer token for a practitioner, project admin or System Owner session. The caller's access policy must grant Practitioner:read (a project admin who holds no access policy skips this check). The session must carry a project. Scope: The project in the path. It must be the caller's project (from the token) or a direct child of it. Grandchildren are not reachable.

Behaviour

  • The project is read first, so an unknown or out-of-scope id fails before any membership is searched.
  • Rows, filters, sorting, paging and status work exactly as in GET /v1/slim/project/users: one row per Practitioner membership with a user and a profile, search is fuzzy over profile, user and access policy names, count is 1 to 100 (default 20).
  • Answers are cached for up to about a minute.

Example

curl -X GET 'https://api.sandbox.ovok.com/v1/slim/project/c3499c27-2973-0a7f-807e-fb8676a92dcb/users?count=50' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk'

Authorization

bearer
headerAuthorizationBearer <JWT>

Path Parameters

id*string
Length1 <= length

Query Parameters

profileType?"Practitioner"
Default"Practitioner"
Value in"Practitioner"
sortBy?string
Default"profileName"
Value in"profileName""userName""accessPolicyName"
orderBy?string
Default"ASC"
Value in"ASC""DESC"
search?string
Length1 <= length
accessPolicyId?string
Length1 <= length
profileId?string
Length1 <= length
userId?string
Length1 <= length
page?string
Default"0"
count?string
Default"20"

Response Body

Project users retrieved successfully.

application/json
  1. response
total*number
Range0 <= value
page*number
Range0 <= value
count*number
Range1 <= value
resources*array<>
Example Request
curl -X GET 'https://api.sandbox.ovok.com/v1/slim/project/string/users'
Example Response
{  "total": 0,  "page": 0,  "count": 1,  "resources": [    {      "user": {        "resourceType": "User",        "id": "string",        "firstName": "string",        "lastName": "string",        "email": "string",        "project": {          "reference": "string",          "display": "string"        },        "meta": {          "project": "string",          "lastUpdated": "string"        }      },      "profile": {        "resourceType": "Practitioner",        "id": "string",        "name": [          {            "use": "string",            "text": "string",            "family": "string",            "given": [              "string"            ],            "prefix": [              "string"            ],            "suffix": [              "string"            ]          }        ],        "meta": {          "project": "string",          "lastUpdated": "string"        }      },      "membership": {        "resourceType": "ProjectMembership",        "id": "string",        "project": {          "reference": "string",          "display": "string"        },        "user": {          "reference": "string",          "display": "string"        },        "profile": {          "reference": "string",          "display": "string"        },        "accessPolicy": {          "reference": "string",          "display": "string"        },        "meta": {          "project": "string",          "lastUpdated": "string"        }      },      "status": "Active",      "accessPolicy": {        "resourceType": "AccessPolicy",        "id": "string",        "name": "string"      }    }  ]}

Delete a child project DELETE

Deletes an empty direct child project of your current project, including the setup Ovok created with it. Use it to remove a child project that is no longer needed. **Auth:** Bearer token for a project admin. No other role passes. **Scope:** `subProjectId` must be a direct child of the caller's project (from the token). ## Behaviour - The child must be empty: no `Patient`, `Device` or `Location`, and no child projects of its own. Otherwise the request is refused with 409 and nothing is changed. The 409 body has `error: "project_not_empty"`, a `counts` object per resource type and the `childProjectIds`. - On success Ovok unlinks the child from your project, deletes its access policies, practitioners, memberships, threshold plan, client applications, top-level organizations and tenant code, deletes the project, then revokes its Signals tenant. - User accounts are never deleted: a user can belong to other projects. Audit records (`Provenance`, `AuditEvent`) are kept. - Two deletes of the same project cannot run at once: the second gets 409. - The delete is safe to retry. If the Signals revoke fails, the project is already deleted and the request answers 502. Send the same request again to finish it. - Returns `{ "success": true }`. ## Example ```bash curl -X DELETE 'https://api.sandbox.ovok.com/v1/slim/project/child/c3499c27-2973-0a7f-807e-fb8676a92dcb' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' ```

Get project device counts GET

Returns summary counts of the devices in a project: total, assigned to a resident, active and by manufacturer. Use it for project overview tiles. **Auth:** Bearer token. The caller's access policy must grant `Device:search` and `Device:read` (a project admin who holds no access policy skips this check). **Scope:** The project in the path. It must be the caller's project (from the token) or a direct child of it. ## Behaviour - Counts come from the project's live device list, the same rows that back the live device views. That list is cached, so a device change can take a moment to show. - A row is left out when its device, resident, location or organization belongs to another project. - `assignedResidentDeviceCount` counts devices with a resident; `unassignedDeviceCount` is the rest. - `activeDeviceCount` counts devices whose latest telemetry reports them active; `inactiveDeviceCount` is the rest. - `withingsDeviceCount` counts devices whose serial number resolves to Withings. Every other device is counted in `radarDeviceCount`. - If the device list fails to build, the last complete list is used. ## Example ```bash curl -X GET 'https://api.sandbox.ovok.com/v1/slim/project/c3499c27-2973-0a7f-807e-fb8676a92dcb/device-counts' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' ```