Karify API (v2)

Download OpenAPI specification:

Karify support: support@karify.com

Karify offers two methods for integrations.

  1. Data can be sent and received via the Karify API.
  2. An application can integrate on Karify's Single Sign-On (SSO) to make using Karify more easy for users.

The Karify API is an interface allowing developers to build applications that access the Karify dataset.

Access

Generally speaking, a Karify API application only has access to a user's data after the user has authorized the application to use it.

Registering your application and thereby receiving credentials can be requested only by contacting Karify. These credentials allows you to negotiate tokens on behalf of Karify users. All calls to the Karify API require a token defining the user and application making the call.

See the Authentication section for more information about generating access tokens and the OAuth authorization flow.

Treat tokens with care. Never share tokens with other users or applications. Do not publish tokens in public code repositories.

Requests and responses

Request

HTTP headers All API operations use JSON as the data format. To make a request with a JSON body, use the following header in the request:

Content-Type: application/json

If an operation returns JSON data, also add the Accept header to your request. Also, since the only available version is v2, the version should be added to this header:

Accept: application/json; version=v2

Response codes

API calls indicate the result (success or error) using the corresponding HTTP status codes. See RFC7231 section 6.1 for a list of HTTP status codes.

The response body may have additional error information in the JSON object, for example:

(404 NOT FOUND):

{
  "error_code":"ACCOUNT_NOT_FOUND"
}

Or, when adding information to Karify, the data in the body of the POST or PUT/PATCH request can be unprocessable. Then the following exception will be returned (422 UNPROCESSABLE ENTITY):

{
  "error_code":"VALIDATION_ERROR",
  "details":
  [
    {
      "property_path":
      "emailAddress",
      "message": "This value is not a valid email address.",
      "error_code": "INVALID_EMAIL_FORMAT"
    }
  ]
}

To keep Karify API backwards compatible, some endpoints also return the fields code and message in the exception response. These fields will be deprecated so applications should not create a dependency on it.

In addition to the common error codes, the Karify API can also return the following error codes:

HTTP status code error_code Description
403 MULTI_FACTOR_AUTHENTICATION_NOT_SET_UP Multi-factor authentication is mandatory for the user of the access_token but not set up

Response data

Note that responses may contain user-generated data, which is not escaped or sanitized unless otherwise noted. It could therefore also contain HTML and/or Javascript. You should make sure that this data is sanitized or escaped before rendering, to avoid executing potentially malicious code.

Paginating results

By default, GET operations, which return a list of requested items, return only the first 10 items. To get a different set of items, you can use the offset and limit parameters in the query string of the GET request.

For example, the .../spaces (GET) operation returns:

URL Description
.../spaces Returns the first 10 spaces (the default limit is 10).
.../spaces?limit=5 Returns the first 5 spaces.
.../spaces?offset=3&limit=5 Returns spaces 4..9.
.../spaces?offset=3 Returns spaces 3..13 (the default number of the returned spaces is 10).

To page through all the available items, first, use the collection metadata section of the JSON response to get the total number of items.

{
  "collection":
    [
      ...
    ],
  "offset": 0,
  "limit": 10,
  "total_count": 39
}

Tip: You can request .../spaces?limit=0 to get just metadata, without defect data.

Then send subsequent requests with increasing offsets and a fixed limit until you get all the data.

.../spaces?offset=10&limit=10
.../spaces?offset=20&limit=10
.../spaces?offset=30&limit=10

Change strategy

Karify will take effort to making all changes to the Karify API backwards compatible. However, when a breaking change has to be made within a version of the Karify API, we will take care of phasing out the old variant. This means:

  • We will mark a functionality as deprecated in the documentation,
  • Communicate this deprecation to our clients with clear deprecation plan.
  • As communicated in the deprecation plan, we will remove deprecated functions only after the mentioned time window. When possible, we will monitor the usage of deprecated functions to make sure no breaking changes occur client side.

Beta

Some API endpoints are currently marked as beta. This means backwards incompatible changes might be made without any deprecation plan or notification upfront.

Karify API best practices

  • Properties can be added to the JSON responses within the same API version, so make sure your application can handle these additional properties.
  • Do not use more data than necessary so server load and your application's response time is as low as possible. Also, by using only what is needed, backward compatibility issues will less likely to happen.
  • E.g., be cautious with the use of a high limit parameter when paginating responses.
  • Do not create unnecessary dependencies on fields that your application does not need.
  • Make sure you always set the accept header.
  • Make sure you do not parse the response body of responses with a 204 HTTP status code since those responses never contain a body.
  • Make sure your application can handle error responses and validation responses well. Logging error responses will help you in finding the actual problem. Also make sure that a client side error (4XX status code) won't block other processes of your application without reason.
  • Received access tokens can be invalidated by users in their Karify account settings. Make sure your application handles an invalidated access and refresh token well. Any API endpoint will respond with a 401 Unauthorized response code when an access_token has been invalidated by the user, while refreshing the access_token will result in a 400 Bad Request response code in this situation.

Authorization

The grant type which will be used to authenticate as a Karify user and therefore being able to view or change data on behalf of that user is the authorization_code grant type. Also see RFC6749.

Authorization consists of two (or three if token is expired) steps before the step of getting, putting or posting content via the API is possible:

  • Requesting an (authorization) code
  • Exchange (authorization) code for an access_token
  • Refresh expired access_token using an refresh_token
  • GET, PUT or POST content (Protected Resource) using access_token

Once having a valid access_token it can be used to do requests to Karify API endpoints. Note that access tokens have a lifetime of one hour. Once expired, a 401 Unauthorized will be returned. The response message can be The access token provided has expired. or The access token provided is invalid. since Karify cleans up expired refresh tokens on a regular basis.

See the described steps in the schema below:

Single Sign-On via OAuth

Karify has the possibility to start up a Karify session for a user using an OAuth access_token. This makes it possible to set up a Single Sign-On functionality after a user explicitly granted this for your application.

Karify's Single Sign On (SSO) makes easy access for the end-user from an external application to Karify possible (e.g. EPD, HIS or KIS). When an end-user is logged in at a trusted external application, the end-user can be directly redirected to Karify without having to log in again.

Single Sign-On via SAML

Karify makes use of Security Assertion Markup Language 2.0 (SAML) to make SSO possible. SAML is a common standard within healthcare. It is an XML-based, open-standard data format for exchanging authentication and authorization data between applications. Specifically, between an identity provider (IdP) and a service provider (SP). Karify acts as the service provider (SP). Identifying a user with Karify is done based on the email address provided in the SAML response message.

This functionality provides sufficient opportunity for an application to achieve a basic integration with Karify. A more comprehensive integration is possible by using a RelayState, which redirects the end user to a specific page in Karify. For example, to a client's record (see also the section Redirecting to a client's page below.

SAML usage scenarios

Karify supports two types of usage scenarios of the SAML protocol:

  • IdP-initiated Single Sign-On POST Binding
  • SP-initiated Single Sign-On POST/Artifact Bindings

IDP-initiated Single Sign-On

In this scenario the user is able to be redirected directly from an application (IdP) to Karify (SP). A typical example is providing a 'Go to Karify' button in the application, or when utilizing RelayState, a 'Go to client X's dossier in Karify' button.

The following is a typical scenario:

  1. The user browses to the external application known as the IdP. The application prompts the user for credentials.
  2. The user logs in to the external application.
  3. The user clicks on the 'Go to Karify' button. This causes the IdP's Single Sign-On Service to be called.
  4. The Single Sign-On Service builds a SAML assertion representing the user's logon security context. The assertion is digitally signed before it is placed within a SAML Response message.
  5. The browser issues an HTTP POST request to send the form to the Karify's Assertion Consumer Service (https://saml.karify.com/acs, found in Karify's metadata file).
  6. Karify validates the message and checks whether the user exists and has the correct authorization to access the resource.

If the access check passes, the resource is then returned to the browser. In other words: the user is logged in.

SP-initiated Single Sign-On

In this scenario an SP-initiated SSO exchange is described. In such an exchange, the external application sends the user to a specific page on Karify (e.g. https://saml.karify.com/identity-provider-x). Again, a typical example is a 'Go to Karify' button. Since the user does not have a current logon session for Karify, the user is sent to the IdP to log on and the IdP provides a SAML web SSO assertion for the user's federated identity back to Karify, the SP.

For additional information, see the official documentation on this scenario at http://saml.xml.org/wiki/sp-initiated-single-sign-on-postartifact-bindings.

The following is a typical scenario:

  1. The user browses to the external application, known as the IdP. The application prompts the user for credentials.
  2. The user logs in to the external application.
  3. The user clicks on the 'Go to Karify' button. The external application sends the user to a specific page on Karify (e.g. https://saml.karify.com/identity-provider-x).
  4. Karify will start up a SAML request by redirecting the user with sending an AuthRequest to the IdP using HTTP-POST binding.
  5. The Single Sign-On Service of the IdP builds a SAML assertion representing the user's logon security context. The assertion is digitally signed before it is placed within a SAML Response message.
  6. The browser issues an HTTP POST request to send the form to Karify's Assertion Consumer Service (https://saml.karify.com/acs, found in Karify's metadata file).
  7. Karify validates the message and checks whether the user exists and has the correct authorization to access the resource. If the access check passes, the resource is then returned to the browser. In other words: the user is logged in.

Redirecting to a Client's Page

Karify provides an option to redirect users to a specific client's page using the client's identification number, when the current user has a connection with that client. The required URL format is:

https://my.karify.com/client-by-identification-number/{identification-number}

For example, if the client's identification number is 1234abc, the URL would be:

https://my.karify.com/client-by-identification-number/1234abc

When the current account has a connection in one Healthspace, they are immediately redirected to the client's page in that Healthspace. Otherwise a screen is shown with the different Healthspaces (in case of a connection in multiple Healthspaces) or a "not found" message.

Using RelayState with SP-Initiated Single Sign-On

When combining this redirection with SP-initiated Single Sign-On, the RelayState parameter should contain the URL-encoded client page URL. The URL that the user is redirected to in step 3 of the above flow would look like this (mind the identity-provider-x part that should be replaced by the relevant identity provider for your organization):

https://saml.karify.com/authn/identity-provider-x?RelayState=https%3A%2F%2Fmy.karify.com%2Fclient-by-identification-number%2F1234abc

This ensures that after authentication, the user is redirected directly to the client's page in Karify.

account

Each Karify user has an account, even if a user does not have any membership (profile) for a Healthspace, he or she can still have an account.

Each account endpoint needs its own scope and role permissions. An application can use the scope MANAGE_ORGANIZATION_ACCOUNTS to use all (..._READ) scopes in one scope.

Returns the currently authenticated account

Get information of the account of the authenticated user.

Scope The access_token should have the scope ACCOUNT_READ for this endpoint.

Role
No specific role is needed for the authenticated user using this endpoint.

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
Example
{
  • "id": "e5d54898fe3d",
  • "first_name": "Henk",
  • "surname_prefix": "van der",
  • "surname": "Molen",
  • "email": "henk@example.com",
  • "email_address_confirmed": true,
  • "terms_of_use_accepted": true,
  • "birthday": "2002-01-21",
  • "image": {},
  • "user_type": "staff",
  • "organization": {
    },
  • "profiles": [],
  • "permissions": [ ],
  • "created_at": "2013-02-09T07:00:00+01:00",
  • "updated_at": "2021-01-13T09:04:43+01:00"
}

Update Account Details

beta

Authorizations:
oauth2
Request Body schema: application/json
required

The request body should contain an Account Object

non-empty
first_name
string <= 255 characters
surname_prefix
string <= 255 characters
surname
string <= 255 characters
terms_of_use_accepted
boolean
birthday
string <date>
phone_number
string or null
Value: null

By setting Phone Number to null, the phone number can be removed from the database. Updates to the phone number value must be done via the 'challenge' endpoint

preferred_locale
string
Enum: "en" "nl"

Responses

Request samples

Content type
application/json
Example
{
  • "terms_of_use_accepted": true
}

Response samples

Content type
application/json
Example
{
  • "id": "e5d54898fe3d",
  • "first_name": "Henk",
  • "surname_prefix": "van der",
  • "surname": "Molen",
  • "email": "henk@example.com",
  • "email_address_confirmed": true,
  • "terms_of_use_accepted": true,
  • "birthday": "2002-01-21",
  • "image": {},
  • "user_type": "staff",
  • "organization": {
    },
  • "profiles": [],
  • "permissions": [ ],
  • "created_at": "2013-02-09T07:00:00+01:00",
  • "updated_at": "2021-01-13T09:04:43+01:00"
}

Get a collection of all Accounts from all Healthspaces where Space Administrator

beta

Authorizations:
oauth2
query Parameters
spaces[]
Array of strings[ items = 12 characters ]

Space ID(s)

active
boolean

Is Active Account

surname
string [ 1 .. 255 ] characters

User Surname

user_type
string
Enum: "staff" "client"

User Type

string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Accounts to return (defaults to 10)

string or integer
Examples:
  • offset=10 - Example of an offset value as a string
  • offset=25 - Example of an offset value as an integer

Index of first Account to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [ ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0
}

Resend Account confirmation email

beta

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
{
  • "error_code": "ACCOUNT_ALREADY_CONFIRMED"
}

Activate an Account

beta

Authorizations:
oauth2
Request Body schema: application/json
required

Request body containing an Activation Code

activation_code
required
string = 32 characters

Responses

Request samples

Content type
application/json
{
  • "activation_code": "a938b948214bb60b1a46ceab2ea8c236"
}

Response samples

Content type
application/json
{
  • "error_code": "INVALID_ACCOUNT_ACTIVATION_CODE"
}

Get accounts of organization

Get all accounts or filter within accounts of the authenticated user's organization based on some optional parameters.

Scope The scope ORGANIZATION_ACCOUNT_READ is needed for this endpoint.

Role The authenticated user should have the role ROLE_ACCOUNT_SPACE_OWNER.

Authorizations:
oauth2
query Parameters
identificationNumber
string
Example: identificationNumber=6b6d3ea100af

Filters the result by identificationNumber

birthday
string
Example: birthday=1970-03-27

Filters the result by birthday (YYYY-MM-DD)

Responses

Response samples

Content type
application/json
{
  • "collection": [
    ],
  • "limit": 10,
  • "offset": 0,
  • "total_count": 1
}

banners

Banners

Dismiss a banner temporarily or permanently (which may or may not be shown again at a later date)

beta

Authorizations:
oauth2
Request Body schema: application/json
required

The request body should contain a dismissed banner ID and an optional dismiss duration (in seconds)

id
required
string [ 1 .. 255 ] characters
dismiss_duration
integer >= 0

Responses

Request samples

Content type
application/json
Example
{
  • "id": "multi-factor-authentication-persuade-banner",
  • "dismiss_duration": 604800
}

Response samples

Content type
application/json
Example
{
  • "id": "multi-factor-authentication-persuade-banner",
  • "dismissed_until": "2021-04-07T14:07:27+01:00"
}

Get dismissed banner resource

beta

Authorizations:
oauth2
path Parameters
id
required
string [ 1 .. 255 ] characters
Examples:
  • multi-factor-authentication-persuade-banner - An example of 'id' value

Banner ID

Responses

Response samples

Content type
application/json
Example
{
  • "id": "multi-factor-authentication-persuade-banner",
  • "dismissed_until": "2021-04-07T14:07:27+01:00"
}

connections

Karify access authorisation works based on connections. Connections between a clinician and a patient allows record access, communications and managing treatments. Connections are made based from profile to profile so are on the level of a Healthspace. Each user in Karify can requests it's own connections, so both users with an account type staff as an account type client.

Get all connections of the current account

This endpoint enables you to obtain the complete set of active connections for the account of the given access_token (the current user). The collection result can be filtered on some optional parameters. Note that some details are only visible when the current user is a staff member.

Scope

The scope CONNECTION_READ is needed for this endpoint.

Role

No specific role is needed for the authenticated user using this endpoint.

Authorizations:
oauth2
query Parameters
search
string
Examples:
  • search=Penny - Example of a search by name
  • search=5678hj63 - Search by identification number

Filter by some combination of first name, surname, and (in the case of a staff member searching for clients) identification number.

account
string = 12 characters
Example: account=2503faf1a145

Filter by account ID

string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Connections to return (defaults to 10)

string or integer

Index of first Connection to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [
    ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 1
}

Get connections for a given profile

This endpoint enables you to obtain the set of connections for one of your profiles. The collection result can be filtered on some optional parameters. Note that some details are only visible when the current user is a staff member.

Scope

The scope CONNECTION_READ is needed for this endpoint.

Role

No specific role is needed for the authenticated user using this endpoint.

Authorizations:
oauth2
path Parameters
profile
required
string = 12 characters
Example: a8bcb96e629c

The ID of the profile you want to look up connections for

query Parameters
search
string
Examples:
  • search=Penny - Search on account name
  • search=13049837892 - Search on identification number

Filter by some combination of first name and surname or on identification number

string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Connections to return (defaults to 10)

string or integer

Index of first Connection to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [
    ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 1
}

counters

Counters

Get a counter of all tasks in a given space for the current account

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

Responses

Response samples

Content type
application/json
Example
{
  • "all_task_count": 0
}

current-user-profiles

Each user in Karify can requests their own profiles, so both users with an account type staff as an account type client.

Get profiles

This endpoint enables you to obtain the complete set of profiles for the account of the given access_token (the current user).

Scope

The scope PROFILE_READ is needed for this endpoint.

Role

No specific role is needed for the authenticated user using this endpoint.

Authorizations:
oauth2cookie
query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Profiles to return (defaults to 10)

string or integer

Index of first Profile to be returned (defaults to 0)

Responses

Response samples

Content type
application/json

A collection with two profiles for a staff member

{
  • "collection": [
    ],
  • "limit": 10,
  • "offset": 0,
  • "total_count": 2
}

Get specific profile

This endpoint enables you to obtain a specific profile of the account of the given access_token (the current user) based on the profile_id you received earlier.

Scope

The scope PROFILE_READ is needed for this endpoint.

Role

No specific role is needed for the authenticated user using this endpoint.

Authorizations:
oauth2cookie
path Parameters
profile
required
string = 12 characters
Example: a8bcb96e629c

The ID of the desired profile

Responses

Response samples

Content type
application/json

Get a single profile for the given id

{
  • "account": {
    },
  • "administrative_data": { },
  • "created_at": "2020-12-08T21:37:06+01:00",
  • "id": "9681f2a7bf0c",
  • "space": {
    },
  • "status": "subscribed",
  • "updated_at": "2020-12-08T21:37:06+01:00",
  • "user_type": "staff"
}

data-exports

Organization owners can generate data exports. A data export consists of several CSV files and a text description of these CSV files, all combined in a zip file. These data exports are generated in an asynchronous process, as the creation can take quite a long time (due to various factors). The workflow is therefore to first create a new data export using the POST /api/v2/data-exports endpoint, then poll the status through the GET /api/v2/data-exports endpoint. Once the status has progressed from queued to processing to finished, the data export will have the download url available, which indicates where the zip file can be downloaded. Finally, a data export can be deleted using the DELETE /api/v2/data-exports/{id} endpoint. Data exports are automatically deleted after 14 days, so deleting manually is not necessary but can keep the overview more organized.

Get all data exports

Get all the current account has requested. Note that the fields of a data export differ per type of export. Note that if a data export has finished processing, it will get the file property which indicates the URL of the zip file.

Authorizations:
oauth2
query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Connections to return (defaults to 10)

string or integer

Index of first Connection to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [
    ],
  • "limit": 10,
  • "offset": 0,
  • "total_count": 5
}

Create a new data export

Create a new data export. Note that you can only create a data export for spaces you have the Space Administrator role for.

Authorizations:
oauth2
Request Body schema: application/json

The request body should describe the data export that is requested. Different fields are required for different types of data export.

type
required
string
Enum: "client_record_export" "dossier_audit_log_export" "member_connections_export" "member_data_export" "space_activity_export"

The type of data export that is requested. Note that not all types of exports might be enabled for a healthspace.

Array of objects (profile-reference)

An array of Healthspaces which should be included in the data export. This field is required for member_data_export, space_activity_export, member_connections_export, and dossier_audit_log_export

start_date
string <date>

The start date of the time period to get data for. Optional for the space_activity_export and dossier_audit_log_export data export types. If this field is omitted, all data from the very beginning is included.

end_date
string <date>

The end date of the time period to get data for. Optional for the space_activity_export and dossier_audit_log_export data export types. If this field is omitted, all data up to the current day is included.

object

The account for which data should be exported. Required only for data exports of type client_record_export.

Responses

Request samples

Content type
application/json
Example
{
  • "type": "client_record_export",
  • "client_account": {
    }
}

Response samples

Content type
application/json
Example
{
  • "id": "95cc5025d2d3",
  • "type": "client_record_export",
  • "status": "queued",
  • "created_at": "2024-11-18T13:05:23+01:00",
  • "created_by": {
    },
  • "spaces": [
    ],
  • "expires_at": "2024-12-02T13:05:23+01:00",
  • "client_account": {
    }
}

Delete a data export

Authorizations:
oauth2
path Parameters
id
required
string = 12 characters
Examples:
  • 897128edfa05 - An example of an id

Data export ID

Responses

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

Download a data export

Download the data export as a zip file, as linked from the file property in the GET endpoint

Authorizations:
oauth2
path Parameters
id
required
string = 12 characters
Examples:
  • 897128edfa05 - An example of an id

Data export ID

filename
required
string
Examples:
  • 673c99376feed00de904b7d3.zip - An example filename

The data export filename

Responses

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

external-record-items

External record items can be added to the personal health record of a client on behalf of an organisation in Karify. Each external record item endpoint needs its own scope and role permissions. An application can use the scope MANAGE_ORGANIZATION_EXTERNAL_RECORD_ITEMS to use all (..._READ, ..._CREATE and ..._UPDATE) scopes in one scope. We distinguish two types of external record items, based on their contents: HTML external record items, and external record items with a file. These are very similar when retrieved through GET requests. However, the POST and PUT requests differ to such a degree that they are specified for both types separately in this documentation.

Get external record items of account

This endpoint enables you to obtain the complete set of external record items for the specified account.

Scope The scope ORGANIZATION_EXTERNAL_RECORD_ITEM_READ is needed for this endpoint.

Role The authenticated user should have the role ROLE_ACCOUNT_SPACE_OWNER.

Authorizations:
oauth2
path Parameters
account
required
string = 12 characters
Example: a2b75d614ef1

Account ID

query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of external record items to return (defaults to 10)

string or integer
Examples:
  • offset=10 - Example of an offset value as a string
  • offset=25 - Example of an offset value as an integer

Index of first external record item to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
{
  • "collection": [
    ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 3
}

Create an external record item for the specified account

This endpoint enables you to create an external record item with html or file content for the specified account.

Content-Type Different from most other requests, a request to post an external record item with a file requires the Content-Type to be multipart/related. This multipart request should contain two parts: one part containing the data in JSON format, and one part containing the file.

Scope The scope ORGANIZATION_EXTERNAL_RECORD_ITEM_CREATE is needed for this endpoint.

Role The authenticated user should have the role ROLE_ACCOUNT_SPACE_OWNER.

Authorizations:
oauth2
path Parameters
account
required
string = 12 characters
Example: a2b75d614ef1

Account ID

Request Body schema:

The request body should contain the new external record item to create. Note that the content-type depends on whether the external record item should contain HTML content or a file.

external_id
string [ 1 .. 255 ] characters

A self-chosen identifier for the external item, which must be unique per external item. Required when creating a new external record item through POST, not when updating through PUT.

name
required
string [ 1 .. 255 ] characters

Name of item to display to client

type
required
string
Value: "html"

The type of the external record item, in this case 'html'. Note that, when updating an external record item, the types should match.

content
required
string non-empty

Any textual content in html format. Allowed html tags are: a[href|target], abbr, acronym, address, b, blockquote, br, del, em, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, q, s, span[style], strike, strong, sub, sup, table, td, tbody, tfoot, th, thead, tr, ul.

status
required
string
Enum: "is-available-externally" "is-removed-externally"
send_notification
boolean
Default: true

Optional: whether to send a notification when the new external record item is created.

Responses

Request samples

Content type
Example
{
  • "external_id": "372975231",
  • "name": "The name of an item",
  • "type": "html",
  • "content": "<p>This is an example of an external record item with HTML content that is newly created.<p>",
  • "status": "is-available-externally"
}

Response samples

Content type
application/json
Example
{
  • "external_id": "372975231",
  • "name": "The name of an item",
  • "type": "html",
  • "content": "<p>This is an example of an external record item with HTML content that is newly created.<p>",
  • "status": "is-available-externally",
  • "account": {
    },
  • "created_by_account": {
    },
  • "created_at": "2017-03-27T14:29:08+00:00",
  • "updated_at": "2017-03-27T14:29:08+00:00"
}

Get specific external record item of account

This endpoint enables you to obtain one specific external record items for the specified account based on an external_record_item_id.

Scope The scope ORGANIZATION_EXTERNAL_RECORD_ITEM_READ is needed for this endpoint.

Role The authenticated user should have the role ROLE_ACCOUNT_SPACE_OWNER.

Authorizations:
oauth2
path Parameters
account
required
string = 12 characters
Example: a2b75d614ef1

Account ID

externalId
required
string [ 1 .. 255 ] characters
Examples:
  • a2b75d614ef1 - a short ID using hexadecimal characters
  • 218689506768030517684506458537912482794 - A long ID consisting of only numbers

The external ID of the external record item

Responses

Response samples

Content type
application/json
{
  • "external_id": "372975231",
  • "name": "The name of an item",
  • "type": "html",
  • "content": "<p>This is an example of an external record item<p>",
  • "status": "is-available-externally",
  • "account": {
    },
  • "created_by_account": {
    },
  • "created_at": "2017-03-27T14:29:08+00:00",
  • "updated_at": "2017-03-27T14:29:08+00:00"
}

Update an external record item for the specified account. The client will get a new version of the item in their personal health record and can still browse through previous versions.

This endpoint enables you to update a specified external record item for the specified account. The client will get a new version of the item in their personal health record and can still browse through previous versions.

Note that you can only update external record items with external records of the same type, so an external record item with file content can only be updated with external record items with file content.

Content-Type Different from most other requests, a request to update a file requires the Content-Type to be multipart/related. This multipart request should contain two parts: one part containing the data in JSON format, and one part containing the file.

Scope The scope ORGANIZATION_EXTERNAL_RECORD_ITEM_UPDATE is needed for this endpoint.

Role The authenticated user should have the role ROLE_ACCOUNT_SPACE_OWNER.

Authorizations:
oauth2
path Parameters
account
required
string = 12 characters
Example: a2b75d614ef1

Account ID

externalId
required
string [ 1 .. 255 ] characters
Examples:
  • a2b75d614ef1 - a short ID using hexadecimal characters
  • 218689506768030517684506458537912482794 - A long ID consisting of only numbers

The external ID of the external record item

Request Body schema:

The request body should contain the updated contents of the external record item

external_id
string [ 1 .. 255 ] characters

A self-chosen identifier for the external item, which must be unique per external item. Required when creating a new external record item through POST, not when updating through PUT.

name
required
string [ 1 .. 255 ] characters

Name of item to display to client

type
required
string
Value: "html"

The type of the external record item, in this case 'html'. Note that, when updating an external record item, the types should match.

content
required
string non-empty

Any textual content in html format. Allowed html tags are: a[href|target], abbr, acronym, address, b, blockquote, br, del, em, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, q, s, span[style], strike, strong, sub, sup, table, td, tbody, tfoot, th, thead, tr, ul.

status
required
string
Enum: "is-available-externally" "is-removed-externally"
send_notification
boolean
Default: true

Optional: whether to send a notification when the new external record item is created.

Responses

Request samples

Content type
{
  • "external_id": "372975759",
  • "name": "The name of an item to be updated",
  • "type": "html",
  • "content": "<p>The 'created at' and 'updated at' dates should be different now.</p>",
  • "status": "is-available-externally"
}

Response samples

Content type
application/json
Example
{
  • "external_id": "372975759",
  • "name": "The name of an item to be updated",
  • "type": "html",
  • "content": "<p>The 'created at' and 'updated at' dates should be different now.</p>",
  • "status": "is-available-externally",
  • "account": {
    },
  • "created_by_account": {
    },
  • "created_at": "2019-07-01T10:17:21+00:00",
  • "updated_at": "2019-08-01T09:02:52+00:00"
}

Get the file contents of the external record item

beta

Authorizations:
oauth2
path Parameters
account
required
string = 12 characters
Example: a2b75d614ef1

Account ID

externalId
required
string [ 1 .. 255 ] characters
Examples:
  • a2b75d614ef1 - a short ID using hexadecimal characters

The external ID of the external record item

Responses

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

files

My Files

Get files for current account's given organization

Authorizations:
oauth2
path Parameters
organization
required
string = 12 characters
Example: a2b75d614ef1

Organization ID

query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of files to return (defaults to 10)

string or integer
Examples:
  • offset=10 - Example of an offset value as a string
  • offset=25 - Example of an offset value as an integer

Index of first file to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [ ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0
}

healthspace-connections

Specific users can also manage all connections in a Healthspace (when they have the role ROLE_SPACE_CONNECTION_MANAGER for the given Healthspace).

Each connection endpoint needs its own scope and role permissions. An application can use the scope MANAGE_SPACE_CONNECTIONS to use all (..._READ, ..._CREATE and ..._DELETE) scopes in one scope.

Get connections

This endpoint enables you to obtain the complete set of active connections within the given Healthspace.

Scope

The scope SPACE_CONNECTION_READ is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_CONNECTION_MANAGER for the given space. This role is part of the group assistants.

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Example: eb860ec90005

The ID of the healthspace of the connection

query Parameters
profile
string = 12 characters
Example: profile=1811aea3de49

Optional: filter the connections by profile

Responses

Response samples

Content type
application/json
{
  • "collection": [
    ],
  • "limit": 10,
  • "offset": 0,
  • "total_count": 2
}

Add connection

This endpoint enables you to create connections between clients and clinicians, based on their respective profile_ids.

When a connection between two profiles is created, users may be notified via e-mail notification.

Scope

The scope SPACE_CONNECTION_CREATE is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_CONNECTION_MANAGER for the given space. This role is part of the group assistants.

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Example: eb860ec90005

The ID of the healthspace of the connection

Request Body schema: application/json
object

The profile of the clinician

object

The profile of the client

type
string
Value: "PROCLI"

Responses

Request samples

Content type
application/json
{
  • "profile1": {
    },
  • "profile2": {
    },
  • "type": "PROCLI"
}

Response samples

Content type
application/json

Returns the connection that was created

{
  • "id": "6478da305e40",
  • "profile1": {
    },
  • "profile2": {
    },
  • "type": "PROCLI"
}

Get a single connection in a healthspace you administer

This endpoint enables you to obtain a specific connection based on a connection_id

Scope

The scope SPACE_CONNECTION_READ is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_CONNECTION_MANAGER for the given space. This role is part of the group assistants.

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Example: 210e4b93c511

The ID of the healthspace of the connection

connection
required
string = 12 characters
Example: 751c4c973c9e

The ID of the connection

Responses

Response samples

Content type
application/json
{
  • "id": "751c4c973c9e",
  • "profile1": {
    },
  • "profile2": {
    },
  • "type": "PROCLI"
}

Remove connection

This endpoint enables you to delete a connection based on a connection_id, received when creating or requesting details on a connection.

Scope

The scope SPACE_CONNECTION_DELETE is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_CONNECTION_MANAGER for the given space. This role is part of the group assistants.

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Example: 210e4b93c511

The ID of the healthspace of the connection

connection
required
string = 12 characters
Example: 751c4c973c9e

The ID of the connection to delete

Responses

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

healthspace-profiles

Specific users can also manage all profiles in a Healthspace (when they have the role ROLE_SPACE_MEMBER_MANAGER for the given Healthspace).

Each profile endpoint needs its own scope and role permissions. An application can use the scope MANAGE_SPACE_PROFILES to use all (..._READ, ..._CREATE and ..._DELETE) scopes in one scope.

Get a specific profile from a healthspace you administer

Returns a single profile in the specified healthspace by the id.

Scope

The scope SPACE_PROFILE_READ is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_MEMBER_MANAGER which is part of the group assistants, or be any staff member with a Professional-to-Client Connection with the specified profile.

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

profile
required
string = 12 characters

Profile ID

Responses

Response samples

Content type
application/json
{
  • "account": {
    },
  • "administrative_data": {
    },
  • "created_at": "2017-03-27T08:12:09+00:00",
  • "id": "68043e7c1cf2",
  • "groups": [ ],
  • "space": {
    },
  • "status": "subscribed",
  • "updated_at": "2017-03-27T08:12:09+00:00",
  • "user_type": "client"
}

Patch administrative data for a profile in a healthspace you administer

Update a specific profile based on profile_id. It is possible to change the values of status and/or administrative_data using this method.

You can patch a profile and set the status parameter to unsubscribed to unsubscribe the profile, or set the value to subscribed to reactivate it. Changing the subscription status may result in a notification by email to the owner of the profile.

Scope

The scope SPACE_PROFILE_UPDATE is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_MEMBER_MANAGER which is part of the group assistants.

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

profile
required
string = 12 characters

Profile ID

Request Body schema: application/json
administrative_data
object
status
string
Enum: "subscribed" "unsubscribed"
groups
Array of strings
Items Enum: "administrators" "api_users" "assistants" "clinicians" "clinicians_with_permission_to_manage_connections_with_self" "clinicians_with_permission_to_manage_invitations" "library_managers"

Responses

Request samples

Content type
application/json
{
  • "administrative_data": {
    },
  • "status": "unsubscribed",
  • "groups": [
    ]
}

Response samples

Content type
application/json
{
  • "account": {
    },
  • "administrative_data": {
    },
  • "created_at": "2017-03-27T08:12:09+00:00",
  • "id": "68043e7c1cf2",
  • "space": {
    },
  • "status": "unsubscribed",
  • "updated_at": "2017-03-27T11:28:51+00:00",
  • "user_type": "client",
  • "groups": [
    ]
}

healthspaces

Healthspaces represent groups of profiles on Karify. Users can be invited to a healthspace and thereby become a member.

invitation

Users can be invited to your Healthspace. This can be done using the following endpoints. A user will receive an invitation by email and can chose to create a new Karify account or log in using their existing Karify account. Either way, a profile will be created to confirm the membership with the inviting Healthspace.

Each invitation endpoint needs its own scope and role permissions. An application can use the scope MANAGE_SPACE_INVITATIONS to use all (..._READ, ..._CREATE, ..._RESEND and ..._WITHDRAW) scopes in one scope.

Status Each invitation has an status, the following statusses are possible.

Status Description
invited The user has been invited (via email) to become a member of this Healthspace
requested A user has requested a membership for this Healthspace
accepted The user has accepted the invitation and thus has become a member of this Healthspace
withdrawn The invitation has been withdrawn

Note: the returned invitation object contains both an id and a secret field. The secret field will be deprecated so should not be used for new implementations, please use the id field instead.

Accept an invitation for a Healthspace with an authenticated account.

beta

Authorizations:
oauth2
Request Body schema: application/json
required

The request body should contain an invitation secret

secret
required
string <= 64 characters

Responses

Request samples

Content type
application/json
{
  • "secret": "529832847252d239b31d0d56cfb1d8669aadf3ac568ebd839f5db78c94ace4dc"
}

Response samples

Content type
application/json
Example
{}

Get invitations for space

To get the status of all invites for a specific Healthspace use the following request.

Scope

The scope SPACE_INVITATION_READ is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_INVITATION_MANAGER for the given space. This role is part of the group assistants.

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

query Parameters
last_modified_since
integer
Example: last_modified_since=631152000

The last_modified_since parameter matches to a UNIX timestamp.

Responses

Response samples

Content type
application/json
{
  • "collection": [
    ],
  • "limit": 10,
  • "offset": 0,
  • "total_count": 6
}

Send invitation

To invite a patient for Karify and for a Healthspace use the following request.

Scope

The scope SPACE_INVITATION_CREATE is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_INVITATION_MANAGER for the given space. This role is part of the group assistants.

If successful, a 201 code will be returned along with some response variables like invitation_id, which identifies this specific invitation for future reference.

Use this identifier to reference to a patient based on your own administration (for example, the patient identification number).

When a successful invitation is posted, Karify will now go through the process of inviting a patient. An e-mail will be sent to the user with a link to the invitation URL. Here, the user will be guided through the steps of becoming a member of the healthspace. If the user does not have an account, it will also be created during this process.

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

Request Body schema: application/json
object

Object which can include any named variable like identificationNumber for further reference.

email_address
required
string

Email address of invitee to sent the invitation explanation and link to

first_name
required
string

First name of invitee to personalize invitation mail and pre-fill the invitation form for creating a Karify account

invite_user_type
required
string
Enum: "client" "staff"
Array of objects

Connections can be proposed when sending an invitation. Connections will be created with the provided array of accounts once the invited user accepts the invitation.

surname
required
string

Surname of invitee to personalize invitation mail and pre-fill the invitation form for creating a Karify account.

surname_prefix
string

Surname prefix of invitee to personalize invitation mail and pre-fill the invitation form for creating a Karify account

groups
Array of strings

Responses

Request samples

Content type
application/json
{
  • "administrative_data": {
    },
  • "email_address": "penny@example.com",
  • "first_name": "Penny",
  • "invite_user_type": "client",
  • "pending_connections": [
    ],
  • "surname": "Breil",
  • "surname_prefix": ""
}

Response samples

Content type
application/json
{
  • "administrative_data": {
    },
  • "email_address": "piet@example.com",
  • "first_name": "Piet",
  • "groups": [
    ],
  • "id": "89880a5b1d14",
  • "invite_user_type": "staff",
  • "invited_at": "2017-03-27T13:46:30+00:00",
  • "invited_by_account": {
    },
  • "pending_connections": [
    ],
  • "secret": "89880a5b1d14",
  • "space": {
    },
  • "status": "invited",
  • "surname": "Janssen",
  • "surname_prefix": ""
}

Get invitation

To get the status of an invite for Karify use the following request.

Scope

The scope SPACE_INVITATION_READ is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_INVITATION_MANAGER for the given space. This role is part of the group assistants.

If successful, a 200 code will be returned along with status information of the invitation.

Authorizations:
oauth2
path Parameters
space
required
string

Determines the destination healthspace

invitation
required
string

Unique invitation identifier, returned when creating an invitation (id)

Responses

Response samples

Content type
application/json
{
  • "administrative_data": {
    },
  • "email_address": "piet@example.com",
  • "first_name": "Piet",
  • "groups": [
    ],
  • "id": "89880a5b1d14",
  • "invite_user_type": "staff",
  • "invited_at": "2017-03-27T13:46:30+00:00",
  • "invited_by_account": {
    },
  • "pending_connections": [
    ],
  • "secret": "89880a5b1d14",
  • "space": {
    },
  • "status": "invited",
  • "surname": "Janssen",
  • "surname_prefix": ""
}

Resend invitation

It is possible to resend the invitation in case the targetted user cannot access the invitation.

Scope The scope SPACE_INVITATION_RESEND is needed for this endpoint.

Role The authenticated user should have the role ROLE_SPACE_INVITATION_MANAGER for the given space. This role is part of the group assistants.

If successful, a 202 status (Accepted) is returned containing the updated invitation.

Authorizations:
oauth2
path Parameters
space
required
string

Determines the destination healthspace

invitation
required
string

Unique invitation identifier, returned when creating an invitation (id)

Responses

Response samples

Content type
application/json
{
  • "administrative_data": {
    },
  • "email_address": "piet@example.com",
  • "first_name": "Piet",
  • "groups": [
    ],
  • "id": "89880a5b1d14",
  • "invite_user_type": "staff",
  • "invited_at": "2017-03-27T13:46:30+00:00",
  • "invited_by_account": {
    },
  • "pending_connections": [
    ],
  • "secret": "89880a5b1d14",
  • "space": {
    },
  • "status": "invited",
  • "surname": "Janssen",
  • "surname_prefix": ""
}

Withdraw invitation

Withdrawing the invitation invalidates the outstanding invitation as well as the secret that enables opening the invitation.

Scope

The scope SPACE_INVITATION_WITHDRAW is needed for this endpoint.

Role

The authenticated user should have the role ROLE_SPACE_INVITATION_MANAGER for the given space. This role is part of the group assistants.

If successful, a 202 status (Accepted) is returned containing the updated invitation, with status withdrawn.

Authorizations:
oauth2
path Parameters
space
required
string

Determines the destination healthspace

invitation
required
string

Unique invitation identifier, returned when creating an invitation (id)

Responses

Response samples

Content type
application/json
{
  • "administrative_data": {
    },
  • "email_address": "penny@example.com",
  • "first_name": "Penny",
  • "groups": [ ],
  • "id": "89880a5b1d13",
  • "invitation_resent_at": "2017-03-27T14:04:03+00:00",
  • "invite_user_type": "client",
  • "invited_at": "2017-03-27T13:46:30+00:00",
  • "invited_by_account": {
    },
  • "pending_connections": [ ],
  • "secret": "89880a5b1d13",
  • "space": {
    },
  • "status": "withdrawn",
  • "surname": "Breil",
  • "surname_prefix": ""
}

life-events

Life Events

Get a collection with all Life Events of the user that is logged in

beta

Authorizations:
oauth2
query Parameters
search
string
Examples:
  • search=something - Search for Life Events where the name contains 'something'

Refine the returned results to those Life Events which contain the given search term in their name

string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Life Events to return (defaults to 10)

string or integer
Examples:
  • offset=10 - Example of an offset value as a string
  • offset=25 - Example of an offset value as an integer

Index of first Life Event to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [ ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0
}

login

Login

Log in to Karify with a username and password

beta

Authorizations:
oauth2
Request Body schema: application/json
required

The request body should contain a username and password

username
required
string <email>
password
required
string <password> [ 8 .. 60 ] characters

Responses

Request samples

Content type
application/json
{
  • "username": "account-email@example.com",
  • "password": "some-random-password"
}

Response samples

Content type
application/json
Example
{
  • "error_code": "BAD_REQUEST"
}

mail

Sending and receiving messages.

Get all threads

beta

Authorizations:
oauth2
query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Profiles to return (defaults to 10)

string or integer

Index of first Profile to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example

No threads found

{
  • "collection": [ ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0
}

Create a new thread

beta

Authorizations:
oauth2
Request Body schema:

The content of the new thread

required
Array of objects (account-reference) non-empty

The list of participant accounts. Note that if the currently logged-in account is not included, it is automatically added to the list of participants in the thread. This should include at least one account that is not the currently logged-in account.

subject
required
string non-empty
required
Array of objects non-empty
required
object (space-id)

Responses

Request samples

Content type
Example
{
  • "participant_accounts": [
    ],
  • "subject": "Simple new thread",
  • "messages": [
    ],
  • "space": {
    }
}

Response samples

Content type
application/json
{
  • "id": "99a03c787c8c",
  • "created_by_account": {
    },
  • "participant_accounts": [
    ],
  • "subject": "Simple new thread",
  • "has_attachments": false,
  • "message_count": 1,
  • "last_message": {
    },
  • "space": {
    },
  • "archived": false,
  • "starred": false,
  • "read": true,
  • "reply_enabled": true
}

Get a specific thread

beta

Authorizations:
oauth2
path Parameters
thread
string = 12 characters
Example: c5f085b880ac

The ID of the thread

Responses

Response samples

Content type
application/json
Example
{
  • "id": "c5f085b880ac",
  • "created_by_account": {
    },
  • "participant_accounts": [
    ],
  • "subject": "Example message thread",
  • "has_attachments": false,
  • "message_count": 1,
  • "last_message": {
    },
  • "space": {
    },
  • "archived": false,
  • "starred": false,
  • "read": true,
  • "reply_enabled": true
}

Update the flags on the thread

beta

Authorizations:
oauth2
path Parameters
thread
string = 12 characters
Example: c5f085b880ac

The ID of the thread

Request Body schema: application/json

The properties of the thread to update

archived
boolean
starred
boolean
read
boolean

Responses

Request samples

Content type
application/json

Mark the thread as 'starred'

{
  • "starred": true
}

Response samples

Content type
application/json
{
  • "id": "c5f085b880ac",
  • "created_by_account": {
    },
  • "participant_accounts": [
    ],
  • "subject": "Example message thread",
  • "has_attachments": false,
  • "message_count": 1,
  • "last_message": {
    },
  • "space": {
    },
  • "archived": false,
  • "starred": true,
  • "read": true,
  • "reply_enabled": true
}

Get all messages in a thread

beta

Authorizations:
oauth2
path Parameters
thread
required
string = 12 characters
Example: 23f5e6fe250b

The ID of the thread

query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Profiles to return (defaults to 10)

string or integer

Index of first Profile to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
{
  • "collection": [
    ],
  • "limit": 0,
  • "offset": 0,
  • "total_count": 0
}

Post a new message to the thread

Authorizations:
oauth2
path Parameters
thread
required
string = 12 characters
Example: 23f5e6fe250b

The ID of the thread that contains the message

Request Body schema:

The message to post, either without attachments as application/json or with attachments as multipart/related. Note that multiple attachment can be added, in which case each attachment is added in a separate part.

body
required
string non-empty
file_attachments
Array of arrays <= 0 items

File attachments only make sense in a multipart/related request, when there are files attached, but it's not wrong to send an empty array.

Responses

Request samples

Content type

A simple reply to the thread

{
  • "body": "This is a new message in reply to the thread"
}

Response samples

Content type
application/json

A new reply

{
  • "id": "4b7092ca4e12",
  • "sender_account": {
    },
  • "body": "This is an example message.",
  • "file_attachments": [ ],
  • "library_attachments": [ ],
  • "read": true,
  • "created_at": "2021-06-04T08:59:44+02:00"
}

Get a specific message

beta

Authorizations:
oauth2
path Parameters
thread
required
string = 12 characters
Example: 23f5e6fe250b

The ID of the thread that contains the message

message
required
string = 12 characters
Example: 4b7092ca4e12

The ID of the requested message

Responses

Response samples

Content type
application/json
Example

A simple message without attachments

{
  • "id": "4b7092ca4e12",
  • "sender_account": {},
  • "body": "This is an example message.",
  • "file_attachments": [ ],
  • "library_attachments": [ ],
  • "read": true,
  • "created_at": "2021-04-21T09:32:27+02:00"
}

Mark a specific message as read or unread

beta

Authorizations:
oauth2
path Parameters
thread
required
string = 12 characters
Example: 23f5e6fe250b

The ID of the thread that contains the message

message
required
string = 12 characters
Example: 4b7092ca4e12

The ID of the requested message

Request Body schema: application/json

The updated contents of the message

read
required
boolean

Responses

Request samples

Content type
application/json
Example

Mark the message as read

{
  • "read": true
}

Response samples

Content type
application/json
Example

A read message.

{
  • "id": "4b7092ca4e12",
  • "sender_account": {
    },
  • "body": "This is an example message.",
  • "file_attachments": [ ],
  • "library_attachments": [ ],
  • "read": true,
  • "created_at": "2021-04-22T12:41:06+02:00"
}

metadata

Metadata is used in the SAML protocol to expose the configuration of a SAML entity, like a SP or IdP. Metadata defines information such as what service are available, addresses and certificates. Metadata is defined in XML. A SP uses the Metadata to know how to communicate with the IdP and vice versa.

Metadata is exchanged between the SP and the IdP. There is no protocol for how the exchange is done but there is no secret information in the metadata so the XML can be freely distributed by mail or published in plain text on the internet.

The SAML metadata for Karify can be found here: https://saml.karify.com/metadata.xml

multi-factor-authentication

Multi factor authentication

Endpoint to associate an authentication method with the currently logged in user

beta

Authorizations:
oauth2cookie
Request Body schema: application/json
required
method
required
string
Enum: "SMS" "TOTP"

Responses

Request samples

Content type
application/json
{
  • "method": "SMS"
}

Response samples

Content type
application/json
Example
{ }

Endpoint to disable multi factor authentication for the currently logged in user.

beta

Authorizations:
oauth2cookie

Responses

Response samples

Content type
application/json
{
  • "error_code": "SESSION_EXPIRED"
}

Endpoint to resend the multi factor authentication code.

beta

Authorizations:
oauth2cookie

Responses

Response samples

Content type
application/json
Example
{
  • "phone_number": "*********78"
}

Endpoint to complete the multifactor authentication challenge.

beta

Authorizations:
oauth2cookie
Request Body schema: application/json
required
mfa_code
required
string
trusted_device
boolean

Responses

Request samples

Content type
application/json
{
  • "mfa_code": "string",
  • "trusted_device": true
}

Response samples

Content type
application/json
{
  • "backup_codes_left": 1
}

Endpoint to request the user's currently set up multi factor authentication method.

beta

Authorizations:
oauth2cookie

Responses

Response samples

Content type
application/json
Example
{
  • "method": "TOTP"
}

Endpoint to generate new backup codes.

beta

Authorizations:
oauth2cookie

Responses

Response samples

Content type
application/json
[
  • "4460377125",
  • "6048618494",
  • "0570784111"
]

Endpoint to invalidate all trusted device cookies for the current user.

beta

Authorizations:
oauth2cookie

Responses

Response samples

Content type
application/json
{
  • "error_code": "SESSION_EXPIRED"
}

Endpoint to request all multi factor authentication methods that are currently supported.

beta

Authorizations:
oauth2cookie

Responses

Response samples

Content type
application/json
[
  • "SMS",
  • "TOTP"
]

Endpoint to generate a QR code.

beta

Authorizations:
oauth2cookie
query Parameters
size
integer

The size of the QR code, defaults to 300 if not given

margin
integer

The margin of the QR code, defaults to 10 if not given

Responses

Response samples

Content type
image/svg+xml

A QR code of default dimensions

<?xml version="1.0"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="320px" height="320px" viewBox="0 0 320 320"><defs><rect id="block" width="8" height="8" fill="#000000" fill-opacity="1"/></defs><rect x="0" y="0" width="320" height="320" fill="#ffffff" fill-opacity="1"/><use x="12" y="12" xlink:href="#block"/><use x="20" y="12" xlink:href="#block"/><use x="28" y="12" xlink:href="#block"/><use x="36" y="12" xlink:href="#block"/><use x="44" y="12" xlink:href="#block"/><use x="52" y="12" xlink:href="#block"/><use x="60" y="12" xlink:href="#block"/><use x="84" y="12" xlink:href="#block"/><use x="132" y="12" xlink:href="#block"/><use x="140" y="12" xlink:href="#block"/><use x="180" y="12" xlink:href="#block"/><use x="188" y="12" xlink:href="#block"/><use x="220" y="12" xlink:href="#block"/><use x="228" y="12" xlink:href="#block"/><use x="252" y="12" xlink:href="#block"/><use x="260" y="12" xlink:href="#block"/><use x="268" y="12" xlink:href="#block"/><use x="276" y="12" xlink:href="#block"/><use x="284" y="12" xlink:href="#block"/><use x="292" y="12" xlink:href="#block"/><use x="300" y="12" xlink:href="#block"/><use x="12" y="20" xlink:href="#block"/><use x="60" y="20" xlink:href="#block"/><use x="76" y="20" xlink:href="#block"/><use x="84" y="20" xlink:href="#block"/><use x="100" y="20" xlink:href="#block"/><use x="108" y="20" xlink:href="#block"/><use x="148" y="20" xlink:href="#block"/><use x="164" y="20" xlink:href="#block"/><use x="188" y="20" xlink:href="#block"/><use x="196" y="20" xlink:href="#block"/><use x="212" y="20" xlink:href="#block"/><use x="220" y="20" xlink:href="#block"/><use x="252" y="20" xlink:href="#block"/><use x="300" y="20" xlink:href="#block"/><use x="12" y="28" xlink:href="#block"/><use x="28" y="28" xlink:href="#block"/><use x="36" y="28" xlink:href="#block"/><use x="44" y="28" xlink:href="#block"/><use x="60" y="28" xlink:href="#block"/><use x="84" y="28" xlink:href="#block"/><use x="92" y="28" xlink:href="#block"/><use x="100" y="28" xlink:href="#block"/><use x="124" y="28" xlink:href="#block"/><use x="140" y="28" xlink:href="#block"/><use x="164" y="28" xlink:href="#block"/><use x="172" y="28" xlink:href="#block"/><use x="180" y="28" xlink:href="#block"/><use x="188" y="28" xlink:href="#block"/><use x="196" y="28" xlink:href="#block"/><use x="204" y="28" xlink:href="#block"/><use x="212" y="28" xlink:href="#block"/><use x="220" y="28" xlink:href="#block"/><use x="236" y="28" xlink:href="#block"/><use x="252" y="28" xlink:href="#block"/><use x="268" y="28" xlink:href="#block"/><use x="276" y="28" xlink:href="#block"/><use x="284" y="28" xlink:href="#block"/><use x="300" y="28" xlink:href="#block"/><use x="12" y="36" xlink:href="#block"/><use x="28" y="36" xlink:href="#block"/><use x="36" y="36" xlink:href="#block"/><use x="44" y="36" xlink:href="#block"/><use x="60" y="36" xlink:href="#block"/><use x="76" y="36" xlink:href="#block"/><use x="84" y="36" xlink:href="#block"/><use x="100" y="36" xlink:href="#block"/><use x="140" y="36" xlink:href="#block"/><use x="148" y="36" xlink:href="#block"/><use x="156" y="36" xlink:href="#block"/><use x="204" y="36" xlink:href="#block"/><use x="228" y="36" xlink:href="#block"/><use x="252" y="36" xlink:href="#block"/><use x="268" y="36" xlink:href="#block"/><use x="276" y="36" xlink:href="#block"/><use x="284" y="36" xlink:href="#block"/><use x="300" y="36" xlink:href="#block"/><use x="12" y="44" xlink:href="#block"/><use x="28" y="44" xlink:href="#block"/><use x="36" y="44" xlink:href="#block"/><use x="44" y="44" xlink:href="#block"/><use x="60" y="44" xlink:href="#block"/><use x="92" y="44" xlink:href="#block"/><use x="108" y="44" xlink:href="#block"/><use x="116" y="44" xlink:href="#block"/><use x="124" y="44" xlink:href="#block"/><use x="132" y="44" xlink:href="#block"/><use x="164" y="44" xlink:href="#block"/><use x="172" y="44" xlink:href="#block"/><use x="180" y="44" xlink:href="#block"/><use x="188" y="44" xlink:href="#block"/><use x="236" y="44" xlink:href="#block"/><use x="252" y="44" xlink:href="#block"/><use x="268" y="44" xlink:href="#block"/><use x="276" y="44" xlink:href="#block"/><use x="284" y="44" xlink:href="#block"/><use x="300" y="44" xlink:href="#block"/><use x="12" y="52" xlink:href="#block"/><use x="60" y="52" xlink:href="#block"/><use x="76" y="52" xlink:href="#block"/><use x="92" y="52" xlink:href="#block"/><use x="116" y="52" xlink:href="#block"/><use x="124" y="52" xlink:href="#block"/><use x="132" y="52" xlink:href="#block"/><use x="140" y="52" xlink:href="#block"/><use x="148" y="52" xlink:href="#block"/><use x="188" y="52" xlink:href="#block"/><use x="212" y="52" xlink:href="#block"/><use x="220" y="52" xlink:href="#block"/><use x="228" y="52" xlink:href="#block"/><use x="252" y="52" xlink:href="#block"/><use x="300" y="52" xlink:href="#block"/><use x="12" y="60" xlink:href="#block"/><use x="20" y="60" xlink:href="#block"/><use x="28" y="60" xlink:href="#block"/><use x="36" y="60" xlink:href="#block"/><use x="44" y="60" xlink:href="#block"/><use x="52" y="60" xlink:href="#block"/><use x="60" y="60" xlink:href="#block"/><use x="76" y="60" xlink:href="#block"/><use x="92" y="60" xlink:href="#block"/><use x="108" y="60" xlink:href="#block"/><use x="124" y="60" xlink:href="#block"/><use x="140" y="60" xlink:href="#block"/><use x="156" y="60" xlink:href="#block"/><use x="172" y="60" xlink:href="#block"/><use x="188" y="60" xlink:href="#block"/><use x="204" y="60" xlink:href="#block"/><use x="220" y="60" xlink:href="#block"/><use x="236" y="60" xlink:href="#block"/><use x="252" y="60" xlink:href="#block"/><use x="260" y="60" xlink:href="#block"/><use x="268" y="60" xlink:href="#block"/><use x="276" y="60" xlink:href="#block"/><use x="284" y="60" xlink:href="#block"/><use x="292" y="60" xlink:href="#block"/><use x="300" y="60" xlink:href="#block"/><use x="108" y="68" xlink:href="#block"/><use x="116" y="68" xlink:href="#block"/><use x="132" y="68" xlink:href="#block"/><use x="164" y="68" xlink:href="#block"/><use x="196" y="68" xlink:href="#block"/><use x="220" y="68" xlink:href="#block"/><use x="236" y="68" xlink:href="#block"/><use x="12" y="76" xlink:href="#block"/><use x="20" y="76" xlink:href="#block"/><use x="28" y="76" xlink:href="#block"/><use x="36" y="76" xlink:href="#block"/><use x="44" y="76" xlink:href="#block"/><use x="60" y="76" xlink:href="#block"/><use x="68" y="76" xlink:href="#block"/><use x="76" y="76" xlink:href="#block"/><use x="84" y="76" xlink:href="#block"/><use x="92" y="76" xlink:href="#block"/><use x="108" y="76" xlink:href="#block"/><use x="124" y="76" xlink:href="#block"/><use x="132" y="76" xlink:href="#block"/><use x="148" y="76" xlink:href="#block"/><use x="156" y="76" xlink:href="#block"/><use x="188" y="76" xlink:href="#block"/><use x="220" y="76" xlink:href="#block"/><use x="228" y="76" xlink:href="#block"/><use x="244" y="76" xlink:href="#block"/><use x="260" y="76" xlink:href="#block"/><use x="276" y="76" xlink:href="#block"/><use x="292" y="76" xlink:href="#block"/><use x="52" y="84" xlink:href="#block"/><use x="76" y="84" xlink:href="#block"/><use x="132" y="84" xlink:href="#block"/><use x="140" y="84" xlink:href="#block"/><use x="172" y="84" xlink:href="#block"/><use x="180" y="84" xlink:href="#block"/><use x="188" y="84" xlink:href="#block"/><use x="228" y="84" xlink:href="#block"/><use x="244" y="84" xlink:href="#block"/><use x="252" y="84" xlink:href="#block"/><use x="292" y="84" xlink:href="#block"/><use x="300" y="84" xlink:href="#block"/><use x="36" y="92" xlink:href="#block"/><use x="60" y="92" xlink:href="#block"/><use x="92" y="92" xlink:href="#block"/><use x="100" y="92" xlink:href="#block"/><use x="108" y="92" xlink:href="#block"/><use x="148" y="92" xlink:href="#block"/><use x="172" y="92" xlink:href="#block"/><use x="188" y="92" xlink:href="#block"/><use x="204" y="92" xlink:href="#block"/><use x="212" y="92" xlink:href="#block"/><use x="220" y="92" xlink:href="#block"/><use x="228" y="92" xlink:href="#block"/><use x="236" y="92" xlink:href="#block"/><use x="244" y="92" xlink:href="#block"/><use x="252" y="92" xlink:href="#block"/><use x="268" y="92" xlink:href="#block"/><use x="284" y="92" xlink:href="#block"/><use x="300" y="92" xlink:href="#block"/><use x="12" y="100" xlink:href="#block"/><use x="36" y="100" xlink:href="#block"/><use x="44" y="100" xlink:href="#block"/><use x="52" y="100" xlink:href="#block"/><use x="100" y="100" xlink:href="#block"/><use x="124" y="100" xlink:href="#block"/><use x="140" y="100" xlink:href="#block"/><use x="164" y="100" xlink:href="#block"/><use x="172" y="100" xlink:href="#block"/><use x="196" y="100" xlink:href="#block"/><use x="220" y="100" xlink:href="#block"/><use x="244" y="100" xlink:href="#block"/><use x="260" y="100" xlink:href="#block"/><use x="20" y="108" xlink:href="#block"/><use x="28" y="108" xlink:href="#block"/><use x="52" y="108" xlink:href="#block"/><use x="60" y="108" xlink:href="#block"/><use x="92" y="108" xlink:href="#block"/><use x="100" y="108" xlink:href="#block"/><use x="140" y="108" xlink:href="#block"/><use x="172" y="108" xlink:href="#block"/><use x="180" y="108" xlink:href="#block"/><use x="188" y="108" xlink:href="#block"/><use x="204" y="108" xlink:href="#block"/><use x="220" y="108" xlink:href="#block"/><use x="228" y="108" xlink:href="#block"/><use x="252" y="108" xlink:href="#block"/><use x="260" y="108" xlink:href="#block"/><use x="268" y="108" xlink:href="#block"/><use x="292" y="108" xlink:href="#block"/><use x="300" y="108" xlink:href="#block"/><use x="12" y="116" xlink:href="#block"/><use x="36" y="116" xlink:href="#block"/><use x="44" y="116" xlink:href="#block"/><use x="52" y="116" xlink:href="#block"/><use x="68" y="116" xlink:href="#block"/><use x="76" y="116" xlink:href="#block"/><use x="108" y="116" xlink:href="#block"/><use x="116" y="116" xlink:href="#block"/><use x="124" y="116" xlink:href="#block"/><use x="132" y="116" xlink:href="#block"/><use x="172" y="116" xlink:href="#block"/><use x="180" y="116" xlink:href="#block"/><use x="188" y="116" xlink:href="#block"/><use x="196" y="116" xlink:href="#block"/><use x="204" y="116" xlink:href="#block"/><use x="220" y="116" xlink:href="#block"/><use x="228" y="116" xlink:href="#block"/><use x="236" y="116" xlink:href="#block"/><use x="268" y="116" xlink:href="#block"/><use x="300" y="116" xlink:href="#block"/><use x="28" y="124" xlink:href="#block"/><use x="36" y="124" xlink:href="#block"/><use x="44" y="124" xlink:href="#block"/><use x="52" y="124" xlink:href="#block"/><use x="60" y="124" xlink:href="#block"/><use x="68" y="124" xlink:href="#block"/><use x="92" y="124" xlink:href="#block"/><use x="116" y="124" xlink:href="#block"/><use x="124" y="124" xlink:href="#block"/><use x="132" y="124" xlink:href="#block"/><use x="140" y="124" xlink:href="#block"/><use x="148" y="124" xlink:href="#block"/><use x="188" y="124" xlink:href="#block"/><use x="212" y="124" xlink:href="#block"/><use x="220" y="124" xlink:href="#block"/><use x="228" y="124" xlink:href="#block"/><use x="236" y="124" xlink:href="#block"/><use x="244" y="124" xlink:href="#block"/><use x="252" y="124" xlink:href="#block"/><use x="284" y="124" xlink:href="#block"/><use x="300" y="124" xlink:href="#block"/><use x="20" y="132" xlink:href="#block"/><use x="28" y="132" xlink:href="#block"/><use x="36" y="132" xlink:href="#block"/><use x="44" y="132" xlink:href="#block"/><use x="52" y="132" xlink:href="#block"/><use x="68" y="132" xlink:href="#block"/><use x="76" y="132" xlink:href="#block"/><use x="92" y="132" xlink:href="#block"/><use x="108" y="132" xlink:href="#block"/><use x="116" y="132" xlink:href="#block"/><use x="132" y="132" xlink:href="#block"/><use x="156" y="132" xlink:href="#block"/><use x="164" y="132" xlink:href="#block"/><use x="172" y="132" xlink:href="#block"/><use x="180" y="132" xlink:href="#block"/><use x="196" y="132" xlink:href="#block"/><use x="220" y="132" xlink:href="#block"/><use x="260" y="132" xlink:href="#block"/><use x="292" y="132" xlink:href="#block"/><use x="28" y="140" xlink:href="#block"/><use x="52" y="140" xlink:href="#block"/><use x="60" y="140" xlink:href="#block"/><use x="76" y="140" xlink:href="#block"/><use x="108" y="140" xlink:href="#block"/><use x="124" y="140" xlink:href="#block"/><use x="132" y="140" xlink:href="#block"/><use x="180" y="140" xlink:href="#block"/><use x="188" y="140" xlink:href="#block"/><use x="212" y="140" xlink:href="#block"/><use x="228" y="140" xlink:href="#block"/><use x="236" y="140" xlink:href="#block"/><use x="260" y="140" xlink:href="#block"/><use x="268" y="140" xlink:href="#block"/><use x="276" y="140" xlink:href="#block"/><use x="292" y="140" xlink:href="#block"/><use x="300" y="140" xlink:href="#block"/><use x="12" y="148" xlink:href="#block"/><use x="36" y="148" xlink:href="#block"/><use x="84" y="148" xlink:href="#block"/><use x="92" y="148" xlink:href="#block"/><use x="132" y="148" xlink:href="#block"/><use x="140" y="148" xlink:href="#block"/><use x="164" y="148" xlink:href="#block"/><use x="180" y="148" xlink:href="#block"/><use x="188" y="148" xlink:href="#block"/><use x="196" y="148" xlink:href="#block"/><use x="204" y="148" xlink:href="#block"/><use x="228" y="148" xlink:href="#block"/><use x="236" y="148" xlink:href="#block"/><use x="244" y="148" xlink:href="#block"/><use x="252" y="148" xlink:href="#block"/><use x="260" y="148" xlink:href="#block"/><use x="268" y="148" xlink:href="#block"/><use x="300" y="148" xlink:href="#block"/><use x="12" y="156" xlink:href="#block"/><use x="60" y="156" xlink:href="#block"/><use x="92" y="156" xlink:href="#block"/><use x="100" y="156" xlink:href="#block"/><use x="108" y="156" xlink:href="#block"/><use x="148" y="156" xlink:href="#block"/><use x="172" y="156" xlink:href="#block"/><use x="180" y="156" xlink:href="#block"/><use x="188" y="156" xlink:href="#block"/><use x="204" y="156" xlink:href="#block"/><use x="212" y="156" xlink:href="#block"/><use x="220" y="156" xlink:href="#block"/><use x="228" y="156" xlink:href="#block"/><use x="244" y="156" xlink:href="#block"/><use x="252" y="156" xlink:href="#block"/><use x="268" y="156" xlink:href="#block"/><use x="276" y="156" xlink:href="#block"/><use x="284" y="156" xlink:href="#block"/><use x="292" y="156" xlink:href="#block"/><use x="300" y="156" xlink:href="#block"/><use x="12" y="164" xlink:href="#block"/><use x="44" y="164" xlink:href="#block"/><use x="68" y="164" xlink:href="#block"/><use x="92" y="164" xlink:href="#block"/><use x="100" y="164" xlink:href="#block"/><use x="124" y="164" xlink:href="#block"/><use x="140" y="164" xlink:href="#block"/><use x="164" y="164" xlink:href="#block"/><use x="172" y="164" xlink:href="#block"/><use x="180" y="164" xlink:href="#block"/><use x="188" y="164" xlink:href="#block"/><use x="196" y="164" xlink:href="#block"/><use x="276" y="164" xlink:href="#block"/><use x="284" y="164" xlink:href="#block"/><use x="292" y="164" xlink:href="#block"/><use x="12" y="172" xlink:href="#block"/><use x="28" y="172" xlink:href="#block"/><use x="52" y="172" xlink:href="#block"/><use x="60" y="172" xlink:href="#block"/><use x="76" y="172" xlink:href="#block"/><use x="100" y="172" xlink:href="#block"/><use x="148" y="172" xlink:href="#block"/><use x="156" y="172" xlink:href="#block"/><use x="172" y="172" xlink:href="#block"/><use x="220" y="172" xlink:href="#block"/><use x="228" y="172" xlink:href="#block"/><use x="236" y="172" xlink:href="#block"/><use x="244" y="172" xlink:href="#block"/><use x="252" y="172" xlink:href="#block"/><use x="276" y="172" xlink:href="#block"/><use x="292" y="172" xlink:href="#block"/><use x="300" y="172" xlink:href="#block"/><use x="12" y="180" xlink:href="#block"/><use x="20" y="180" xlink:href="#block"/><use x="28" y="180" xlink:href="#block"/><use x="36" y="180" xlink:href="#block"/><use x="44" y="180" xlink:href="#block"/><use x="52" y="180" xlink:href="#block"/><use x="68" y="180" xlink:href="#block"/><use x="84" y="180" xlink:href="#block"/><use x="108" y="180" xlink:href="#block"/><use x="116" y="180" xlink:href="#block"/><use x="124" y="180" xlink:href="#block"/><use x="132" y="180" xlink:href="#block"/><use x="156" y="180" xlink:href="#block"/><use x="164" y="180" xlink:href="#block"/><use x="180" y="180" xlink:href="#block"/><use x="220" y="180" xlink:href="#block"/><use x="228" y="180" xlink:href="#block"/><use x="236" y="180" xlink:href="#block"/><use x="276" y="180" xlink:href="#block"/><use x="292" y="180" xlink:href="#block"/><use x="20" y="188" xlink:href="#block"/><use x="36" y="188" xlink:href="#block"/><use x="60" y="188" xlink:href="#block"/><use x="76" y="188" xlink:href="#block"/><use x="116" y="188" xlink:href="#block"/><use x="124" y="188" xlink:href="#block"/><use x="132" y="188" xlink:href="#block"/><use x="148" y="188" xlink:href="#block"/><use x="156" y="188" xlink:href="#block"/><use x="188" y="188" xlink:href="#block"/><use x="204" y="188" xlink:href="#block"/><use x="212" y="188" xlink:href="#block"/><use x="228" y="188" xlink:href="#block"/><use x="244" y="188" xlink:href="#block"/><use x="252" y="188" xlink:href="#block"/><use x="260" y="188" xlink:href="#block"/><use x="268" y="188" xlink:href="#block"/><use x="284" y="188" xlink:href="#block"/><use x="292" y="188" xlink:href="#block"/><use x="12" y="196" xlink:href="#block"/><use x="20" y="196" xlink:href="#block"/><use x="36" y="196" xlink:href="#block"/><use x="44" y="196" xlink:href="#block"/><use x="68" y="196" xlink:href="#block"/><use x="76" y="196" xlink:href="#block"/><use x="108" y="196" xlink:href="#block"/><use x="116" y="196" xlink:href="#block"/><use x="132" y="196" xlink:href="#block"/><use x="148" y="196" xlink:href="#block"/><use x="164" y="196" xlink:href="#block"/><use x="172" y="196" xlink:href="#block"/><use x="180" y="196" xlink:href="#block"/><use x="196" y="196" xlink:href="#block"/><use x="212" y="196" xlink:href="#block"/><use x="236" y="196" xlink:href="#block"/><use x="244" y="196" xlink:href="#block"/><use x="260" y="196" xlink:href="#block"/><use x="276" y="196" xlink:href="#block"/><use x="284" y="196" xlink:href="#block"/><use x="20" y="204" xlink:href="#block"/><use x="44" y="204" xlink:href="#block"/><use x="52" y="204" xlink:href="#block"/><use x="60" y="204" xlink:href="#block"/><use x="108" y="204" xlink:href="#block"/><use x="124" y="204" xlink:href="#block"/><use x="132" y="204" xlink:href="#block"/><use x="140" y="204" xlink:href="#block"/><use x="172" y="204" xlink:href="#block"/><use x="180" y="204" xlink:href="#block"/><use x="212" y="204" xlink:href="#block"/><use x="220" y="204" xlink:href="#block"/><use x="228" y="204" xlink:href="#block"/><use x="236" y="204" xlink:href="#block"/><use x="276" y="204" xlink:href="#block"/><use x="284" y="204" xlink:href="#block"/><use x="292" y="204" xlink:href="#block"/><use x="300" y="204" xlink:href="#block"/><use x="12" y="212" xlink:href="#block"/><use x="20" y="212" xlink:href="#block"/><use x="36" y="212" xlink:href="#block"/><use x="44" y="212" xlink:href="#block"/><use x="52" y="212" xlink:href="#block"/><use x="68" y="212" xlink:href="#block"/><use x="76" y="212" xlink:href="#block"/><use x="132" y="212" xlink:href="#block"/><use x="172" y="212" xlink:href="#block"/><use x="180" y="212" xlink:href="#block"/><use x="188" y="212" xlink:href="#block"/><use x="196" y="212" xlink:href="#block"/><use x="204" y="212" xlink:href="#block"/><use x="228" y="212" xlink:href="#block"/><use x="236" y="212" xlink:href="#block"/><use x="244" y="212" xlink:href="#block"/><use x="252" y="212" xlink:href="#block"/><use x="260" y="212" xlink:href="#block"/><use x="276" y="212" xlink:href="#block"/><use x="292" y="212" xlink:href="#block"/><use x="12" y="220" xlink:href="#block"/><use x="28" y="220" xlink:href="#block"/><use x="36" y="220" xlink:href="#block"/><use x="60" y="220" xlink:href="#block"/><use x="76" y="220" xlink:href="#block"/><use x="84" y="220" xlink:href="#block"/><use x="100" y="220" xlink:href="#block"/><use x="108" y="220" xlink:href="#block"/><use x="140" y="220" xlink:href="#block"/><use x="188" y="220" xlink:href="#block"/><use x="212" y="220" xlink:href="#block"/><use x="220" y="220" xlink:href="#block"/><use x="252" y="220" xlink:href="#block"/><use x="260" y="220" xlink:href="#block"/><use x="268" y="220" xlink:href="#block"/><use x="276" y="220" xlink:href="#block"/><use x="284" y="220" xlink:href="#block"/><use x="292" y="220" xlink:href="#block"/><use x="12" y="228" xlink:href="#block"/><use x="28" y="228" xlink:href="#block"/><use x="44" y="228" xlink:href="#block"/><use x="52" y="228" xlink:href="#block"/><use x="68" y="228" xlink:href="#block"/><use x="100" y="228" xlink:href="#block"/><use x="124" y="228" xlink:href="#block"/><use x="140" y="228" xlink:href="#block"/><use x="148" y="228" xlink:href="#block"/><use x="156" y="228" xlink:href="#block"/><use x="164" y="228" xlink:href="#block"/><use x="172" y="228" xlink:href="#block"/><use x="196" y="228" xlink:href="#block"/><use x="220" y="228" xlink:href="#block"/><use x="236" y="228" xlink:href="#block"/><use x="244" y="228" xlink:href="#block"/><use x="260" y="228" xlink:href="#block"/><use x="284" y="228" xlink:href="#block"/><use x="300" y="228" xlink:href="#block"/><use x="12" y="236" xlink:href="#block"/><use x="36" y="236" xlink:href="#block"/><use x="52" y="236" xlink:href="#block"/><use x="60" y="236" xlink:href="#block"/><use x="76" y="236" xlink:href="#block"/><use x="84" y="236" xlink:href="#block"/><use x="100" y="236" xlink:href="#block"/><use x="132" y="236" xlink:href="#block"/><use x="148" y="236" xlink:href="#block"/><use x="156" y="236" xlink:href="#block"/><use x="172" y="236" xlink:href="#block"/><use x="188" y="236" xlink:href="#block"/><use x="220" y="236" xlink:href="#block"/><use x="228" y="236" xlink:href="#block"/><use x="236" y="236" xlink:href="#block"/><use x="244" y="236" xlink:href="#block"/><use x="252" y="236" xlink:href="#block"/><use x="260" y="236" xlink:href="#block"/><use x="268" y="236" xlink:href="#block"/><use x="284" y="236" xlink:href="#block"/><use x="292" y="236" xlink:href="#block"/><use x="300" y="236" xlink:href="#block"/><use x="76" y="244" xlink:href="#block"/><use x="84" y="244" xlink:href="#block"/><use x="108" y="244" xlink:href="#block"/><use x="116" y="244" xlink:href="#block"/><use x="124" y="244" xlink:href="#block"/><use x="140" y="244" xlink:href="#block"/><use x="164" y="244" xlink:href="#block"/><use x="180" y="244" xlink:href="#block"/><use x="196" y="244" xlink:href="#block"/><use x="236" y="244" xlink:href="#block"/><use x="268" y="244" xlink:href="#block"/><use x="276" y="244" xlink:href="#block"/><use x="300" y="244" xlink:href="#block"/><use x="12" y="252" xlink:href="#block"/><use x="20" y="252" xlink:href="#block"/><use x="28" y="252" xlink:href="#block"/><use x="36" y="252" xlink:href="#block"/><use x="44" y="252" xlink:href="#block"/><use x="52" y="252" xlink:href="#block"/><use x="60" y="252" xlink:href="#block"/><use x="76" y="252" xlink:href="#block"/><use x="116" y="252" xlink:href="#block"/><use x="124" y="252" xlink:href="#block"/><use x="132" y="252" xlink:href="#block"/><use x="148" y="252" xlink:href="#block"/><use x="172" y="252" xlink:href="#block"/><use x="188" y="252" xlink:href="#block"/><use x="196" y="252" xlink:href="#block"/><use x="212" y="252" xlink:href="#block"/><use x="220" y="252" xlink:href="#block"/><use x="236" y="252" xlink:href="#block"/><use x="252" y="252" xlink:href="#block"/><use x="268" y="252" xlink:href="#block"/><use x="276" y="252" xlink:href="#block"/><use x="284" y="252" xlink:href="#block"/><use x="292" y="252" xlink:href="#block"/><use x="300" y="252" xlink:href="#block"/><use x="12" y="260" xlink:href="#block"/><use x="60" y="260" xlink:href="#block"/><use x="108" y="260" xlink:href="#block"/><use x="116" y="260" xlink:href="#block"/><use x="140" y="260" xlink:href="#block"/><use x="156" y="260" xlink:href="#block"/><use x="172" y="260" xlink:href="#block"/><use x="180" y="260" xlink:href="#block"/><use x="196" y="260" xlink:href="#block"/><use x="204" y="260" xlink:href="#block"/><use x="236" y="260" xlink:href="#block"/><use x="268" y="260" xlink:href="#block"/><use x="284" y="260" xlink:href="#block"/><use x="12" y="268" xlink:href="#block"/><use x="28" y="268" xlink:href="#block"/><use x="36" y="268" xlink:href="#block"/><use x="44" y="268" xlink:href="#block"/><use x="60" y="268" xlink:href="#block"/><use x="76" y="268" xlink:href="#block"/><use x="84" y="268" xlink:href="#block"/><use x="92" y="268" xlink:href="#block"/><use x="108" y="268" xlink:href="#block"/><use x="124" y="268" xlink:href="#block"/><use x="132" y="268" xlink:href="#block"/><use x="140" y="268" xlink:href="#block"/><use x="156" y="268" xlink:href="#block"/><use x="172" y="268" xlink:href="#block"/><use x="180" y="268" xlink:href="#block"/><use x="188" y="268" xlink:href="#block"/><use x="204" y="268" xlink:href="#block"/><use x="220" y="268" xlink:href="#block"/><use x="236" y="268" xlink:href="#block"/><use x="244" y="268" xlink:href="#block"/><use x="252" y="268" xlink:href="#block"/><use x="260" y="268" xlink:href="#block"/><use x="268" y="268" xlink:href="#block"/><use x="284" y="268" xlink:href="#block"/><use x="12" y="276" xlink:href="#block"/><use x="28" y="276" xlink:href="#block"/><use x="36" y="276" xlink:href="#block"/><use x="44" y="276" xlink:href="#block"/><use x="60" y="276" xlink:href="#block"/><use x="76" y="276" xlink:href="#block"/><use x="84" y="276" xlink:href="#block"/><use x="132" y="276" xlink:href="#block"/><use x="172" y="276" xlink:href="#block"/><use x="180" y="276" xlink:href="#block"/><use x="220" y="276" xlink:href="#block"/><use x="228" y="276" xlink:href="#block"/><use x="236" y="276" xlink:href="#block"/><use x="260" y="276" xlink:href="#block"/><use x="268" y="276" xlink:href="#block"/><use x="292" y="276" xlink:href="#block"/><use x="300" y="276" xlink:href="#block"/><use x="12" y="284" xlink:href="#block"/><use x="28" y="284" xlink:href="#block"/><use x="36" y="284" xlink:href="#block"/><use x="44" y="284" xlink:href="#block"/><use x="60" y="284" xlink:href="#block"/><use x="76" y="284" xlink:href="#block"/><use x="100" y="284" xlink:href="#block"/><use x="108" y="284" xlink:href="#block"/><use x="148" y="284" xlink:href="#block"/><use x="164" y="284" xlink:href="#block"/><use x="188" y="284" xlink:href="#block"/><use x="212" y="284" xlink:href="#block"/><use x="220" y="284" xlink:href="#block"/><use x="260" y="284" xlink:href="#block"/><use x="268" y="284" xlink:href="#block"/><use x="284" y="284" xlink:href="#block"/><use x="300" y="284" xlink:href="#block"/><use x="12" y="292" xlink:href="#block"/><use x="60" y="292" xlink:href="#block"/><use x="76" y="292" xlink:href="#block"/><use x="92" y="292" xlink:href="#block"/><use x="100" y="292" xlink:href="#block"/><use x="124" y="292" xlink:href="#block"/><use x="140" y="292" xlink:href="#block"/><use x="164" y="292" xlink:href="#block"/><use x="172" y="292" xlink:href="#block"/><use x="196" y="292" xlink:href="#block"/><use x="220" y="292" xlink:href="#block"/><use x="236" y="292" xlink:href="#block"/><use x="244" y="292" xlink:href="#block"/><use x="252" y="292" xlink:href="#block"/><use x="268" y="292" xlink:href="#block"/><use x="292" y="292" xlink:href="#block"/><use x="12" y="300" xlink:href="#block"/><use x="20" y="300" xlink:href="#block"/><use x="28" y="300" xlink:href="#block"/><use x="36" y="300" xlink:href="#block"/><use x="44" y="300" xlink:href="#block"/><use x="52" y="300" xlink:href="#block"/><use x="60" y="300" xlink:href="#block"/><use x="76" y="300" xlink:href="#block"/><use x="84" y="300" xlink:href="#block"/><use x="100" y="300" xlink:href="#block"/><use x="132" y="300" xlink:href="#block"/><use x="148" y="300" xlink:href="#block"/><use x="156" y="300" xlink:href="#block"/><use x="172" y="300" xlink:href="#block"/><use x="188" y="300" xlink:href="#block"/><use x="212" y="300" xlink:href="#block"/><use x="228" y="300" xlink:href="#block"/><use x="244" y="300" xlink:href="#block"/><use x="260" y="300" xlink:href="#block"/><use x="276" y="300" xlink:href="#block"/><use x="292" y="300" xlink:href="#block"/><use x="300" y="300" xlink:href="#block"/></svg>

oauth-authorization

The OAuth authorization flow for obtaining and refreshing access tokens

Authorization code grant

To request access on behalf of a user, redirect the user to Karify's authorization page, https://my.karify.com/oauth/v2/auth with some mandatory parameters. The page will prompt the user to authorize the app while providing basic information about what is being asked.

By default, applications can only view a user's public data. The scope parameter can be used to request more access. It is recommended to only requested the minimum amount of access necessary.

When a visitor is directed to this page, they are required to log in using their username and password when they aren't logged in yet. After login, they will be prompted with a question to give the requested access (based on the scope) to the app (this is based on the API client details).

When the visitor grants access within karify, they will be redirected to the URL that was provided in redirect_url, with the addition of the state and code parameters in the query string. For example:

YOUR_REDIRECT_URI/?state=YOUR_OPTIONAL_STATE&code=Yjk2MWU5YjVhODBiN2I0ZDRkYmQ1OGM0NGY4MmUyOGM2NDQ2MmY2ZDg2YjUxYjRiMzAwZTY2MDQxZmUzODg2YQ

This code can then be used to fetch an access token and a refresh token using the /oauth/v2/token endpoint, uniquely identifying the client that made the request and the account it was created for.

Note: for security reasons, the code expires rather quickly.

Authorizations:
oauth2cookie
query Parameters
client_id
required
string
Example: client_id=01_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12345657890

The CLIENT_ID for your API client.

response_type
required
string
Value: "code"

The type of response, only code is supported.

redirect_uri
required
string
Example: redirect_uri=https://example.com/my-application

URI to redirect the user to after logging in. The authorization code will be added to the query string of this URI when redirecting, for example https://example.com/my-application?code=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ12345657890

Note: for security reasons, the redirect_uri should be identical to the one provided on client creation. If not, an error is returned instead.

scope
required
string
Example: scope=LOGIN MANAGE_ACCOUNT MANAGE_MAIL MANAGE_MAIL_LABEL MANAGE_CONTACTS MANAGE_PROFILES MANAGE_VIDEO_CONVERSATIONS MANAGE_CONNECTIONS

Space separated list of requested scopes. See the documentation for the endpoint you want to use for the scope it needs. See RFC6749 for more information about scopes.

state
string

An unguessable random string. It is used to protect against cross-site request forgery attacks.

Responses

Obtain or refresh the access_token

This endpoint is used to obtain an access_token for OAuth authorization. Depending on the configuration of the API client, this can be done using an authorization code, a refresh token, or using client credentials.

When using the grant type authorization_code, you have to provide a code and a redirect_uri next to the three required fields grant_type, client_id, and client_secret. The code can be received using the authorization, flow by redirecting the user to /oauth/v2/auth. The redirect_uri has to be the same as the redirect_uri that was provided in that flow. Note that the obtained code expires quickly.

When you successfully get an access token using this grant type, you also get a refresh token. The access token is valid for one hour, after which you can use the refresh_token to obtain a new pair of access and refresh tokens. The refresh token is valid for half a year.

When using the grant type refresh_token, you have to provide the refresh_token as well as the three required fields to obtain a new access token. This also returns a new refresh token, invalidating the previous one. In other words: refresh tokens can only be used once.

Finally, when using the grant type client_credentials you only have to provide the grant_type, client_id and client_secret. This can only be used when your credentials have been configured to support it, and your login will then be tied to the organization that they are configured for. You will only receive an access_token, and will need to use the client_credentials grant type to obtain a new access token after it has expired.

In each of these flows you can also limit the scope of the access token by providing a scope, otherwise you will get the default scope for that flow. When based on an account (authorization_code or refresh_code), this is limited to the scopes that were initially requested from that user. When based on client credentials, this defaults to all scopes. Note that these scopes do not grant access if the underlying account or organization does not have access, it can only limit.

Authorizations:
oauth2cookie
Request Body schema: multipart/form-data
client_id
required
string
client_secret
required
string
grant_type
required
string
Enum: "refresh_token" "authorization_code" "client_credentials"
refresh_token
string
code
string
redirect_uri
string <url>
scope
string

A list of one or more scopes, separated by a space

Responses

Request samples

Content type
multipart/form-data
Example

Example of requesting a new token pair using an authorization code

{
  "client_id": "1_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMOPQRSTUVWXYZ1234567890",
  "client_secret": "YourClientSecret",
  "grant_type": "authorization_code",
  "code": "YTdmM2U5MDlhYTcxZjJkYTdkZGQ2N2Q3YzMwZjY2MDk0NTMzZWJjMDBlZTU5YWRiN2JhZjUzYjEzNTI4OGY5Yw",
  "redirect_uri": "https://example.com/my-application"
}

Response samples

Content type
application/json
Example
{
  • "access_token": "OTM3ZmYwN2QwNmQ0NWIxMTliMjk3NWQyNzg5ZWFkMzM5ZGRhZDBmOGJjMGQ5ZTc3YWNjNTAzYzNjZmY4NmYyMw",
  • "expires_in": 3600,
  • "refresh_token": "YTdmM2U5MDlhYTcxZjJkYTdkZGQ2N2Q3YzMwZjY2MDk0NTMzZWJjMDBlZTU5YWRiN2JhZjUzYjEzNTI4OGY5Yw",
  • "scope": null,
  • "token_type": "bearer"
}

oauth-sso

Single Sign-On via OAuth

Generate an SSO URL

Generate a temporary SSO url for the user. This url can only be used once and will expire rather quickly (1 minute), so be sure to pass it to the user directly after requesting.

A optional redirect_uri can be used to redirect the user to a given page within Karify.

The (successful) response will have a 303 See Other HTTP status code and will redirect to a Karify URL. When a backend system requests this page, make sure the redirect is not followed but passed to the end-user instead.

Scope

The scope LOGIN is needed for this endpoint.

Role

No specific role is needed for the authenticated user using this endpoint.

Authorizations:
oauth2
query Parameters
redirect_uri
string
Example: redirect_uri=https://my.karify.com/dossier

The URL within Karify to redirect to after login

Responses

Response samples

Content type
application/json

Invalid redirect URI (e.g. a redirect outside of Karify)

{
  • "error_code": "INVALID_REDIRECT_URI"
}

Use SSO url

Once the SSO url of the previous step was generated, it can be used to start a Karify session for the user.

This URL should be followed by the user's browser instead of a external application's backend system.

As explained, the token in this URL expires rather quickly and can only be used once.

Note: if the token has expired or is invalid, a redirect to the index page will be returned without being logged in.

Authorizations:
oauth2cookie
query Parameters
token
string
Example: token=1234567890abcdefg

The token to validate the SSO request

Responses

organizations

Organizations represent groups of healthspaces of the same owner on Karify. Therefore a organization can have one or more healthspaces.

Get user's organization

Get information about the authenticated user's organization. Scope The scope ORGANIZATION_READ is needed for this endpoint.

Role The authenticated user should have the role ROLE_ACCOUNT_SPACE_OWNER.

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
{
  • "account": {
    },
  • "address": {
    },
  • "billing_address": {
    },
  • "fiscal_number": "123456789",
  • "id": "74c506bc7589",
  • "name": "Karify demo organization"
}

Get occurrences of user's organization

beta

Authorizations:
oauth2
query Parameters
spaces[]
Array of strings[ items = 12 characters ]
Example: spaces[]=f33a6884f5b5&spaces[]=fd12e06fcf4c

filter occurrences by one or more Healthspaces

event_names[]
Array of strings
Items Value: "karify_dossier.external_record_item_details_viewed_in_space"

filter occurrences by one or more specific events

before
integer
Example: before=1745798400

Filter occurrences before a given timestamp

after
integer
Example: after=1745712000

Filter occurrences no earlier than a given timestamp

string or integer
Examples:
  • limit=50 - Example of a limit value as a string
  • limit=200 - Example of a limit value as an integer

Maximum number of occurrences to return (defaults to 100)

string or integer

Index of first occurrence to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example

An empty collection

{
  • "collection": [ ],
  • "limit": 100,
  • "offset": 0,
  • "total_count": 0
}

plan-recipe

Plan Recipe

Get a collection of all available Plan Recipes from a given Healthspaces where the role is Staff

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Plan Recipes to return (defaults to 10)

string or integer
Examples:
  • offset=10 - Example of an offset value as a string
  • offset=25 - Example of an offset value as an integer

Index of first Plan Recipe to be returned (defaults to 0)

search-term
string

Refine the returned results to those Plan Recipes which contain the given search term in their name or code

plannable_item_type[]
Array of strings
Items Enum: "package" "assignment_form" "widget" "externally_provided_plannable_item"
Examples:
  • plannable_item_type[]=package - Filter by plannable item type, where the plannable item type is 'package'
  • plannable_item_type[]=assignment_form - Filter by plannable item type, where the plannable item type is 'assignment_form'
  • plannable_item_type[]=widget - Filter by plannable item type, where the plannable item type is 'widget'
  • plannable_item_type[]=externally_provided_plannable_item - Filter by plannable item type, where the plannable item type is 'externally_provided_plannable_item'
  • plannable_item_type[]=package&plannable_item_type[]=widget - Filter by plannable item type, where the plannable item type is either 'package' or 'widget'

Filter the collection of plan recipes based on the given plannable item types

object
Examples:
  • order_by[name]=desc - Order by name in descending order
  • order_by[name]=asc - Order by name in ascending order
  • order_by[code]=desc - Order by code in descending order
  • order_by[code]=asc - Order by code in ascending order
  • order_by[created_at]=desc - Order by created_at in descending order
  • order_by[created_at]=asc - Order by created_at in ascending order
  • order_by[name]=desc&order_by[code]=asc - Order by name in descending order and code in ascending order
  • order_by[name]=desc&order_by[code]=asc - Order by code in descending order and name in ascending order

Sort the results of Plan Recipes based on name and/or code and/or created_at. The order in which the parameters are given, will also determine the order in which the filters will be applied.

plannable_item_reference_status[]
Array of strings
Items Enum: "published" "archived" "concept"
Examples:
  • plannable_item_reference_status[]=published - Filter by plannable item reference status, where the plannable item reference status is 'published'
  • plannable_item_reference_status[]=archived - Filter by plannable item reference status, where the plannable item reference status is 'archived'
  • plannable_item_reference_status[]=concept - Filter by plannable item reference status, where the plannable item reference status is 'concept'
  • plannable_item_reference_status[]=published&plannable_item_reference_status[]=concept - Filter by plannable item reference status, where the plannable item reference status is either 'published' or 'concept'

Filter the collection of plan recipes based on the given plannable item reference status or statuses

starred
boolean
Examples:
  • starred=true - Filter by plan recipes that are marked as starred.
  • starred=false - Filter by plan recipes that are not marked as starred.

Filter the collection of plan recipes based on the 'starred' status of the plan recipes. The 'starred' status indicates, when true, that a plan recipe has been marked as a 'favorite' by the user making the request.

recipe_type[]
Array of strings
Items Enum: "continuous_repeat_plan_recipe" "fixed_repeat_plan_recipe" "single_plan_recipe"
Examples:
  • recipe_type[]=continuous_repeat_plan_recipe - Filter by recipe type, where the type is 'continuous_repeat_plan_recipe'
  • recipe_type[]=fixed_repeat_plan_recipe - Filter by recipe type, where type type is 'fixed_repeat_plan_recipe'
  • recipe_type[]=single_plan_recipe - Filter by recipe type, where the type is 'single_plan_recipe'
  • recipe_type[]=single_plan_recipe&recipe_type[]=fixed_repeat_plan_recipe - Filter by recipe type, where the type is either 'single_plan_recipe' or 'fixed_repeat_plan_recipe'

Filter the collection of plan recipes based on the given recipe type or types

areas_of_care[]
Array of strings[ items [ 3 .. 63 ] characters ]
Examples:
  • areas_of_care[]=area-of-care-1 - Filter by area of care, where the area is 'area-of-care-1'
  • areas_of_care[]=area-of-care-1&areas_of_care[]=area-of-care-2 - Filter by multiple areas of care, where the areas are 'area-of-care-1' and 'area-of-care-2'

Filter the collection based on the given areas of care

forms_of_care[]
Array of strings[ items [ 3 .. 63 ] characters ]
Examples:
  • forms_of_care[]=form-of-care-1 - Filter by form of care, where the form is 'form-of-care-1'
  • forms_of_care[]=form-of-care-1&forms_of_care[]=form-of-care-2 - Filter by multiple forms of care, where the forms are 'form-of-care-1' and 'form-of-care-2'

Filter the collection based on the given forms of care

forms_of_therapy[]
Array of strings[ items [ 3 .. 63 ] characters ]
Examples:
  • forms_of_therapy[]=form-of-therapy-1 - Filter by form of therapy, where the form is 'form-of-therapy-1'
  • forms_of_therapy[]=form-of-therapy-1&forms_of_therapy[]=form-of-therapy-2 - Filter by multiple forms of therapy, where the forms are 'form-of-therapy-1' and 'form-of-therapy-2'

Filter the collection based on the given forms of therapy

languages[]
Array of strings[ items [ 3 .. 63 ] characters ]
Examples:
  • languages[]=language-1 - Filter by language, where the language is 'language-1'
  • languages[]=language-1&languages[]=language-2 - Filter by multiple languages, where the languages are 'language-1' and 'language-2'

Filter the collection based on the given language

intervention_types[]
Array of strings[ items [ 3 .. 63 ] characters ]
Examples:
  • intervention_types[]=intervention-type-1 - Filter by intervention type, where the type is 'intervention-type-1'
  • intervention_types[]=intervention-type-1&intervention_types[]=intervention-type-2 - Filter by multiple intervention types, where the types are 'intervention-type-1' and 'intervention-type-2'

Filter the collection of plan recipes based on the given intervention type or types

target_audiences[]
Array of strings[ items [ 3 .. 63 ] characters ]
Examples:
  • target_audiences[]=audience-1 - Filter by target audience, where the audience is 'audience-1'
  • target_audiences[]=audience-1&target_audiences[]=audience-2 - Filter by multiple target audiences, where the audiences are 'audience-1' and 'audience-2'

Filter the collection based on the given target audiences

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [ ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0
}

Returns the plan recipe with the provided id

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

planRecipe
required
string = 12 characters
Examples:
  • 8727a54b25c0 - Example of a plan recipe ID

Plan Recipe ID

header Parameters
Accept-Language
string
Examples:
  • en - Example of setting the language to English
  • nl - Example of setting the language to Dutch

Accept-Language header to change the expected language that is returned for some metadata categories. Note that this only works when the logged in user has not specified a preferred locale in the account settings.

Responses

Response samples

Content type
application/json
Example
{
  • "id": "someRandomId",
  • "created_at": "2013-02-09T07:00:00+01:00",
  • "name": "Non-repeating Assignment Form",
  • "plannable_item_type": "assignment_form",
  • "recipe_type": "single_plan_recipe",
  • "starred": false,
  • "planned_item_count": 1,
  • "user_guide": {},
  • "intervention_type": {
    },
  • "image": {},
  • "user_guide_description": "# **User guide description **\n\n*Lorem ipsum *\n\ndolor sit amet, consectetur adipiscing elit. Nulla a commodo nisl. Vivamus ac orci sed urna faucibus gravida et vel nulla. Duis venenatis commodo pellentesque. Curabitur finibus est in ipsum rhoncus tristique. Donec et urna et quam vulputate dapibus. Proin lobortis ante id diam sollicitudin, varius malesuada purus pharetra. Nunc augue neque, tristique vitae turpis et, pretium pellentesque sem. Nam sed arcu quis sem sollicitudin vestibulum.\n\n* Phasellus accumsan luctus iaculis.\n* Vestibulum aliquam nisi\n* egestas scelerisque venenatis.\n1. Curabitur fringilla iaculis erat. Aenean sed dolor tellus.\n2. Cras fermentum enim\n3. sed molestie laoreet. Sed vel volutpat metus, in faucibus lorem. Etiam vel arcu posuere, cursus diam eu, egestas quam. Nullam lobortis enim nec felis imperdiet auctor.\n",
  • "language_code": "eng",
  • "published_at": "2016-02-18T07:00:00+01:00",
  • "background_color": "e4f3f8",
  • "price_per_use": 3.98,
  • "collaboration": "# **Collaboration **\n\n*Lorem ipsum *\n\ndolor sit amet, consectetur adipiscing elit. Nulla a commo\n\n* Phasellus accumsan luctus iaculis.\n* Vestibulum aliquam nisi\n* egestas scelerisque venenatis.\n1. Curabitur fringilla iaculis erat. Aenean sed dolor tellus.\n2. Cras fermentum enim\n3. sed molestie laoreet. Sed vel volutpat metus, in fauci\n",
  • "description": "# **Description **\n\n*Lorem ipsum *\n\ndolor sit amet, consectetur adipiscing elit. Nulla a commodo nisl. Vivamus ac orci sed urna faucibus gravida et vel nulla. Duis venenatis commodo pellentesque. Curabitur finibus est in ipsum rhoncus tristique. Donec et urna et quam vulputate dapibus. Proin lobortis ante id diam sollicitudin, varius malesuada purus pharetra. Nunc augue neque, tristique vitae turpis et, pretium pellentesque sem. Nam sed arcu quis sem sollicitudin vestibulum.\n\n* Phasellus accumsan luctus iaculis.\n* Vestibulum aliquam nisi\n* egestas scelerisque venenatis.\n1. Curabitur fringilla iaculis erat. Aenean sed dolor tellus.\n2. Cras fermentum enim\n3. sed molestie laoreet. Sed vel volutpat metus, in faucibus lorem. Etiam vel arcu posuere, cursus diam eu, egestas quam. Nullam lobortis enim nec felis imperdiet auctor.\n",
  • "recent_changes": "# **Recent changes **\n\n*Lorem ipsum *\n\ndolor sit amet, consectetur adipiscing elit. Nulla a commodo nisl. Vivamus ac orci sed urna faucibus gravida et vel nulla. Duis venenatis commodo pellentesque. Curabitur finibus est in ipsum rhoncus tristique. Donec et urna et quam vulputate dapibus. Proin lobortis ante id diam sollicitudin, varius malesuada purus pharetra. Nunc augue neque, tristique vitae turpis et, pretium pellentesque sem. Nam sed arcu quis sem sollicitudin vestibulum.\n\n* Phasellus accumsan luctus iaculis.\n* Vestibulum aliquam nisi\n* egestas scelerisque venenatis.\n1. Curabitur fringilla iaculis erat. Aenean sed dolor tellus.\n2. Cras fermentum enim\n3. sed molestie laoreet. Sed vel volutpat metus, in faucibus lorem. Etiam vel arcu posuere, cursus diam eu, egestas quam. Nullam lobortis enim nec felis imperdiet auctor.\n",
  • "source_references": "# **Source references **\n\n*Lorem ipsum *\n\ndolor sit amet, consectetur adipiscing elit. Nulla a commodo nisl. Vivamus ac orci sed urna faucibus gravida et vel nulla. Duis venenatis commodo pellentesque. Curabitur finibus est in ipsum rhoncus tristique. Donec et urna et quam vulputate dapibus. Proin lobortis ante id diam sollicitudin, varius malesuada purus pharetra. Nunc augue neque, tristique vitae turpis et, pretium pellentesque sem. Nam sed arcu quis sem sollicitudin vestibulum.\n\n* Phasellus accumsan luctus iaculis.\n* Vestibulum aliquam nisi\n* egestas scelerisque venenatis.\n1. Curabitur fringilla iaculis erat. Aenean sed dolor tellus.\n2. Cras fermentum enim\n3. sed molestie laoreet. Sed vel volutpat metus, in faucibus lorem. Etiam vel arcu posuere, cursus diam eu, egestas quam. Nullam lobortis enim nec felis imperdiet auctor.\n",
  • "time_indication_minimum": 3,
  • "time_indication_maximum": 4,
  • "version_major": 2,
  • "version_minor": 1,
  • "areas_of_care": [
    ],
  • "highlights": [
    ],
  • "keywords": [
    ],
  • "authors": [
    ],
  • "publishers": [
    ],
  • "focus_areas": [
    ],
  • "target_audiences": [
    ],
  • "forms_of_care": [
    ],
  • "forms_of_therapy": [
    ],
  • "suggested_start_date": "2025-04-18T08:15:21+02:00",
  • "children": [
    ]
}

Plan a plan recipe for a number of given profiles

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

planRecipe
required
string = 12 characters

Plan recipe ID

Request Body schema: application/json

The request should contain the profiles that the plan recipe is to be planned for. Optionally it may include a custom start date.

required
Array of objects (profile-reference)
custom_start_date
string <date-time>

Responses

Request samples

Content type
application/json
Example
{
  • "profiles": [
    ],
  • "custom_start_date": "2017-03-27T08:12:09+00:00"
}

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

Set 'starred' on a plan recipe, indicating that it is marked as a favorite

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

planRecipe
required
string = 12 characters

Plan recipe ID

Request Body schema: application/json

The request should not contain a body

Schema not provided

Responses

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

Endpoint to remove 'starred' from a plan recipe, indicating that it is not marked as a favorite.

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

planRecipe
required
string = 12 characters

Plan recipe ID

Responses

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

Stage a plan recipe for a profile, so that it can be planned in.

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

profile
required
string = 12 characters

Profile ID

Request Body schema: application/json
required

The request should contain a plan recipe ID

required
object

The plan recipe to be staged for the profile

Responses

Request samples

Content type
application/json
{
  • "plan_recipe": {
    }
}

Response samples

Content type
application/json
Example
{
  • "id": "someRandomMongoDBId12345",
  • "created_at": "2013-02-09T07:00:00+01:00",
  • "plan_recipe": {
    },
  • "custom_start_date": "2013-02-09T07:00:00+01:00"
}

plan-recipe-image

Plan Recipe Image

Returns the plan recipe image with the provided id

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

planRecipe
required
string = 12 characters
Examples:
  • 8727a54b25c0 - Example of a plan recipe ID

Plan Recipe ID

upload
required
string = 24 characters
Examples:
  • 65390948afa91779d4185665 - Example of an upload ID

Upload ID

Responses

Response samples

Content type
image/svg+xml
data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgNjI1IDYyNSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtNDI2LjU0IDIwNi4wOS00Mi45NSAxNy42M3MtMTEuNzQtMy41My0xMC44IDYuMzZjLjM0IDMuNjIgMy43OCA3Ljc3IDcuMTggNi41IDguODctMy4zMiAzNy44My0xMS4yOCA0NS45MS0xMy45MyIgZmlsbD0iIzUyNDk1ZSIvPjxwYXRoIGQ9Im00MTQuNzEgNDczLjM3Yy0yLjA0IDAtMjcuODQtLjYtMzguOS0yLjI4LTE1LjU2LTIuMzctMzAuMTQtNi45LTQzLjM1LTEzLjQ3bC00LjQxLTIuMTktNDMuMDQuMzFjLTEuMi00LjU1LTUuOTctMjMuMzktOS4wOS00NS4xNC0yLjA0LTE0LjIyLTIuODktMjYuNTgtMi41My0zNi43NS40NS0xMi4zMyAyLjgyLTIxLjY3IDYuODYtMjYuOTkgMS40NS0xLjkxIDMuMTYtMy4zOCA1LjA3LTQuMzcgMi4wMS0xLjAzIDQuMzEtMS41NyA2Ljg1LTEuNTkgMTEuMTctLjA4IDIyLjI3LTYuMjYgMzQuOTMtMTkuNDMgMzcuMjQtMzguNzUgNDQuMy02MS4yIDQ2LjI5LTc2LjQ0LjUzLTQuMTEuMzctOC44NS4wNi0xNS42MnYtLjA5Yy0uMzktOC4zMS0uNzktMTYuOSAxLjAyLTI0LjA5Ljk0LTMuNzQgMi40NS02LjggNC40OS05LjA5IDIuMzUtMi42NCA1LjI5LTQuMzEgOS4yNS01LjI0LjUyLS4xMiAxLjExLS4xOSAxLjcxLS4xOSAzLjE2LS4wMiA3LjA2IDEuNjUgMTEuMjYgNC44MyAzLjMxIDIuNTEgNi43IDUuOTMgOC44NCA4LjkyIDUuMDcgNy4xIDcuOTcgMTYuNzcgOC44NyAyOS41Ni43NyAxMC44Mi0uMDcgMjIuMi0uOTkgMzEuOS0uMTEgMS4xOS0uOTUgOC4zMy0yLjA1IDE2LjE2bC0zLjM0IDIzLjY3IDc4Ljc0LS41OGM1LjExLS4wNCA4LjUgMy44OCAxMC40NCA3LjE2IDIuNjcgNC41MiA0LjIyIDEwLjcyIDQuMjYgMTcuMDIuMDMgMy44LS42NCA3LjU3LTEuOTMgMTAuODktLjIyLjUxLTEuNjggMy43Ni0yLjk5IDYuNjVsLS44MiAxLjggMi4zOSA3LjU2Yy42OCAyLjEzIDEuNTggNS4zNiAxLjYgOC43LjA0IDUuMDMtMS4xNSA5LjkxLTMuNDQgMTQuMWwtNC40NSA4LjE2IDMuMTcgOC43NGMxLjEyIDMuMDcgMS43IDYuMzYgMS43MiA5Ljc3LjA1IDcuMTktMi4zNiAxMy45NC02Ljc4IDE4Ljk5LTEuOCAyLjA1LTMuODkgMy43Mi02LjQgNS4xbC0xMC40MiA1LjctLjI5IDExLjg3Yy0uMTggNy4xOC0yLjggMTMuODMtNy4zOSAxOC43MS00LjE4IDQuNDQtOS41OCA2LjkxLTE1LjIyIDYuOTVsLTQwLjAyLjI5eiIgZmlsbD0iI2Q4OTc3MyIvPjxwYXRoIGQ9Im0yMjkuODMgMzMxLjc2aDY2LjUydjE0Ni4zMWgtNjYuNTJ6IiBmaWxsPSIjZmZmIiB0cmFuc2Zvcm09Im1hdHJpeCguOTk5OTc0NCAtLjAwNzE1NTc5IC4wMDcxNTU3OSAuOTk5OTc0NCAtMi44OCAxLjg5KSIvPjxwYXRoIGQ9Im0yMzAuMDkgNDA0LjkxaDY2LjUydjczLjE2aC02Ni41MnoiIGZpbGw9IiNmZmYiIHRyYW5zZm9ybT0ibWF0cml4KC45OTk5NzQ0IC0uMDA3MTU1NzkgLjAwNzE1NTc5IC45OTk5NzQ0IC0zLjE0IDEuODkpIi8+PHBhdGggZD0ibS4wMSAzMjcuNmgyNTQuMDF2MTU2LjU2aC0yNTQuMDF6IiBmaWxsPSIjMDA5ZWUyIiB0cmFuc2Zvcm09Im1hdHJpeCguOTk5OTc0NCAtLjAwNzE1NTc5IC4wMDcxNTU3OSAuOTk5OTc0NCAtMi44OSAuOTIpIi8+PHBhdGggZD0ibTU4MS43NCA1NzcuMTFoLTYwLjE3YzAtMTYuNjIgMTMuNDctMzAuMDggMzAuMDgtMzAuMDhzMzAuMDggMTMuNDcgMzAuMDggMzAuMDh6IiBmaWxsPSIjZmRmZWZmIi8+PHBhdGggZD0ibTYwOC4yNyA1NzcuMTFoLTM2Ljg1YzAtMTAuMTggOC4yNS0xOC40MiAxOC40My0xOC40MnMxOC40MyA4LjI1IDE4LjQzIDE4LjQyeiIgZmlsbD0iI2ZkZmVmZiIvPjxwYXRoIGQ9Im01MzguMzIgNTc3LjExaC0zMi4zNGMwLTguOTMgNy4yNC0xNi4xNyAxNi4xNy0xNi4xN3MxNi4xNyA3LjI0IDE2LjE3IDE2LjE3eiIgZmlsbD0iI2ZkZmVmZiIvPjxwYXRoIGQ9Im00NjUuNSAzMDEuMS0yOC40My0yNC44NC01Ni44MyAxNi43MS0zNC4xNSA0Mi40MyA5LjMzIDkuMjEgMzQuMzQtMzQuNTcgNTAuMTQtOC42NHoiIGZpbGw9IiMwMDllZTIiLz48cGF0aCBkPSJtNDY5LjY2IDI5Mi40Ni0yNS45NC05LjgzLTQ3LjQ5IDM1LjQtMTcuMjkgNTEuNjUgMTEuOTQgNS40IDIwLjIxLTQ0LjM1IDUwLjcyLTIzLjE5eiIgZmlsbD0iIzAwOWVlMiIvPjxwYXRoIGQ9Im0yMTEuNDYgMTQ0LjEyaC0xMTIuODZjMC0zMS4xNiAyNS4yNi01Ni40MyA1Ni40Mi01Ni40M3M1Ni40MyAyNS4yNiA1Ni40MyA1Ni40M3oiIGZpbGw9IiNmZGZlZmYiLz48cGF0aCBkPSJtMjU1LjY3IDE0NC4xMmgtNjMuNTdjMC0xOS4xIDE1LjQ3LTM0LjU3IDM0LjU2LTM0LjU3czI5LjAxIDE1LjQ3IDI5LjAxIDM0LjU3eiIgZmlsbD0iI2ZkZmVmZiIvPjxwYXRoIGQ9Im0xMzAuMDQgMTQ0LjEyaC02MC42N2MwLTE2Ljc1IDEzLjU4LTMwLjMzIDMwLjMzLTMwLjMzczMwLjMzIDEzLjU4IDMwLjMzIDMwLjMzeiIgZmlsbD0iI2ZkZmVmZiIvPjxwYXRoIGQ9Im0zODkuMjUgMzkyLjY0IDEuODctNS4wNS0zMi41LTEyLjA0LTEuODcgNS4wNCIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Im0zNzkuMjYgMzY5LjczIDEuNzItNC42NWMzLjI5IDEuNDMgMy4zOSA0LjAzIDIuNjQgNi4wNmw3LjUxIDIuNjktLjQzIDEzLjYxLTMyLjA5LTExLjkuOTMtMi41IDE5LjcxLTMuMzJ6IiBmaWxsPSIjMzczNzM3Ii8+PHBhdGggZD0ibTM1MS4yOCAzNTkuNTcgMi45NS00LjUtMjguOTgtMTkuMDItMi45NSA0LjUiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtMzQ2LjY3IDMzNS4wMSAyLjcyLTQuMTVjMi44OSAyLjEzIDIuNDEgNC42OSAxLjIyIDYuNWw2LjcyIDQuMzEtMy40NiAxMy4xNy0yOC42MS0xOC43OCAxLjQ2LTIuMjMgMTkuOTYgMS4xOHoiIGZpbGw9IiMzNzM3MzciLz48cGF0aCBkPSJtMzcyLjc5IDIyNS4zOWMuMDUtMy4wOCAxMC4zMi02LjcgMTAuMzItNi43bDIuMzMgMy45OC0zLjMgNi44OXMtNy44MyA0LjY2LTkuMDYuODhjLS4xNS0uNDctLjMyLTMuOTItLjMtNS4wNXoiIGZpbGw9IiNmN2NmYjUiLz48cGF0aCBkPSJtMzc4LjA0IDIyOS43N3M2LjIgMS4wNCA3LjU3IDEuNjcgMy4wNC0uNyAxLjU2LTEuNzNjLTEuNDgtMS4wMi00LjM3LTEuNTctNC4zNy0xLjU3bDExLjQ5LTEuNjJzMS42Ni0uMDUgMS43MS0xLjExLTIuMzQtLjczLTIuMzQtLjczbC03LjU5LjY4IDguMDctMi4zMnMxLjY1LS41NyAxLjQ1LTEuNTRjLS4xOS0uOTctMi4yOC0uMzMtMi4yOC0uMzNsLTguMTUgMS42OSA3Ljc5LTIuOTJzMS45NS0uNzMgMS42MS0xLjc5LTMuMDYuMDctMy4wNi4wN2wtNy42MiAyLjMyIDMuNzQtMi42MXMuNjQtLjQ5LjA2LS45NGMtLjU3LS40NS0xLjQ2LjA4LTEuNDYuMDhzLTkuMTggNC41MS0xMS4wNCA1Ljg3IiBmaWxsPSIjZjdjZmI1Ii8+PHBhdGggZD0ibTQ4MS4xMSAzMDkuNzZjLjY3IDMtMy43NCAxMS43My0zLjc0IDExLjczbC00LjMzLTEuNi0xLjgxLTcuNDNzMi42OS01LjExIDYuNDUtNi40MmMxLjI2LS40NCAzLjE2IDIuNDggMy40MyAzLjcyeiIgZmlsbD0iI2Y3Y2ZiNSIvPjxwYXRoIGQ9Im00NzQuMjYgMzA5LjdzLTUuNDUgMy4xMy02LjkxIDMuNTEtMS45IDIuNDctLjExIDIuMzJjMS44LS4xNSA0LjM3LTEuNTYgNC4zNy0xLjU2bC03Ljg2IDguNTNzLTEuMjUgMS4wOS0uNjIgMS45NCAyLjI3LS45MiAyLjI3LS45Mmw1LjQ0LTUuMzMtNC43NyA2Ljkxcy0uOTEgMS40OS0uMTUgMi4xMSAxLjk4LTEuMTkgMS45OC0xLjE5bDUuMjQtNi40Ny00LjE3IDcuMnMtMS4wNCAxLjgtLjExIDIuNDEgMi4zMy0xLjk5IDIuMzMtMS45OWw0LjQyLTYuNjItMS4yNCA0LjM5cy0uMTguNzkuNTUuNzcgMS4wOC0uOTkgMS4wOC0uOTkgNC4yNC05LjMxIDQuODItMTEuNTQiIGZpbGw9IiNmN2NmYjUiLz48cGF0aCBkPSJtNDI1Ljg4IDIyMi42NWMyLjg4IDEyLjk4IDEuODggMzAuOTkgMyA0NC43OS40IDQuOTgtMTMuOTMgMTQuMzUtMTMuOTMgMTQuMzVsNTMuMjEgMjQuNzFzNi42LTI0LjI5IDcuNzctMzIuNThjMS4zMi05LjM4IDMuMTQtMjEuNzEgMy41Ny0zNy40N2w0LjExIDMxLjAxLTEwLjMzIDM5LjY2IDEwLjUgNC43NnMxMC40Ny0yNC43IDE1LjA4LTQ0LjE3YzIuNjgtMTEuMzQtMi4zOS0yNS4zMS0yLjc0LTI4Ljk2LTIuMTgtMjMuMzMtMTAuNy0yNS45OC0xNS4wNy0yOS4yNmwtMTQuNTUtMy41OC01LjE0LTEuMjItMi45MS0zLjYyLTkuNDEgMy40NC05LjM3LTMuNDctMy4zMiAzLjY0LTQuMzkuOTgtNS40NC40MiIgZmlsbD0iIzUyNDk1ZSIvPjxwYXRoIGQ9Im0zNzMuMzIgMjMzLjk1LS4yNi0xMS41NiAxLjA4LS4wNS41OCAxMS41MXoiIGZpbGw9IiM1MjQ5NWUiLz48ZWxsaXBzZSBjeD0iMzczLjIiIGN5PSIyMjguMTgiIGZpbGw9IiM1MjQ5NWUiIHJ4PSIuNjUiIHJ5PSI1Ljc3IiB0cmFuc2Zvcm09Im1hdHJpeCguOTk5Nzg0MzIgLS4wMjA3Njc5MiAuMDIwNzY3OTIgLjk5OTc4NDMyIC00LjY3IDcuODIpIi8+PHBhdGggZD0ibTQ0MC42OSAxOTQuMjNoMTYuODR2MTAuNjJsLTguNCA1LjYtOC40NC01LjZ6IiBmaWxsPSIjZjdjZmI1Ii8+PHBhdGggZD0ibTQ3MS42OCAxNzQuNDZjLTEuNiAxNS44OC0xMy44OSAyNC4zNS0yNS40NCAyMy4xOC0xNi40NS0xLjY3LTIyLjM5LTE4Ljk1LTIyLjE3LTM0LjkuMjEtMTUuOTYtNC0yNy41IDIxLjItMjcuNCAyNy43Ny4xMiAyOS4zNCAxMC4xMiAyNi40MiAzOS4xMnoiIGZpbGw9IiNmN2NmYjUiLz48cGF0aCBkPSJtNDY2LjA0IDE2Ni42OWMuMzEgNC4xNyAxLjc2IDYuODEgNC44OCA2LjU5czguMDItNC4xNyA3LjcxLTguMzQtMy4wOS03LjM3LTYuMjItNy4xNWMtMy4xMi4yMi02LjY4IDQuNzQtNi4zNyA4LjkxeiIgZmlsbD0iI2Y3Y2ZiNSIvPjxwYXRoIGQ9Im00NzQuNDcgMTYyLjY3YzEuMjUtNS4yOSAyLjcxLTEzLjE0IDIuNjctMTguNzUtLjEtMTIuOTEtOS43Ni0xNS45MS0xNS42Ni0xNy41MiAxLjAzIDAgLjM1LS42NCAxLjM3LS42MS0zLjkxLTMuNTEtMTQuODQtMS41My0xOS4xOSAxLjAxLTMuOTUtLjg3LTExLjk3LTEuNDMtMTYuNDMgMi4yLTkuNDEgNy42NC04LjIyIDE4LjQ4LTQuOTcgMzYuMzYuODYuMzUuNjYuMjYgMS42MS4yMi42MS03LjgtMS43LTE5LjEyIDUuOTItMjIuODcgMy42OC0xLjgxIDguMTMtLjEgMTEuOTEuMzggMi45LjM3IDE0LjI2LjMzIDIwLjEtLjQzIDMuMjUtLjUgNS42NS4xMiA2LjM2Ljk3IDMuNiA0LjI5IDMuNDUgMTQuMDggMy4yNyAxOS44OC43NC42NCAxLjYtLjI3IDMuMDUtLjg1eiIgZmlsbD0iI2MyNWMyYiIvPjxwYXRoIGQ9Im00NTUuOSAxNzguMThjLjg3IDIuOS0uODMgNy40MS00LjYxIDguNjEtMy43OCAxLjIxLTcuNzUtLjU3LTkuMi00LjMzLS4wMy0uMDggMi43My42OSA3LjMtLjgyIDYuMDgtMi4wMSA2LjMxLTQuMTQgNi41MS0zLjQ2eiIgZmlsbD0iI2Q5OGY5NyIgZmlsbC1ydWxlPSJldmVub2RkIi8+PHBhdGggZD0ibTQ0Mi4wOSAxODIuNDdjLjgyLS4wNyA0LjI0LS41NCA3LjI2LTEuNTQgMy4yMi0xLjA2IDUuNzgtMi40NCA2LjQ2LTIuODgtLjEyLjkxLTMuNjcgMy43LTUuNzcgNC40OC0yLjQ1LjkxLTYuOTcgMS4yNi03Ljk1LS4wN3oiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjxnIGZpbGw9IiM5YjRjMTYiPjxwYXRoIGQ9Im00NTguMDYgMTY5LjcxYzAgLjE4LS4xNC4zMi0uMzMuMzItLjE4IDAtLjMzLS4xNC0uMzMtLjMycy4xNS0uMzIuMzMtLjMyLjMzLjE0LjMzLjMyeiIvPjxwYXRoIGQ9Im00NjAuMDQgMTcxLjMzYzAgLjI0LS4yLjQ0LS40NS40NHMtLjQ1LS4xOS0uNDUtLjQzLjItLjQ0LjQ1LS40NC40NS4xOS40NS40M3oiLz48cGF0aCBkPSJtNDYwLjgxIDE2OS4yMmMwIC4yMS0uMTcuMzgtLjM5LjM4LS4yMSAwLS4zOS0uMTctLjM5LS4zOHMuMTctLjM4LjM5LS4zOGMuMjEgMCAuMzkuMTcuMzkuMzh6Ii8+PHBhdGggZD0ibTQ2Mi45NiAxNzAuNDZjMCAuMjUtLjIuNDUtLjQ2LjQ1LS4yNSAwLS40Ni0uMi0uNDYtLjQ1cy4yLS40NS40Ni0uNDVjLjI1IDAgLjQ2LjIuNDYuNDV6Ii8+PHBhdGggZD0ibTQ2NS4yMyAxNzEuMjNjMCAuMi0uMTYuMzYtLjM2LjM2cy0uMzYtLjE2LS4zNy0uMzVjMC0uMi4xNi0uMzYuMzYtLjM2cy4zNi4xNi4zNi4zNXoiLz48cGF0aCBkPSJtNDM1LjExIDE2OS41YzAgLjE4LjEzLjMyLjMxLjMzLjE4IDAgLjMzLS4xMy4zNC0uMzEgMC0uMTgtLjEzLS4zMy0uMzEtLjMzcy0uMzMuMTMtLjM0LjMxeiIvPjxwYXRoIGQ9Im00MzMuMDcgMTcxLjA1YzAgLjI0LjE4LjQ0LjQzLjQ1LjI1IDAgLjQ1LS4xOC40Ni0uNDIgMC0uMjQtLjE4LS40NC0uNDMtLjQ1LS4yNSAwLS40NS4xOC0uNDYuNDJ6Ii8+PHBhdGggZD0ibTQzMi4zOCAxNjguOTJjMCAuMjEuMTYuMzkuMzcuMzlzLjM5LS4xNS40LS4zNmMwLS4yMS0uMTYtLjM5LS4zNy0uMzlzLS4zOS4xNS0uNC4zNnoiLz48cGF0aCBkPSJtNDMwLjE4IDE3MC4wOGMwIC4yNS4xOS40Ni40NC40Ny4yNSAwIC40Ny0uMTguNDgtLjQzIDAtLjI1LS4xOS0uNDYtLjQ0LS40N3MtLjQ3LjE4LS40OC40M3oiLz48cGF0aCBkPSJtNDI3Ljg5IDE3MC43NmMwIC4yLjE1LjM2LjM1LjM3LjIgMCAuMzctLjE0LjM4LS4zNCAwLS4yLS4xNS0uMzYtLjM1LS4zNy0uMiAwLS4zNy4xNC0uMzguMzR6Ii8+PC9nPjxwYXRoIGQ9Im0xODcuMDEgMTgxLjRjLTEuNTYtNS45Mi0xOS40LTQuODQtMjQuOTQgMS44NyAxLjYtOC41Ny02LjgyLTIzLjE1LTEyLjMzLTIxLjMzLTYuNTMgMi4xNi0xOC41NCAyMy4zMy0xMC4wOCAyNi44czE3LjY2IDEuMTggMjAuNC0xLjQ2Yy4xNi0uMTUuMy0uMzMuNDQtLjUtLjQ1IDMuOTUgMi42OSAxMi42OSA5Ljk2IDE3Ljg3IDcuNDcgNS4zMiAxOC4zMy0xNi41IDE2LjU1LTIzLjI2eiIgZmlsbD0iI2YwOGYyMSIvPjxwYXRoIGQ9Im0xODIuNDkgMTY5LjY5cy0uODktNC43My0xLjE1LTQuNjFjLjA5IDAtNy4xNCAyLjU3LTEyLjkgNS45MS0uMzMtNi40NC0zLjI5LTEzLjY2LTMuMjUtMTMuNTgtLjA2LS4yOS00LjQxIDEuNzctNC40MSAxLjc3IDIuMTkgMi41OSA1LjUzIDExLjAzIDUuOTcgMTUuMTEgMy44Ny0xLjg3IDExLjI1LTQuNDIgMTUuNzQtNC42eiIgZmlsbD0iI2MwYTA1NSIvPjxwYXRoIGQ9Im0xNTEuMzkgMTc1Ljg2Yy00LjU5LjkxLTUuNzYtNy4xMy0uNzUtNi44MiA1LjAxLjMgNS4zNyA1LjkuNzUgNi44MnoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtMTc3LjI2IDE4Mi4zM2M0LjU1LTEuMDkgNS41NiA2LjgyIDEuMDEgNi43OS01LjAyLS4wNC01LjYtNS42OS0xLjAxLTYuNzl6IiBmaWxsPSIjZmZmIi8+PGVsbGlwc2UgY3g9IjE2MC42MiIgY3k9IjE4NC45MSIgZmlsbD0iI2MwYTA1NSIgcng9IjE0LjQ2IiByeT0iMi44IiB0cmFuc2Zvcm09Im1hdHJpeCguNSAtLjg2NjAyNTQgLjg2NjAyNTQgLjUgLTc5LjgzIDIzMS41NikiLz48cGF0aCBkPSJtMTk2Ljg1IDIyMi42NmMxLjc5LTUuODUgMTkuNTgtNC4wNiAyNC44MyAyLjg3LTEuMjUtOC42MyA3Ljc0LTIyLjg2IDEzLjE3LTIwLjgyIDYuNDQgMi40MiAxNy42IDI0LjA1IDkgMjcuMThzLTE3LjcuNDctMjAuMzItMi4yN2MtLjE1LS4xNi0uMjktLjM0LS40Mi0uNTEuMjkgMy45Ni0zLjIgMTIuNTctMTAuNjUgMTcuNDUtNy42OCA1LjAyLTE3LjY2LTE3LjIyLTE1LjYxLTIzLjl6IiBmaWxsPSIjZTg2OTY3Ii8+PHBhdGggZD0ibTIwMS44NCAyMTEuMTVzMS4wOC00LjY5IDEuMzQtNC41NmMtLjA5LS4wMSA3LjAzIDIuODYgMTIuNjUgNi40Mi41OC02LjQyIDMuODMtMTMuNTIgMy43OC0xMy40NC4wNy0uMjggNC4zMyAxLjk1IDQuMzMgMS45NS0yLjMgMi41LTUuOTYgMTAuOC02LjU2IDE0Ljg1LTMuNzgtMi4wMi0xMS4wNS00Ljg3LTE1LjUzLTUuMjN6IiBmaWxsPSIjYzBhMDU1Ii8+PHBhdGggZD0ibTIwNy4zNSAyMzAuODNjLTQuNzkuNTktNy4wNS01Ljk5LTEuMzEtNi45MyA1Ljc0LS45NSA2LjExIDYuMzQgMS4zMSA2LjkzeiIgZmlsbD0iI2RjZGNkYyIvPjxwYXRoIGQ9Im0yMzUuMjEgMjE3LjY5Yy00LjUzIDIuODItNy4yNC01LjQtMi43My02LjUgNC44NS0xLjE4IDYuMzYgNC4yMyAyLjczIDYuNXoiIGZpbGw9IiNkY2RjZGMiLz48ZWxsaXBzZSBjeD0iMjIxLjg3IiBjeT0iMjI2LjIiIGZpbGw9IiNjMGEwNTUiIHJ4PSIyLjgiIHJ5PSIxNC40NiIgdHJhbnNmb3JtPSJtYXRyaXgoLjkxNjE1Mjk4IC0uNDAwODI4NzggLjQwMDgyODc4IC45MTYxNTI5OCAtNzIuMDcgMTA3LjkyKSIvPjwvc3ZnPg==

plan-recipe-user-guide

Plan Recipe User Guide

Returns the plan recipe user guide with the provided id

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

planRecipe
required
string = 12 characters
Examples:
  • 8727a54b25c0 - Example of a plan recipe ID

Plan Recipe ID

upload
required
string = 24 characters
Examples:
  • 779d41850948afa916656539 - Example of an upload ID

Upload ID

Responses

Response samples

Content type
application/pdf
data:application/pdf;base64,JVBERi0xLjEKJcKlwrHDqwoKMSAwIG9iagogIDw8IC9UeXBlIC9DYXRhbG9nCiAgICAgL1BhZ2VzIDIgMCBSCiAgPj4KZW5kb2JqCgoyIDAgb2JqCiAgPDwgL1R5cGUgL1BhZ2VzCiAgICAgL0tpZHMgWzMgMCBSXQogICAgIC9Db3VudCAxCiAgICAgL01lZGlhQm94IFswIDAgMzAwIDE0NF0KICA+PgplbmRvYmoKCjMgMCBvYmoKICA8PCAgL1R5cGUgL1BhZ2UKICAgICAgL1BhcmVudCAyIDAgUgogICAgICAvUmVzb3VyY2VzCiAgICAgICA8PCAvRm9udAogICAgICAgICAgIDw8IC9GMQogICAgICAgICAgICAgICA8PCAvVHlwZSAvRm9udAogICAgICAgICAgICAgICAgICAvU3VidHlwZSAvVHlwZTEKICAgICAgICAgICAgICAgICAgL0Jhc2VGb250IC9UaW1lcy1Sb21hbgogICAgICAgICAgICAgICA+PgogICAgICAgICAgID4+CiAgICAgICA+PgogICAgICAvQ29udGVudHMgNCAwIFIKICA+PgplbmRvYmoKCjQgMCBvYmoKICA8PCAvTGVuZ3RoIDU1ID4+CnN0cmVhbQogIEJUCiAgICAvRjEgMTggVGYKICAgIDAgMCBUZAogICAgKEhlbGxvIFdvcmxkKSBUagogIEVUCmVuZHN0cmVhbQplbmRvYmoKCnhyZWYKMCA1CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxOCAwMDAwMCBuIAowMDAwMDAwMDc3IDAwMDAwIG4gCjAwMDAwMDAxNzggMDAwMDAgbiAKMDAwMDAwMDQ1NyAwMDAwMCBuIAp0cmFpbGVyCiAgPDwgIC9Sb290IDEgMCBSCiAgICAgIC9TaXplIDUKICA+PgpzdGFydHhyZWYKNTY1CiUlRU9GCg==

planned-items

Planned Items

Archive a planned item

beta

Authorizations:
oauth2
path Parameters
plannedItem
required
string = 12 characters
Examples:
  • 0636e3e66b2f - Example of a planned item ID

Planned item ID

Responses

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

Unarchive a planned item

beta

Authorizations:
oauth2
path Parameters
plannedItem
required
string = 12 characters
Examples:
  • 0636e3e66b2f - Example of a planned item ID

Planned item ID

Responses

Response samples

Content type
application/json
Example
{
  • "error": "invalid_grant",
  • "error_description": "The access token provided is invalid."
}

plugin

Plugin

Returns metadata for the minddistrict plugin in the given space.

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

Responses

Response samples

Content type
application/json
Example
{
  • "title": "eHealth via Minddistrict",
  • "description": "You can use Minddistrict to perform eHealth assignments.",
  • "menu_title": "eHealth",
  • "button_label": "Go to eHealth"
}

Returns the SSO URL to login in minddistrict for the current user for the given space.

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

Responses

Returns the RoQua ROM questionnaires for the current user in the RoQua environment associated with the given space.

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters

Space ID

query Parameters
status
string
Enum: "open" "completed" "scheduled" "aborted"

Filter questionnaires by status

string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of questionnaires to return (defaults to 10)

string or integer
Examples:
  • offset=10 - Example of an offset value as a string
  • offset=25 - Example of an offset value as an integer

Index of first questionnaire to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
Example
{
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0,
  • "collection": [ ]
}

profiles

A profile connects an Karify account to a Healthspace. Profiles therefore can be seen as a Healthspace's membership. Each profile endpoint needs its own scope and role permissions. An application can use the scope MANAGE_SPACE_PROFILES and MANAGE_ORGANIZATION_PROFILES to use all (..._READ, ..._UPDATEand ..._UNSUBSCRIBE) scopes in one scope.

Get profiles of user's organization

Get all profiles or filter within profiles of the authenticated user's organization based on some optional parameters.

Scope The scope ORGANIZATION_PROFILE_READ is needed for this endpoint.

Role The authenticated user should have the role ROLE_ACCOUNT_SPACE_OWNER.

Parameters The following optional parameters can be given to filter the results on.

Authorizations:
oauth2
query Parameters
birthday
string <date>
Example: birthday=1970-03-27

Filters the result by birthday

identificationNumber
string
Example: identificationNumber=client1234

Filters the result by identificationNumber

Responses

Response samples

Content type
application/json
{
  • "collection": [
    ],
  • "limit": 10,
  • "offset": 0,
  • "total_count": 2
}

Get a collection of profiles of a space

Get all profiles or filter within profiles of the specified Healthspace filtered on some optional parameters.

Scope The scope SPACE_PROFILE_READ is needed for this endpoint.

Role The authenticated user should have the role ROLE_SPACE_MEMBER_MANAGER which is part of the group assistants.

Parameters See the PARAMS section below to see on which parameters the collection.

Authorizations:
oauth2
path Parameters
space
required
string
Example: 4361b17b37c9

Space id

query Parameters
identificationNumber
string
Example: identificationNumber=77515b15d6bf

Filters the collection result by identificationNumber (string)

birthday
string <date>
Example: birthday=1979-01-05

Filters the collection result by birthday (yyyy-mm-dd)

account
string
Example: account=a2b75d614ef1

Filters the collection result by account_id (string)

user_type
string
Enum: "staff" "client"

Filters the collection result by user_type

string or integer

Starts the collection result at the provided item (default: 0)

string or integer

Limits the collection result by the provided amount of items (default: 10)

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [ ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0
}

public-profiles

Public Profiles

Get a collection of all active staff accounts are set to visible for the provided space

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [ ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0
}

record

My Record

Returns all of the Files in the current user's Record

beta

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [ ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 0
}

space

Space

Returns a collection of all spaces that belong to the organization of the organization owner that is logged in

Returns a collection of spaces the organization the currently authenticated user is owner of.

Scope The access_token should have the scope ORGANIZATION_SPACE_READ for this endpoint.

Role The authenticated user should have the role ROLE_ACCOUNT_SPACE_OWNER.

Authorizations:
oauth2
query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of spaces to return (defaults to 10)

string or integer
Examples:
  • offset=10 - Example of an offset value as a string
  • offset=25 - Example of an offset value as an integer

Index of first space to be returned (defaults to 0)

Responses

Response samples

Content type
application/json
{
  • "collection": [
    ],
  • "offset": 0,
  • "limit": 10,
  • "total_count": 2
}

Returns the space with the provided id or alias

Returns a specific space by id or by alias.

Note that when requesting by alias you must use alias: before the alias.

The alias of a healthspace is used as part of the URL before .karify.com, so the structure is https://{{space_alias}}.karify.com.

Scope

No specific scope in the access_token is needed for this endpoint.

Role

No specific role is needed for the authenticated user using this endpoint.

Authorizations:
oauth2cookie
path Parameters
required
string or string

Space ID or alias

Responses

Response samples

Content type
application/json
Example
{
  • "id": "bewegenspace",
  • "alias": "bewegen-is-vooruitgaan",
  • "name": "Bewegen is vooruitgaan",
  • "description": "Join deze space als je in de buurt van Amsterdam woont en een afspraak wil maken. Je kunt zo ook makkelijk je dossier bijhouden en doelen voor jezelf aanmaken etc.",
  • "treatments": "Fysiotherapy - Haptonomy",
  • "subscription_type": "allowed",
  • "organization": {
    },
  • "timezone": "Europe/Amsterdam",
  • "opening_hours_status": "show-hours",
  • "preferred_locale": "nl",
  • "is_global": false,
  • "enabled": true,
  • "time_slots": [
    ],
  • "created_at": "2013-02-11T11:00:00+01:00",
  • "updated_at": "2021-04-15T16:37:22+02:00"
}

space-theme

Space Theme

Returns the theme for the provided space

Returns the theme of a given space.

Scope

No specific scope in the access_token is needed for this endpoint.

Role

No specific role is needed for the authenticated user using this endpoint.

Authorizations:
oauth2cookie
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

Responses

Response samples

Content type
application/json
Example
{}

Returns the background image for the provided space

Authorizations:
oauth2cookie
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

cacheBust
required
string [ 1 .. 12 ] characters
Examples:
  • 1729779718 - Example of a cache busting value

Cache busting value. Normally the timestamp of when the space theme was last updated.

Responses

Response samples

Content type
data:image/jpeg;base64,/9j/4Q/+RXhpZgAATU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgEoAAMAAAABAAIAAAITAAMAAAABAAEAAIdpAAQAAAABAAAAZgAAAAAAAABgAAAAAQAAAGAAAAABAAeQAAAHAAAABDAyMjGRAQAHAAAABAECAwCgAAAHAAAABDAxMDCgAQADAAAAAQABAACgAgAEAAAAAQAAB4CgAwAEAAAAAQAAB4CkBgADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9sAhAAEBAQEBAQHBAQHCgcHBwoNCgoKCg0RDQ0NDQ0RFBERERERERQUFBQUFBQUGBgYGBgYHBwcHBwfHx8fHx8fHx8fAQUFBQgHCA4HBw4hFhIWISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISEhISH/3QAEAHj/wAARCASwB4ADASIAAhEBAxEB/8QBogAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLEAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+foBAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKCxEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9D6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9H6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9L6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9P6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9T6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9X6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9b6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9f6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9D6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9H6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9L6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9P6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9T6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9X6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9b6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9f6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9D6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9H6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9L6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9P6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9T6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9X6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9b6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9f6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9D6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9H6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9L6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9P6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9T6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9X6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9b6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9f6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9D6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK4rW/G2n6XKbW2X7TKvDBThVPpn/Cs6lWNNXkdmDwFfFz9nh43Z2tFeVQfEh9+LqyUJ/wBM35/IgV32la5pmsx7rGTLDqh4Yfh/kVnSxVKppFnZjchxmEXNWhp5GvRRRXQeOFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/R+mqKKK7jxAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOV8Yau+k6STAcSzHy09sjkj6CvBsnvya9O+JLN5liv8ADtkP/oNeYV83mVRyq8vRH7FwdhIUsDGpHdhU0E81rKs1u5jdehXjFQ0VwJ22PqZxjJcsloeyeGfGkWoFbHUyEn6K/RX/AMD7V6BXy3yOles+D/Fv2grpOpN8/SKQ/wAX+yfevbwWP5vcqH5txJwqqaeKwa06o9Looor2D89tbQKKKKACiiigAoopKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/S+mqKKK7jxAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPOviLaGTT7e8Uf6qQqfow/8ArV5BX0hrOnjVNLnse8ifKfRh0/WvnFlZGKuMEcEemP8ACvns0pctTm6H61wTjFUwjodY/kNooorzD7QKUEqQV4I9KSihaCcU1ZnuPg/xD/bFr9kuW/0qADP+0vQN/Q12dfNOm38+l3sd7bfejOceo7j8a+jLK8hv7SO8tzlJVBHt7fhX0eX4n2keWW6PyDivJVg63tqS92X4FqiiivRPkQooqteXdtYWzXd24SNByf8AD+gpNqKuy6dOU5KEFqTSSRwxmWVgqqMkngCvOdX+IEEBMOkIJSP+WjcL+A71xniLxPd65N5akx2y/dj9fdvf27Vy9eJicyd+WlsfpeScG04xVXHavsdNL4w8RStuF0U9kAArQ0/x3rNq4F2Rcx+jDB/AiuJorzliaid1I+sqZLgpw9m6S+4+itG12w1uDzbRvmH3kP3l/wDrVtV806bqFzpd4l7aNh07DuPT6Gvoyyuo76zivIfuSoGH4ivfwOL9srPdH5bxLkH9nTU6fwP8C1RRRXcfLhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF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bweK9lU0jLQ8Tooor5s/YkFFFFAHoXw5k26pPH/eh/ka5zxPqH9pa1PMDlFOxfovFTeG70ac15djqtswX6ngVzXPeuudX9yqaPCoYBf2jUxbXRJBRRRXIe6FFFFHkIVQWIVRkntXtfg7w3/ZUH2+8X/SZBwP7i+lZXg3wp5WzVtSX5usSHt6Mf6CvTa93L8Fy/vZn5nxXxH7RvBYV6dQooor1z8+CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooFABVe5urazga4upFijXqzHAFcj4k8baboINtFi4uh/yzU/Kv+8e30FeF6xr2qa7N52oylgPuoOEX6LXNVxCjojzcVmMKWkdWema78TUTNvoKbu3nP0/4Cv+NeUX2o32pzG4vpWlc+v9B0FUqK4J1ZT3PArYupVd5MKKKKzOYKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvafhVBItne3B+40iqPqo5/mK8YVWdgiDJJAAHqelfUXhnSf7F0S3sSBvC7nx/ebk/l0rqwkfeuerlVJyqc3RG9RRRXpH0oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/1vpqiiiu48QKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK858f6u1tbx6TAcGYbn/3B0H416NXhPjli3iOYHoioo/LNcGY1HClofU8IYOFfHLn6I5Giiivmj9l0CiiigAooooAKKKKACl9jSUUCsjZ0zX9V0g/6FMQn9w8p+X+Fen6P450/UMW+pKLeRhjP/LNvx7fjXi9FddHFzp7bHiZjw9hcXq42l3R0HiXSP7I1No4+YJPniI6bT/hXP1ba+uZLVbOVt8aHKZ5K/T29qqVhVabvE9LB0506Sp1XqgooorM6h6uyoyA4DYz+FMoooElYKKKKPIHoFeo+EPCGdmq6qvHWKI/+hH+gpfCXg/GzVdWXsDFEf0Lf0FepZr2sBgPt1D844m4n3weDfq/0QUUU0ug4JAr2bpH577Ocug6ikBB6GloTRLg1uFFFFMkKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooqpfX1pptq15euI4kHJ/oKWwpNRV2TyyxQRtNMwREGWJ4AFeL+KfiHJcFrDQWKRdGn/ib2T0HvXOeKvGF34hkMEWYrNfuoP4vdv8OlcZXBWxN9Inz+MzJy/d0thSSeT1pKKK4zxgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiitjQtGudd1FLC278s3ZV7mnFX0RcIOT5YnZfDrw6b++/ti5X9xbH5M/xSf8A2Ne8VS06wttLsorC0XbHEMD3q7XrUafJGx9bg8P7GmohRRRWp1BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB/9f6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvG/iFYtDqcd+B8kyBSf9pf/AK1eyVk61pMOs2D2U3BPKN/dbsa5sXR9rT5Ue3w/mSwOLjVl8Ox840Vdv9PutMumtLtdrL+RHqPaqVfKyi4uzP2+lVjUipwegUUUUjQKKKKACiiikAUUUUAFFFFABRRRQAUUUUwCiiigAq1ZXP2O6juhGsnlkNtb7pxVWihO2xM4KceR7HoMnxF1NhiKCJD+JrJm8a+IZuBMIx6IoFcpRXTLF1XuzyqeQ4GGqpI05ta1a4/111K3/AiP5VSNxcHlpHP/AAI1DRWLqSfU74YSjHSMF9xbiv76A7oZ5EPsxrp9O8ca1ZkLcMLlPR+D+YrjaKunXnD4WYYnK8NXjy1IL7j6F0TxHp2uJi3OyUfejbqP8a3+1fMNvPNazLPbtsdD8pHavf8Aw3rQ1zTVuDxKvyyD/a/wNe7gcb7X3Jbn5hxJw39R/f0Pg/I36KKK9E+PCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiioLm4gs7d7q5cRxxruZj0AFGlhNpK7IdQ1C00q0e9vW2RoOT6n0FfOPibxPeeIrvc+Y7dP9XH2A9T71L4r8UXHiK8+XKWsRxGn9T7n9K5OvNr1+b3VsfN4/HOo+SGwUUUVynlBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA0SQwyTyrBCpZ3O1QO5r6T8JeG4vDun+WwBuZcGVv/AGUewrkPh14ZEUY1+9X5mH7gHsP73+FetV6OGo2V2fQ5Zg+Ve1kFFFFdZ7AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//0Ppqiiiu48QKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAMnVtFsNat/IvEzj7rjhl+leT6p4F1eyJezH2qL/Z4b8v8K9uorkr4KnV3PdyviHFYDSDvHsfMM1vPbv5dwjRsOzDb/OofpX0/JDDMu2ZFcejAEVlS+HNBn/1tlCf+A4/lXnSyh/ZkfYUOPKdrVaf3HzrRXvp8G+Gyc/ZFH0JFR/8IT4c/wCfc/8Afbf41n/ZVTujsXHODf2WeDUV7r/wgvhr/ng//fxv8akXwT4bX/l3J+rt/jU/2VV8h/68YLomeD4NLGjynZEpc+ijP8q+govCvh2HlLGLPuM1sQ2ttbjbBEkY/wBlQP5VrHKZfaZyVuPKS/g0zwqw8I61eDzHi+zRAZLy/LgD261zs6RRzNHA29AcBsYzjvj0r1nx7rv2a3GkW5/eSjMhHZPT8f5V5DXHiqdOk/ZwPocixeJxdP6ziFZPZBRRRXIe8FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFeifDmd11C4ts/K8e78VrzuvUPhzYt5lxqLDCgCNfr1NdmATdVWPnuKJQWX1FM9Uooor6g/EgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArwLx34rOrXP9lWLf6JCfmI/wCWjj+g7V2fxB8Tf2baf2PZNi4uF+cj+CM/1NeD1w4mt9lHhZnjP+XUAooorhPCCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACum8KaE/iDVktiP3KfPKR2Udvx6VzQBJCqMk8ACvpXwd4fGgaQscg/0mbDzex7L/AMBFb4elzy8jvwGG9rU12R1SIkaLHGAqqAAB2Ap1FFequx9UlbYKKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9H6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKqX17Dp9nJez8JEuT/QVbryv4hauS0ejRHgYkl/oP61z4msqVNyPWyXLnjcTGj06+h51fXk2oXcl7cfflOT7eg/AVUoor5STvqz90pU404qEFogooopGgd8UVFn9+V/2RUtNqxyYTEqspW6Nr7gooopHWFFFdb4Qv7WC/+wagiSW9z8vzgEK/Y/j0rSlBSkot2OXGV3QpSqxje3Q5KivdrzwRoF1kpEYG/wCmZx+nSuWuvhxOObK6Vh6SLj+Vdk8tqx2R8/heL8BV0m+U8yorrJ/BPiKD7sAkH+wwNZreHNdU4NnL/wB81yvD1FvE9qnmuEmrxqIxaK6CHwr4gnOEtHH+9ha6jTPh5dOwfVJViXj5E5P59BVU8JUnokYYnPcFh4806iOL0jSLvWLtbW1X/ebso9f/AK1fQOm6fBpdlHYWw+WMfme5o0/TbLS7cW1jGI0HX1P1q/XvYPBqirvc/LuIOIJZjLkhpBBRRRXcfMhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFZur6nBo2my6jcn5Y14HqewFaVeFfEjXvtl8uj27furb7+Ohf8A+sKyq1OSJyYyuqNPmPPtQvrjUr2W+ujmSU7j7eg+gqnRRXkM+Rbu7sKKKKBBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFXNPsZ9SvIrC1GZJWCj29/woSvoioxu+VHe/Dnw99vv/AO17pf3FqfkB/ik7fgvX617zWdpOmW+j6fFp1r9yJcZ9T3P41o169GnyRsfW4PDqjTSCiiitTrCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/0vpqiiiu48QKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigCG4njtYHuZjhI1LN9AK+bL+9l1C8lvZvvStu+noPwFeveP9R+y6Ulih+a5bB/3F5P8ASvFq8DNa15Kmuh+p8D5f7Og8VJavRegUUUV5R92FFFFBMpcsblIP/puPbH6VdrIV/wB/v9W/+tWvW9eNrHw3BGZLFrErtN/cwooorA+7Cl6cjikooWgmk1Znv/hXV/7Y0iOSQ5mi/dyfUDr+Irpa8K8Far/Z2sLDIcRXOI29Af4T+de619Rga3tafofifE2WfU8W1Fe69hKWiiuw+eCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAyNd1OPRtJn1B/8Almvyj1Y8AV8szSyXErTynLuSSfc16x8UdVy9vo0Z4Uea/wCPCivIq83FTvLlR8zmlfnqci2QUUUVynlhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABXt/w28P/AGW2OuXS/vJhtiz2T1/H+VeaeFtCfX9WjtT/AKlPnlP+yO3419NxxpFGsUYCqoAAHYCuzC0teZntZXhbv2sh9FFFegfQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//0/pqiiiu48QKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo9qwNe8QWmg24eb55H+5GOp9/YV47qPivW9SbLTtEnZIjsA/Ec1x4jGwo6H0eUcM4nHx9pH3Yn0DSV81xanqUD+ZDczKfZ2/lnFd1oXj2eN1tta/eRnH70DDL9R3HvWNHM4TdmrHo47grE0Ic9F81j1uimRuksayREMrDII6EU+vRR8ZKLi7MKKKKYgooooAKKKKACiiigAooooAKKKhuJlt7eS4fpGpb8hSbsiqcOaSgjxHxxf/bddeJTlLYCMfXqf1rj6lnle4ne4c5MjFj+NRV8jWnzzcj9/wAuwqw+GhRXRBRRRWR2hUU7bIWYdhUtaRsW/wCEcu9SI4EkUS/mCf8ACtaEOaVjweJsd9Ty6tWW9tDj8H+Hr2rqtQszYXs1kf8Alk2Pw6j9K5mFQ0yJ2LKPzIr1bx9YG31OK9UfLcRjP+8nX9K7cRSvT5l0PyrwwxnJi6lGX2kcHRRRXmH7mFFFFMBQSpBXgjp7V9G6HqA1TSoL3+J0Ab2YcGvnGvWfhxe7re409v4CJFH14NelllXlqcnc+N40wKq4RVlvH8j0uiiivoj8jCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApMhRk9KWsDxRff2doF3cjgiPav1bgVMnZXIqS5YuR87eIdROq6zc3pOQ7kL/urwKxaQDAxS140nd3Pi5ycm5BRRRSICiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKUAkhVGT0wKSvRvh34e/tHUP7UuVzBan5QejSdvyq4Q5mkjahSdSagj07wZ4fGg6QokA+0T4eU/yH4Cuuoor2IxUVyo+wpU1TioRCiiimaBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB/9T6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqteXcNjaSXc/CRKWP4VZrzX4h6j5dvDpaHmT53x6DoKwxNVUqbkenk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CPhdbGTWp7ntFDj/AL6P/wBavd69PCfAfUZUv3IUUUV0npBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ2rWS6jptxYsOJYyv6cV8oMjRsUfqpIP1HFfYFfMfjGx/s/xHdQgYVm3r9GGf51xYyOikeJnFLRTOZooorgPACiiigAooooAKKKKACiiigAooooAKKKKALljf3mmXK3djIYpF7r/X2r3Twv47tNXC2Wo4guug7I/wBPQ+1fP9AyDkVtTrOGx2YXFzovTY+wqK8U8I+P3tymma626LgJMeq+gb1HvXtSsrqHjOVIyCOn4V6VOopq6PpsPiYVleAtFFFaHQFFFFABRRRQAUUUUAFFFFABSUtZes6tZ6Fpk2qX7bYoVz7k9lHuTwKNkKTSV2cx478XxeFtMxCQ15ONsK+nqx9hXyhLLNdTmWYmSWRsknkkn/P9K0dd1u88Q6pLqd8fnkOAo6Io6KPYV6v8LPBYuGXxNqafu0/49kPcj+P6DtXmybrTstjxJylianLHY674ceB10K2Gramn+nTLwD/yyQjp9f8A9VeqUUV6EIKK5UexTpxpx5Ynh3xSug+pWlmP+WURYj3c8foK8urp/GV59t8TXkvZH8pfogxXMV5NZ3mz5LGT56smFFFFZnMFFFFABRRRQAUUUUAFFPjjklcRRKXZjgKoySfQCvYvC3w7WPZf+IAC3BW37D/f/wABxWlOk56I6MPhp1naKOX8JeCbnXGW9vcw2Y6H+KT2X29/yr320tbext0tbRBHFGMKo6Cp1AVQqjAHQDoKWvTpUVBaH0+FwcKC0CiiitTrCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9H6aoooruPECiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooBHFeI/B1rq+66ssQ3X/jr/X0PvXjV7ZXWnzm2vIz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7RtjGVOOPwrrw2NdN+8rnzON8P8AAu9TBrll+B9Eahr2jaUP9PuY4j/dzlv++RXF3fxQ0SE4tIJrj0IAQfrXi09s2TIvzZ9eTVGvRWOc/gPyLPKWOy6r7GvDl7Hsv/C1ot3/AB4Nj/fH+FbNh8S9BumEd0klqTxlwGX/AMdzivAaKaxU0eJHM6ye59V6hqlvDos2q2zq6LEWVlIIPYYxXzmSSct17/WotO1S+gtptLjf/R5wCydsgjp6VJXn4+vztI/dfDtKpgpYi2rdvuCiiivPP0IK19AujZa1aXAOAJVB+jfL/WsinxNskVx/CwP5EVdN2kmc+KpqpRnB9j6h6cUUxDlFPsP5U+vsFsfz5UjaTiFFFFMgKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD5u8e2n2TxPcYGFl2yD8R/9auOr1r4qWeLiz1ADhlaM/hyK8lryK0bTsfIY2HJVaCiiisjkCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA9C+HWsmw1j+z5WxFd/KPQOOn59K+gK+QYZXglSeI4aNgy/UdK+sNMvU1HTre+j6SorfpXoYSd1yn0OUVrxdNl6iiiuw9kKKKKADgDntXyB4710694kuLlDmGI+VF6bU4yPqa+jfHutf2F4YubmM4lkHlRf7zf4CvkSOOSWRYYRudyFUepPAH51xYqe0EeTmNTamj2z4O6B5txP4inX5Ysww5/vH75H06V9A1h+G9Hi0HRLXSo/8Alkg3H1Y/eP51uV00oKMbHfhqfs4JBRRRWhuFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//1Ppqiiiu48QKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvEfHGrNf6qbND+6tflA7Fv4vy6V7Y52oW9BmvmSeUzT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CiilUZIWpA1bQLBb+a/Gaoz3DzH0UdBSTS+YQq/cUYAqCgLBRRRQAUUUUAFFFFABRRT44zK4Re9AGnp6bYyx7/0rQpiII1CL2p9WIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDLvocfvl+hrNrpGUMpU9DXPyxmJyhqWhkfStu3lFxCVbqBg1iVLDKYXDr+P0pIBjoUcoe3FNq/eqrbZ06NxVCiwBWsz77DPtismrsT5tJI/ShAUqKKKAL+nr+9J9BWv0rO09flZvoKkvZfLj2DqarZCM+6m82TjoOBVaiipGHXgVtWtqIRvf738qitLdYl8+br/Ko574n5YeB61S0AuzXMcIx1b0FZEs8kx+c8eg6VBz3pyqWOFGaVwG0+ONpDtQZq9Fp5PMpx7VpIiRrtQYFFgILe1WAZPLVaoopiCiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRubMSfPHw3p2rJZWQ7WGMV0lRSQpKMOPxqbAc9RV2WxkTmP5hVMgjg0rDEooooAKKKKACiiigAooooAKxtTiwVmH0P9K2ahniE0Rj9RxQXB2ZlaRdfZL1S33X+U137jKkD0ry4qVJU9RxXe6PeC8tAGxvjwp/oapGlSOzRwB9K9H0z/kHwf7orzsjDEehr0DSDnTYPZaSHWXuo0q891e48++dh0X5R+Fdxezi1tZJz2HH1rzU5Jyec1RNGPU6zw3b4WS5+ij8K2b2fYvlL1P8qSyjFjp8at2XJ+prMdzI5du9Izlq7jKKKKkkKKKKACiiigAooooAKKKKACiiigAooq5a23nHe/3RQgII4JZf9WOKvJpw/wCWjfgK0wAowvT2oqrCIY7eGL7i1NRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//0u7+IX/IWg/64j+Zrgq734g/8haD/riP5muCrCt8bPzTH/xpBRRRWZyBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU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KStqxYtDz2OKEgMbB9KMH0rpaKdhXOawfSjB9K6WiiwXOawfSja3p+ldLRRYLnPLDK3RT+VW4rBz/rTtHtWtRTsAyONI1CoMCn0UUwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKADtiqcllC/K/L9KuUUrAZ39np3Y1ait4ovujmp6KLAFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAoo9qKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//W7v4hf8haD/riP5muCrvfiF/yFoP+uI/ma4KsK3xM/NMf/GkFFFFZnIFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZeoj5kNVrQ4uEq5qA+RTVC34mT6io6jR0FFFFWIwboYuGq1px5cewqC9GLj8BUmnn94w9qkYl//rR9KqRxtKdqdcVc1AfvV+lMsTi4A9jQwKrIyHDDFNrpsCk2r6CnYDBit5ZThRgetbUMQhjCCpaKBBRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii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

Returns the icon for the provided space

Authorizations:
oauth2cookie
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

cacheBust
required
string [ 1 .. 12 ] characters
Examples:
  • 1729779718 - Example of a cache busting value

Cache busting value. Normally the timestamp of when the space theme was last updated.

Responses

Response samples

Content type
No sample

user-questionnaires

User Questionnaires

Get all available USER questionnaires for the logged in client from the organization of the healthspace, ordered by name and creation date

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

query Parameters
string or integer
Examples:
  • limit=4 - Example of a limit value as a string
  • limit=9 - Example of a limit value as an integer

Maximum number of Questionnaires to return (defaults to 10)

string or integer
Examples:
  • offset=10 - Example of an offset value as a string
  • offset=25 - Example of an offset value as an integer

Index of first Questionnaires to be returned (defaults to 0)

status[]
Array of strings
Items Enum: "CREATED" "IN_PROGRESS" "REVIEW" "FINAL"
Examples:
  • status[]=IN_PROGRESS - Example of filtering by a single status
  • status[]=CREATED&status[]=FINAL - Example of filtering by multiple statuses

Filter the collection of questionnaires based on the given status or statuses

Responses

Response samples

Content type
application/json
Example
{
  • "collection": [
    ],
  • "offset": 0,
  • "limit": 1,
  • "total_count": 1
}

Get a single USER questionnaire

beta

Authorizations:
oauth2
path Parameters
space
required
string = 12 characters
Examples:
  • 4361b17b37c9 - Example of a space ID

Space ID

questionnaire
required
string [ 3 .. 255 ] characters
Examples:
  • ROM_12345 - Example of a questionnaire ID

Questionnaire ID

Responses

Response samples

Content type
application/json
Example

A ROM questionnaire that has been created and does not have any answers yet filled in

{
  • "id": "ROM_1212",
  • "description": "Questionnaire 1",
  • "type": "ROM",
  • "status": "CREATED",
  • "progress": 0,
  • "json_schema": {
    },
  • "json_ui_schema": {
    },
  • "created_at": "2021-01-01T00:00:00Z"
}