StandaloneAPI referenceClients

Create a user

Create a user, through Ovok's Signals gateway.

Create a user

MethodPath
POST/v1/signals/api/user
  • Sandbox: available
  • Staging: available
  • Production: unknown

Mints an API client. clientId and secret are the Basic credential, chosen by the caller and never returned. role may be v1's lowercase. A SUBSCRIBER needs webhookUrl and at least one event. It is on eventSchema 2 unless the body says 1: on 2 its first Standard Webhooks signing secret is returned this once as signingSecret; on 1 it needs webhookSecret (v1 called it secret). reach is attached (default: the patients attached to it, as v1's) or all (every patient of the tenant, those enrolled later included).

Through ovok

  • Who can call it: Manager apps, and users whose access policy grants the capabilities.
  • Capabilities, all required: signals_webhooks:update, signals_events:read. Project admins have every capability; client applications get no admin bypass.
  • Only subscribers are created through ovok, on event schema 2. ovok generates their id and Signals login, which they never use, and Signals generates the webhook signing secret.
  • It can reach any patient of your project without naming one, so it is for callers that reach every patient: project admins, manager or submitter apps, and anyone whose Patient access has no criteria.

Request

Body

Required.

FieldTypeRequiredDescription
roleSUBSCRIBERYesValidated against the assignable roles rather than the full enum, so this MANAGER-gated route cannot mint a cross-tenant SUPER_ADMIN credential.
namestringNo—
webhookUrlstringNo—
eventsarray of stringNo—
customstringNov1's custom: an opaque string every webhook carries back as x-actimi-custom.
eventSchema2No1 keeps v1's event names and bodies; 2, the default, sends one name per state change.
reachattached, allNoattached: the patients attached to it, as v1's; all: every patient of the tenant, later ones included.

Responses

StatusMeaning
201The user, without its secret; Location names it.
400The query carries a raw #, or more than 200 parameters.
401Your ovok access token, or your client id and secret, are missing or invalid.
403ovok refused the call: you lack a capability this route needs, or your session has no project, or role is not SUBSCRIBER, or your access covers only some patients. From Signals: Authenticated, but the client's role does not permit this, or it is not attached to the patient. Or: FEATURE_DISABLED: events names an episode event, and the tenant has episodicAlerts off, so it records none.
409Your project has no Signals tenant of its own (SIGNALS_TENANT_NOT_OWN), or it is moving to another one. From Signals: The clientId is taken.
415The body is not JSON.
422role is missing, clientId, secret or webhookSecret was sent, or eventSchema is not 2. From Signals: The payload failed validation. EVENTS_NOT_IN_SCHEMA: events names a type its eventSchema never sends, such as alert.trigger on schema 2.
429Too many requests. Retry after the seconds in Retry-After.
500ovok hit an unexpected fault, such as your project having no Signals submitter.
502Signals answered with something ovok couldn't use, or refused ovok's own credential.
503Signals is unavailable. Retry after the seconds in Retry-After.
504Signals did not answer in time.

Example

curl --request POST 'https://api.sandbox.ovok.com/v1/signals/api/user' \
  --user "${OVOK_CLIENT_ID}:${OVOK_CLIENT_SECRET}" \
  --header 'Content-Type: application/json' \
  --data @body.json

Last updated on

On this page