List current project users
- Sandbox: available
- Staging: available
- Production: unknown
Lists the practitioner memberships of your current project, with each member's user, profile, access policy and invite status. Use it to render a project's team list.
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 caller's project (from the token).
Behaviour
- Returns one row per
ProjectMembershipofprofileType(Practitioner) that has both a user and a profile. Memberships whose user or profile cannot be resolved are left out. statusisPendingwhile the user has an unused invite or has never set a password, andActiveotherwise.accessPolicyId,profileIdanduserIdnarrow the memberships by exact id.searchis a fuzzy match over the profile name, the user name and the access policy name.sortBydefaults toprofileNameandorderBytoASC. Rows with an empty sort value go last inASCand first inDESC.- Paging is in memory:
page(default0) andcount(default20, 1 to 100).totalcounts the rows aftersearch, before paging. - Answers are cached for up to about a minute, so a member added or removed a moment ago can be missing or still listed.
Example
curl -X GET 'https://api.sandbox.ovok.com/v1/slim/project/users?sortBy=userName&orderBy=ASC&page=0&count=20' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk'bearerAuthorizationBearer <JWT>profileType?"Practitioner""Practitioner""Practitioner"sortBy?string"profileName""profileName""userName""accessPolicyName"orderBy?string"ASC""ASC""DESC"search?string1 <= lengthaccessPolicyId?string1 <= lengthprofileId?string1 <= lengthuserId?string1 <= lengthpage?string"0"count?string"20"Project users retrieved successfully.
application/json- response
total*number0 <= valuepage*number0 <= valuecount*number1 <= valueresources*array<>curl -X GET 'https://api.sandbox.ovok.com/v1/slim/project/users'{ "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" } } ]}Update practitioner PUT
Updates a practitioner profile: name, surname, email, phone, address and photo. **Auth:** Bearer token. The caller must be a practitioner, an admin, a super admin, or hold the "System Owner" access policy. The access policy must grant `Practitioner:read`. Updating another practitioner's profile also needs `Practitioner:update`. An admin or super admin who holds no access policy skips the access-policy check. **Scope:** You can always update your own profile. Another practitioner must belong to your project, one of its sub-projects, or its parent project. ## Behaviour - The Practitioner resource is **replaced** with one built from the body. A field you omit is cleared, and FHIR fields that the body cannot carry are not kept. Send the full profile, for example the result of `GET /v1/slim/practitioner/{id}` with your changes applied. - `id` in the body is optional. When present it must equal the `id` in the path. - `meta` in the body is ignored. Ovok sets `meta.author` to the caller. - `email` is stored in lower case. - This route does not change roles or access policies. - Your own profile is written with your token. Another practitioner's profile is written with Ovok's admin client after the project check above passes. - The response is the updated profile. ## Example ```bash curl -X PUT 'https://api.sandbox.ovok.com/v1/slim/practitioner/87ea5dfc-8b8e-384d-8489-79496e706390' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' \ -H 'Content-Type: application/json' \ -d '{ "name": "Max", "surname": "Mustermann", "email": "max.mustermann@example.com", "phone": "+491234567890" }' ```
List child project relationships GET
Returns your current project together with its parent project and its direct child projects. Use it to build a project switcher or hierarchy view. **Auth:** Bearer token for a practitioner, project admin or System Owner session. The caller's access policy must grant `AccessPolicy:read` (a project admin who holds no access policy skips this check). **Scope:** The caller's project (from the token). ## Behaviour - `currentProject` is the caller's project. - `parentProject` is the project your project is a child of, or `null` when it has none. - `childProjects` lists every direct child, with no cap. Grandchildren are not included. - A child whose project no longer exists is left out. - Each project carries `name` (the project id when it has none), `address`, `contact` and `settings`. `settings.timeZone` defaults to `Europe/Berlin`; `settings.trendsPeriod` defaults to `start: "09:00:00"` and `durationSeconds: 86400`. - `GET /v2/slim/project/child` returns the same lists with a device count per project. ## Example ```bash curl -X GET 'https://api.sandbox.ovok.com/v1/slim/project/child' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' ```