Video Call

Fetch user's video call access permission

  • Sandbox: available
  • Staging: available
  • Production: unknown
GET
/video-call/livekit/access-permission/{appointmentId}

Returns the video call access permission of the signed-in user for one Appointment. Use it to check whether the user has been invited before you request a join link.

Auth: bearer token. Scope: the caller's project (from the token).

Behaviour

  • The permission is the CommunicationRequest that links the Appointment to the user's profile as recipient. The route returns it without its meta.
  • If there is no such grant for the caller's profile, the route returns 403.
  • The lookup uses the caller's own profile reference (for example Patient/<id>), so a user only ever sees their own permission.

Example

curl -X GET 'https://api.sandbox.ovok.com/video-call/livekit/access-permission/c3499c27-2973-0a7f-807e-fb8676a92dcb' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk'

Authorization

bearer
headerAuthorizationBearer <JWT>

Path Parameters

appointmentId*string

Appointment ID.

Formatuuid

Response Body

User's video call access permission.

application/json
  1. response
resourceType*"CommunicationRequest"

Resource Type.

Value in"CommunicationRequest"
id*string

Resource ID.

identifier*array<>
basedOn*array<>

The Appointment the video call access permission applies to.

status*string

Status of the video call access permission. active once a call was started.

sender?

Who started the call.

recipient*array<>

Practitioner and Patient participants of the Appointment.

[key: string]?any
Example Request
curl -X GET 'https://api.sandbox.ovok.com/video-call/livekit/access-permission/497f6eca-6276-4993-bfeb-53cbbbba6f08'
Example Response
{  "resourceType": "CommunicationRequest",  "id": "string",  "identifier": [    {      "system": "https://api.ovok.com/fhir/StructureDefinition/communication-request-type",      "value": "video-call-access"    }  ],  "basedOn": [    {      "reference": "string"    }  ],  "status": "string",  "sender": {    "reference": "string",    "display": "string"  },  "recipient": [    {      "reference": "string",      "identifier": {        "system": "https://api.ovok.com/fhir/StructureDefinition/user-email",        "value": "string"      }    }  ]}

Verify related person MFA code POST

Verifies the TOTP code of a related person (carer) who has MFA enrolled, after `login/start` answered `nextStep: "mfa"`. Returns the session code for `login/token`. **Auth:** none. The `loginId` from `login/start` identifies the login. ## Behaviour - `mfaToken` must equal the current TOTP code generated from the user's MFA secret. - On success the login is marked MFA-verified and the response is `{ "nextStep": "token", "sessionCode": ... }`. Pass `sessionCode` to `POST /auth/tenant/RelatedPerson/login/token`. - Error responses are delayed to take at least one second. ## Example ```bash curl -X POST 'https://api.sandbox.ovok.com/auth/tenant/RelatedPerson/login/mfa' \ -H 'Content-Type: application/json' \ -d '{ "loginId": "c3499c27-2973-0a7f-807e-fb8676a92dcb", "mfaToken": "123456" }' ```

Create video call guest access POST

Creates a join link for a video call Appointment for someone who has no Ovok account. A Practitioner calls it, then shares the returned `videoCallUrl` with the guest. **Auth:** bearer token. The caller must be a Practitioner. **Scope:** the caller's project (from the token). The Appointment is read in that project. ## Behaviour - The guest has no room admin rights. The guest's display name in the call is `guestEmail`. - The link is valid from 1 hour before the Appointment `start` until 1 hour after its `end`. - The route does not send an email. To email the link, use the video call mail routes. - Every call returns a new token. Earlier tokens stay valid until they expire. - The response holds `videoCallUrl` (the full join link), `livekitJwt` and `passphrase`. The passphrase is the one stored on the Appointment and is also the fragment of `videoCallUrl`. ## Example ```bash curl -X POST 'https://api.sandbox.ovok.com/video-call/livekit/guest-access/c3499c27-2973-0a7f-807e-fb8676a92dcb' \ -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3NjcyNjg4MDAsImV4cCI6MTc2NzI3MjQwMH0.Ql3B_ztDvctlyZ2z0vp4sl3ExXRQGkzmxdmTAqxNzZk' \ -H 'Content-Type: application/json' \ -d '{ "guestEmail": "max.mustermann@example.com" }' ```