Zum Hauptinhalt springen

REST API

OpenTalk Controller Frontend API (0.29.0-alpha)

Download OpenAPI specification:Download

OpenTalk Team: mail@opentalk.eu License: EUPL-1.2

Specifies the endpoints and structure of the OpenTalk Controller Frontend API

api::v1::auth

Endpoints related to authentication

Get the configured OIDC provider

Returns the relevant information for a frontend to authenticate against the configured OIDC provider for the OpenTalk service.

Responses

Response samples

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

The login endpoint

Attempt to authenticate with a provided ID token. The ID token can be received from an OIDC provider and contains information about the requesting user as well as an expiration timestamp. When a valid token with an unknown user is provided, a new user will be created in the database.

Request Body schema: application/json
required
id_token
required
string

The id token to use for the login

Responses

Request samples

Content type
application/json
{
  • "id_token": "bG9yZW0gaXBzdW0sIHF1aWEgZG9sb3Igc2"
}

Response samples

Content type
application/json
{
  • "permissions": [ ]
}

api::v1::invites

Endpoints related to meeting invites

Verify an invite code

Verifies the invite and returns the room url for the invite code

Request Body schema: application/json
required
invite_code
required
string <uuid> (InviteCode)

An invite code

Responses

Request samples

Content type
application/json
{
  • "invite_code": "00000000-0000-0000-0000-0000deadbeef"
}

Response samples

Content type
application/json
{
  • "password_required": true,
  • "room_id": "00000000-0000-0000-0000-0000abadcafe"
}

Get all invites for a room

This returns all invites that are available for a room. If no pagination query is added, the default page size is used.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

query Parameters
per_page
integer <int64>

The number of entries per page

page
integer <int64>

The number of the page

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a new invite

A new invite to the room is created with the information in the body.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Request Body schema: application/json
required
expiration
string or null <date-time>

Optional expiration date of the invite

Responses

Request samples

Content type
application/json
{
  • "expiration": "2024-06-20T14:16:19Z"
}

Response samples

Content type
application/json
{
  • "active": true,
  • "created": "2024-06-18T11:22:33Z",
  • "created_by": {},
  • "expiration": null,
  • "invite_code": "00000000-0000-0000-0000-0000deadbeef",
  • "room_id": "00000000-0000-0000-0000-0000abadcafe",
  • "updated": "2024-06-20T14:16:19Z",
  • "updated_by": {}
}

Get a room invite

Returns the room invite resource

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The room id for the invite

invite_code
required
string <uuid> (InviteCode)
Example: 00000000-0000-0000-0000-0000deadbeef

The invite code id

Responses

Response samples

Content type
application/json
{
  • "active": true,
  • "created": "2024-06-18T11:22:33Z",
  • "created_by": {},
  • "expiration": null,
  • "invite_code": "00000000-0000-0000-0000-0000deadbeef",
  • "room_id": "00000000-0000-0000-0000-0000abadcafe",
  • "updated": "2024-06-20T14:16:19Z",
  • "updated_by": {}
}

Update an invite code

Updates the field values as set in the request body.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The room id for the invite

invite_code
required
string <uuid> (InviteCode)
Example: 00000000-0000-0000-0000-0000deadbeef

The invite code id

Request Body schema: application/json
required
expiration
string or null <date-time>

Optional expiration date of the invite

Responses

Request samples

Content type
application/json
{
  • "expiration": "2024-06-20T14:16:19Z"
}

Response samples

Content type
application/json
{
  • "active": true,
  • "created": "2024-06-18T11:22:33Z",
  • "created_by": {},
  • "expiration": null,
  • "invite_code": "00000000-0000-0000-0000-0000deadbeef",
  • "room_id": "00000000-0000-0000-0000-0000abadcafe",
  • "updated": "2024-06-20T14:16:19Z",
  • "updated_by": {}
}

Delete an invite code

The invite code will no longer be usable once it is deleted.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The room id for the invite

invite_code
required
string <uuid> (InviteCode)
Example: 00000000-0000-0000-0000-0000deadbeef

The invite code id

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

api::v1::rooms

Endpoints related to meeting rooms

Get a list of rooms accessible by the requesting user

All rooms accessible to the requesting user are returned in a list. If no pagination query is added, the default page size is used.

Authorizations:
BearerAuth
query Parameters
per_page
integer <int64>

The number of entries per page

page
integer <int64>

The number of the page

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a new room

Creates a new room withh the settings given in the request body.

Authorizations:
BearerAuth
Request Body schema: application/json
required
e2e_encryption
boolean

Enable/Disable e2e encryption for this room; defaults to false when not set

enable_sip
boolean

Enable/Disable sip for this room; defaults to false when not set

password
string or null [ 1 .. 255 ] characters

A room password

waiting_room
boolean

Indicates whether the meeting room should have the waiting room enabled. When not present, the waiting room will be disabled.

Responses

Request samples

Content type
application/json
{
  • "e2e_encryption": true,
  • "enable_sip": true,
  • "password": "v3rys3cr3t",
  • "waiting_room": true
}

Response samples

Content type
application/json
{
  • "created_at": "1970-01-01T00:00:00Z",
  • "created_by": {},
  • "id": "00000000-0000-0000-0000-000000000000",
  • "password": "v3rys3cr3t",
  • "waiting_room": false
}

Get a room

Returns the room resource including additional information such as the creator profile.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Responses

Response samples

Content type
application/json
{
  • "created_at": "1970-01-01T00:00:00Z",
  • "created_by": {},
  • "id": "00000000-0000-0000-0000-000000000000",
  • "password": "v3rys3cr3t",
  • "waiting_room": false
}

Delete a room and its owned resources.

Deletes the room by the id if found. See the query parameters for affecting the behavior of this endpoint, such as mail notification suppression, or succeding even if external resources cannot be successfully deleted.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

query Parameters
force_delete_reference_if_external_services_fail
boolean

Flag to force delete the reference if the deletion at the external services fails

suppress_email_notification
boolean

Flag to disable email notification

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Patch a room with the provided fields

Fields that are not provided in the request body will remain unchanged.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room to be modified

Request Body schema: application/json
required
e2e_encryption
boolean or null

If e2e encryption is enabled

password
string or null [ 1 .. 255 ] characters

A room password

waiting_room
boolean or null

If waiting room is enabled

Responses

Request samples

Content type
application/json
{
  • "e2e_encryption": true,
  • "password": "v3rys3cr3t",
  • "waiting_room": true
}

Response samples

Content type
application/json
{
  • "created_at": "1970-01-01T00:00:00Z",
  • "created_by": {},
  • "id": "00000000-0000-0000-0000-000000000000",
  • "password": "v3rys3cr3t",
  • "waiting_room": false
}

Get a room's event

This returns the event with which the room is associated. Please note that rooms can exist without events, in which case a 404 status will be returned.

Authorizations:
BearerAuthInviteCode
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Responses

Response samples

Content type
application/json
{
  • "e2e_encryption": false,
  • "id": "00000000-0000-0000-0000-004433221100",
  • "is_adhoc": false,
  • "meeting_details": {
    },
  • "room_id": "00000000-0000-0000-0000-0000abadcafe",
  • "title": "Team Event"
}

Start a signaling session as a registered user

This endpoint has to be called in order to get a room ticket. When joining a room, the ticket must be provided as a Sec-WebSocket-Protocol header field when starting the WebSocket connection.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Request Body schema: application/json
required
breakout_room
string <uuid>

The id of a breakout room

resumption
string

A resumption token

Responses

Request samples

Content type
application/json
{
  • "breakout_room": "00000000-0000-0000-0000-00000badcafe",
  • "resumption": "654321zyxwvutsrqponmlkjihgfedcba654321zyxwvutsrqponmlkjihgfedcba"
}

Response samples

Content type
application/json
{
  • "resumption": "654321zyxwvutsrqponmlkjihgfedcba654321zyxwvutsrqponmlkjihgfedcba",
  • "ticket": "abcdefghijklmnopqrstuvwxyz123456abcdefghijklmnopqrstuvwxyz123456"
}

Start a signaling session for an invitation code

Returns a ticket to be used with the /signaling endpoint. When joining a room, the ticket must be provided as Sec-WebSocket-Protocol header field when starting the WebSocket connection. When the requested room has a password set, the requester must provide the correct password through the requests body. When the request has no password set, the password will be ignored if provided.

path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Request Body schema: application/json
required
breakout_room
string <uuid>

The id of a breakout room

invite_code
required
string

The invite code

password
string [ 1 .. 255 ] characters

A room password

resumption
string

A resumption token

Responses

Request samples

Content type
application/json
{
  • "breakout_room": "00000000-0000-0000-0000-0000badcab1e",
  • "invite_code": "00000000-0000-0000-0000-0000deadbeef",
  • "password": "v3rys3cr3t",
  • "resumption": "654321zyxwvutsrqponmlkjihgfedcba654321zyxwvutsrqponmlkjihgfedcba"
}

Response samples

Content type
application/json
{
  • "resumption": "654321zyxwvutsrqponmlkjihgfedcba654321zyxwvutsrqponmlkjihgfedcba",
  • "ticket": "abcdefghijklmnopqrstuvwxyz123456abcdefghijklmnopqrstuvwxyz123456"
}

Get a room's tariff

This returns the tariff that applies to the room, typically the tariff of the room creator.

Authorizations:
BearerAuthInviteCode
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Responses

Response samples

Content type
application/json
{
  • "disabled_features": [
    ],
  • "enabled_modules": [
    ],
  • "id": "00000000-0000-0000-0000-000000000000",
  • "modules": {
    },
  • "name": "Starter tariff",
  • "quotas": {
    }
}

api::v1::events

Endpoints related to events

Get a list of events accessible by the requesting user

Returns a paginated list of events and their exceptions inside the given time range

Authorizations:
BearerAuth
query Parameters
time_min
string or null <date-time>

Optional minimum time in which the event happens

time_max
string or null <date-time>

Optional maximum time in which the event happens

invitees_max
integer <int32> >= 0

Maximum number of invitees to return inside the event resource

Default value is 0

favorites
boolean

Return only favorite events

invite_status
Array of strings (EventInviteStatus)
Items Enum: "pending" "accepted" "tentative" "declined"
Example: invite_status=accepted

Filter the events by invite status

per_page
integer or null <int64>

How many events to return per page

after
string or null

Cursor token to get the next page of events

Returned by the endpoint if the maximum number of events per page has been hit

adhoc
boolean or null

Only get events that are either marked as adhoc or non-adhoc

If present, all adhoc events will be returned when true, all non-adhoc events will be returned when false. If not present, all events will be returned regardless of their adhoc flag value.

time_independent
boolean or null

Only get events that are either time-independent or time-dependent

If present, all time-independent events will be returned when true, all time-dependent events will be returned when false. If absent, all events will be returned regardless of their time dependency.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a new event

Create a new event with the fields sent in the body.

Authorizations:
BearerAuth
query Parameters
suppress_email_notification
boolean

Flag to disable email notification

Request Body schema: application/json
required
description
required
string (EventDescription) <= 4096 characters

The description of an event

e2e_encryption
boolean

Should the created event be encrypted?

object

Representation of a datetime timezone

has_shared_folder
boolean

Should the created event have a shared folder?

is_adhoc
boolean

Is this an ad-hoc chatroom?

is_all_day
boolean

Should the event be all-day?

If true, requires starts_at.datetime and ends_at.datetime to have a 00:00 time part

is_time_independent
required
boolean

Should the created event be time independent?

If true, all following fields must be null If false, requires is_all_day, starts_at, ends_at

password
string [ 1 .. 255 ] characters

A room password

recurrence_pattern
Array of strings (RecurrencePattern) [ 1 .. 4 ] items [ items <= 1024 characters ]

A recurrence pattern containing recurrence rules

show_meeting_details
boolean

Should it be able to show the meeting details?

object

Representation of a datetime timezone

Array of objects (StreamingTarget)

The streaming targets of the room associated with the event

title
required
string (EventTitle) <= 255 characters

The title of an event

waiting_room
boolean

Should the created event have a waiting room?

Responses

Request samples

Content type
application/json
{
  • "description": "The weekly teammeeting",
  • "e2e_encryption": false,
  • "ends_at": {
    },
  • "has_shared_folder": false,
  • "is_adhoc": false,
  • "is_time_independent": false,
  • "password": "v3rys3cr3t",
  • "recurrence_pattern": [
    ],
  • "show_meeting_details": true,
  • "starts_at": {
    },
  • "streaming_targets": [],
  • "title": "Teammeeting",
  • "waiting_room": false
}

Response samples

Content type
application/json
{
  • "can_edit": false,
  • "created_at": "2024-07-20T14:16:19Z",
  • "created_by": {},
  • "description": "The Weekly Team Event",
  • "id": "00000000-0000-0000-0000-004433221100",
  • "invite_status": "accepted",
  • "invitees": [
    ],
  • "invitees_truncated": false,
  • "is_adhoc": false,
  • "is_favorite": false,
  • "is_time_independent": false,
  • "room": {
    },
  • "shared_folder": {},
  • "show_meeting_details": true,
  • "starts_at": {
    },
  • "streaming_targets": [],
  • "title": "Team Event",
  • "type": "single",
  • "updated_at": "2024-07-20T14:16:19Z",
  • "updated_by": {}
}

Get an event

Returns the event resource for the given id

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
invitees_max
integer <int64>

Maximum number of invitees to return inside the event resource

Default value is 0

Responses

Response samples

Content type
application/json
{
  • "can_edit": false,
  • "created_at": "2024-07-20T14:16:19Z",
  • "created_by": {},
  • "description": "The Weekly Team Event",
  • "id": "00000000-0000-0000-0000-004433221100",
  • "invite_status": "accepted",
  • "invitees": [
    ],
  • "invitees_truncated": false,
  • "is_adhoc": false,
  • "is_favorite": false,
  • "is_time_independent": false,
  • "room": {
    },
  • "shared_folder": {},
  • "show_meeting_details": true,
  • "starts_at": {
    },
  • "streaming_targets": [],
  • "title": "Team Event",
  • "type": "single",
  • "updated_at": "2024-07-20T14:16:19Z",
  • "updated_by": {}
}

Delete an event and its owned resources, including the associated room.

Deletes the event by the id if found. See the query parameters for affecting the behavior of this endpoint, such as mail notification suppression, or succeding even if external resources cannot be successfully deleted.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
force_delete_reference_if_external_services_fail
boolean

Flag to force delete the reference if the deletion at the external services fails

suppress_email_notification
boolean

Flag to disable email notification

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Patch an event

Fields that are not provided in the request body will remain unchanged.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
invitees_max
integer <int64>

Maximum number of invitees to include inside the event

suppress_email_notification
boolean

Flag to disable email notification

Request Body schema: application/json
required
description
string <= 4096 characters

The description of an event

e2e_encryption
boolean

Patch whether the event is encrypted

object

Representation of a datetime timezone

has_shared_folder
boolean

Either add a shared folder to the event, if none existed before or delete the shared folder

is_adhoc
boolean

Patch the adhoc flag.

is_all_day
boolean

Patch if the event is an all-day event

If it changes the value from false to true this request must ensure that the starts_at.datetime and ends_at.datetime have a 00:00 time part.

is_time_independent
boolean

Patch the time independence of the event

If it changes the independence from true false this body has to have is_all_day, starts_at and ends_at set

password
string [ 1 .. 255 ] characters

A room password

recurrence_pattern
Array of strings [ 1 .. 4 ] items [ items <= 1024 characters ]

A recurrence pattern containing recurrence rules

show_meeting_details
boolean

Patch wether the meeting details are displayed or not

object

Representation of a datetime timezone

Array of objects (StreamingTarget)

The streaming targets of the room associated with the event

title
string <= 255 characters

The title of an event

waiting_room
boolean

Patch the presence of a waiting room

Responses

Request samples

Content type
application/json
{
  • "description": "The new description",
  • "has_shared_folder": true,
  • "show_meeting_details": false,
  • "title": "The new title"
}

Response samples

Content type
application/json
{
  • "can_edit": false,
  • "created_at": "2024-07-20T14:16:19Z",
  • "created_by": {},
  • "description": "The Weekly Team Event",
  • "id": "00000000-0000-0000-0000-004433221100",
  • "invite_status": "accepted",
  • "invitees": [
    ],
  • "invitees_truncated": false,
  • "is_adhoc": false,
  • "is_favorite": false,
  • "is_time_independent": false,
  • "room": {
    },
  • "shared_folder": {},
  • "show_meeting_details": true,
  • "starts_at": {
    },
  • "streaming_targets": [],
  • "title": "Team Event",
  • "type": "single",
  • "updated_at": "2024-07-20T14:16:19Z",
  • "updated_by": {}
}

api::v1::events::favorites

Endpoints related to user's favorite events

Add an event to the current user's favorites

The event will be marked as favorited by the calling user.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event that gets marked as favorite

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Remove an event from the current user's favorites

The event will be marked as non-favorited by the calling user.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event that gets marked as non-favorited

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

api::v1::events::instances

Endpoints related to event instances

Get a list of the instances of an event

The instances are calculated based on the RRULE of the event. If no RRULE is set for the event, the single event instance is returned.

If no pagination query is added, the default page size is used.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
invitees_max
integer <int64>

Maximum number of invitees to include inside the event

time_min
string or null <date-time>

Minimum time of the event instances

time_max
string or null <date-time>

Maximum time of the event instances

per_page
integer or null <int64>

How many events to return per page

after
string (GetEventInstancesCursor)

An encoded cursor pointing to a position in a series of elements

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get an event instance

Returns the event instance resource

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

ID of the event

instance_id
required
string (InstanceId)
Example: 2024-07-20T15:23:42+00:00

ID of the event instance

query Parameters
invitees_max
integer <int64>

Maximum number of invitees to return inside the event instance resource

Default: 0

suppress_email_notification
boolean

Flag to suppress email notification

Responses

Response samples

Content type
application/json
{
  • "can_edit": false,
  • "created_at": "2024-07-20T14:16:19Z",
  • "created_by": {},
  • "description": "The Weekly Team Event",
  • "ends_at": {
    },
  • "id": "00000000-0000-0000-0000-004433221100_20240705T170242Z",
  • "instance_id": "20240705T170242Z",
  • "invite_status": "pending",
  • "invitees": [
    ],
  • "invitees_truncated": true,
  • "is_all_day": false,
  • "is_favorite": false,
  • "recurring_event_id": "00000000-0000-0000-0000-004433221100",
  • "room": {
    },
  • "shared_folder": {},
  • "starts_at": {
    },
  • "status": "ok",
  • "title": "Team Event",
  • "type": "recurring",
  • "updated_at": "2024-07-20T14:16:19Z",
  • "updated_by": {}
}

API Endpoint `PATCH /events/{event_id}/{instance_id}`

Patch an instance of a recurring event. This creates or modifies an exception for the event at the point of time of the given instance_id. Returns the patched event instance

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

ID of the event

instance_id
required
string (InstanceId)
Example: 2024-07-20T15:23:42+00:00

ID of the event instance

query Parameters
invitees_max
integer <int64>

Maximum number of invitees to return inside the event instance resource

Default: 0

suppress_email_notification
boolean

Flag to suppress email notification

Request Body schema: application/json
required
description
string <= 4096 characters

The description of an event

object

Representation of a datetime timezone

is_all_day
boolean

Flag to indicate if the event is all-day

object

Representation of a datetime timezone

status
string
Enum: "ok" "cancelled"

Status of an event

title
string <= 255 characters

The title of an event

Responses

Request samples

Content type
application/json
{
  • "is_all_day": false,
  • "status": "cancelled",
  • "title": "Early morning meeting"
}

Response samples

Content type
application/json
{
  • "can_edit": false,
  • "created_at": "2024-07-20T14:16:19Z",
  • "created_by": {},
  • "description": "The Weekly Team Event",
  • "ends_at": {
    },
  • "id": "00000000-0000-0000-0000-004433221100_20240705T170242Z",
  • "instance_id": "20240705T170242Z",
  • "invite_status": "pending",
  • "invitees": [
    ],
  • "invitees_truncated": true,
  • "is_all_day": false,
  • "is_favorite": false,
  • "recurring_event_id": "00000000-0000-0000-0000-004433221100",
  • "room": {
    },
  • "shared_folder": {},
  • "starts_at": {
    },
  • "status": "ok",
  • "title": "Team Event",
  • "type": "recurring",
  • "updated_at": "2024-07-20T14:16:19Z",
  • "updated_by": {}
}

api::v1::events::invites

Endpoints related to event invites

Decline an invite to an event

No content required, the request will accept the invitation.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Accept an invite to an event

No content required, the request will accept the invitation.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Get the invites for an event

Returns the list of event invites

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
required
object

Results will be paginated by this pagination specification

status
string or null
Enum: "pending" "accepted" "tentative" "declined"
Example: status=accepted

If present, the results will be filtered by that state

Responses

Response samples

Content type
application/json
{
  • "can_edit": false,
  • "created_at": "2024-07-20T14:16:19Z",
  • "created_by": {},
  • "description": "The Weekly Team Event",
  • "ends_at": {
    },
  • "id": "00000000-0000-0000-0000-004433221100_20240705T170242Z",
  • "instance_id": "20240705T170242Z",
  • "invite_status": "pending",
  • "invitees": [
    ],
  • "invitees_truncated": true,
  • "is_all_day": false,
  • "is_favorite": false,
  • "recurring_event_id": "00000000-0000-0000-0000-004433221100",
  • "room": {
    },
  • "shared_folder": {},
  • "starts_at": {
    },
  • "status": "ok",
  • "title": "Team Event",
  • "type": "recurring",
  • "updated_at": "2024-07-20T14:16:19Z",
  • "updated_by": {}
}

Create a new invite to an event

Create a new invite to an event with the fields sent in the body.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
suppress_email_notification
boolean

Flag to suppress email notification

Request Body schema: application/json
required
One of
invitee
required
string <uuid> (UserId)

The id of a user

role
string (InviteRole)
Enum: "user" "moderator"

Responses

Request samples

Content type
application/json
Example
{
  • "invitee": "00000009-9889-9889-9889-988000000000",
  • "role": "user"
}

Response samples

Content type
application/json
[
  • {
    }
]

Delete an invite from an event

Delete/Withdraw an event invitation using the email address as the identifier.

This will also withdraw invites from registered users if the provided email address matches theirs.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
suppress_email_notification
boolean

Flag to disable email notification

Request Body schema: application/json
required
email
required
string <email> (EmailAddress)

An e-mail address

Responses

Request samples

Content type
application/json
{
  • "email": "alice@example.com"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Patch an event email invite with the provided fields

Fields that are not provided in the request body will remain unchanged.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event to be modified

Request Body schema: application/json
required
email
required
string <email> (EmailAddress)

An e-mail address

role
string or null
Enum: "guest" "moderator"

Responses

Request samples

Content type
application/json
{
  • "email": "alice@example.com",
  • "role": "guest"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Delete an invite from an event

This will uninvite the user from the event

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

ID of the event to delete the invite for

user_id
required
string <uuid> (UserId)
Example: 00000009-9889-9889-9889-988000000000

ID of the user to delete the invite for

query Parameters
suppress_email_notification
boolean

Flag to disable email notification

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Patch an event invite with the provided fields

Fields that are not provided in the request body will remain unchanged.

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event to be modified

user_id
required
string <uuid> (UserId)
Example: 00000009-9889-9889-9889-988000000000

The id of the invited user to be modified

Request Body schema: application/json
required
role
string
Enum: "user" "moderator"

Responses

Request samples

Content type
application/json
{
  • "role": "moderator"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Get information about pending invites

Returns information about pending invites for the current user

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "total_pending_invites": 3
}

api::v1::events::shared_folder

Endpoints related to event shared folders

Get the shared folder for an event

Returns the shared folder for an event if available

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

Responses

Response samples

Content type
application/json
{}

Create a shared folder for an event

Returns the shared folder for an event if created

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
suppress_email_notification
boolean

Flag to disable email notification

Responses

Response samples

Content type
application/json
{}

Delete the shared folder of an event

Will delete the shared folder from the external system and remove the reference to it

Authorizations:
BearerAuth
path Parameters
event_id
required
string <uuid> (EventId)
Example: 00000000-0000-0000-0000-004433221100

The id of the event

query Parameters
force_delete_reference_if_shared_folder_deletion_fails
boolean

Flag to force delete the reference to the shared folder if the deletion of the shared folder fails

suppress_email_notification
boolean

Flag to disable email notification

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

api::v1::assets

Endpoints related to file assets

Get the assets associated with a room.

This returns assets that are available for a room. If no pagination query is added, the default page size is used.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

query Parameters
per_page
integer <int64>

The number of entries per page

page
integer <int64>

The number of the page

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a specific asset inside a room.

This will return the plain asset contents, e.g. the binary file contents or whatever else is stored inside the asset storage.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

asset_id
required
string <uuid> (AssetId)
Example: 00000000-0000-0000-0000-0000aabbcc00

The id of the asset

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Delete an asset from a room.

The asset is removed from the room and deleted from the storage.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

asset_id
required
string <uuid> (AssetId)
Example: 00000000-0000-0000-0000-0000aabbcc00

The id of the asset

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

api::v1::sip_configs

Endpoints related to SIP configuration

Get the sip config for the specified room.

Returns the sip config if available for the room, otherwise 404 NOT_FOUND is returned.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Responses

Response samples

Content type
application/json
{
  • "lobby": false,
  • "password": "9876543210",
  • "room": "00000000-0000-0000-0000-0000abadcafe",
  • "sip_id": "0123456789"
}

Modify the sip configuration of a room. A new sip configuration is created

if none was set before.

Returns the new modified sip configuration.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Request Body schema: application/json
required
lobby
boolean

Enable or disable the lobby for users that join throughh SIP. Defaults to [false] when not explicity set on creation.

password
string = 10 characters [0-9]+

A string containing number characters

Responses

Request samples

Content type
application/json
{
  • "lobby": true,
  • "password": "9876543210"
}

Response samples

Content type
application/json
{
  • "lobby": false,
  • "password": "9876543210",
  • "room": "00000000-0000-0000-0000-0000abadcafe",
  • "sip_id": "0123456789"
}

Delete the SIP configuration of a room.

This removes the dial-in functionality from the room.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

api::v1::services::call_in

Endpoints related to the meeting call-in service

Starts a signaling session

Takes call-in id and pin and returns a ticket for the /signaling endpoint. Behaves similar to the /rooms/{room_id}/start endpoint.

This endpoint is provided for call-in gateways to start a room connection for call-in participants. The participant typically has to provide the credentials (id and pin) via DTMF (the number pad).

Authorizations:
BearerAuth
Request Body schema: application/json
required
id
required
string (CallInId) = 10 characters [0-9]+

A string containing number characters

pin
required
string (CallInPassword) = 10 characters [0-9]+

A string containing number characters

Responses

Request samples

Content type
application/json
{
  • "id": "0000000000",
  • "pin": "0000000000"
}

Response samples

Content type
application/json
{
  • "resumption": "string",
  • "ticket": "string"
}

api::v1::services::recording

Endpoints related to the meeting recording service

Starts a signaling session for recording

This endpoint is provided for participation of recording and streaming clients which will join incognito and receive all the information and media streams required for creating a recording or livestream of the meeting.

Authorizations:
BearerAuth
Request Body schema: application/json
required
breakout_room
string or null <uuid>

The id of a breakout room

room_id
required
string <uuid> (RoomId)

The id of a room

Responses

Request samples

Content type
application/json
{
  • "breakout_room": "00000000-0000-0000-0000-0000badcab1e",
  • "room_id": "00000000-0000-0000-0000-0000abadcafe"
}

Response samples

Content type
application/json
{
  • "resumption": "string",
  • "ticket": "string"
}

Streaming upload of a rendered recording

This is a WebSocket endpoint, all the data that is sent in binary messages is stored in the destination file.

Authorizations:
BearerAuth
query Parameters
room_id
required
string <uuid> (RoomId)
Example: room_id=00000000-0000-0000-0000-0000abadcafe

The room id

file_extension
required
string (FileExtension) <= 10 characters ^[0-9a-zA-Z]*$
Example: file_extension=pdf

The file extension

timestamp
required
string <date-time> (Timestamp)

The recording creation timestamp

header Parameters
connection
required
string
Value: "Upgrade"
upgrade
required
string
Value: "websocket"

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

api::v1::streaming_targets

Endpoints related to streaming targets

List the streaming targets of a room

Returns the streaming targets available for a room

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

query Parameters
per_page
integer <int64>

The number of entries per page

page
integer <int64>

The number of the page

Responses

Response samples

Content type
application/json
[]

Create a new streaming target

Creates a new streaming target for the given room

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The id of the room

query Parameters
suppress_email_notification
boolean

Flag to disable email notification

Request Body schema: application/json
required

Responses

Request samples

Content type
application/json
Example
{}

Response samples

Content type
application/json
Example
{}

Get a streaming target

Returns a single streaming target for a specific room.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The room id for the invite

streaming_target_id
required
string <uuid> (StreamingTargetId)
Example: 00000000-0000-0000-0000-000043434343

The streaming target id

Responses

Response samples

Content type
application/json
{}

Deletes a single streaming target.

The streaming target is deleted from the room.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The room id for the invite

streaming_target_id
required
string <uuid> (StreamingTargetId)
Example: 00000000-0000-0000-0000-000043434343

The streaming target id

query Parameters
suppress_email_notification
boolean

Flag to disable email notification

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}

Update a room streaming target

Modifies and returns a single streaming target.

Authorizations:
BearerAuth
path Parameters
room_id
required
string <uuid> (RoomId)
Example: 00000000-0000-0000-0000-0000abadcafe

The room id for the invite

streaming_target_id
required
string <uuid> (StreamingTargetId)
Example: 00000000-0000-0000-0000-000043434343

The streaming target id

Request Body schema: application/json
required

Responses

Request samples

Content type
application/json
No sample

Response samples

Content type
application/json
Example
{}

api::v1::turn

Endpoints related TURN server usage

Get a TURN server and corresponding credentials

The returned TURN server can be used with the credentials to circumvent NAT restrictions.

Authorizations:
BearerAuthInviteCode

Responses

Response samples

Content type
application/json
[
  • {
    }
]

api::v1::users

Endpoints related to user information and management

Find users

Query users for autocomplete fields

Authorizations:
BearerAuth
query Parameters
q
required
string

The query string

Responses

Response samples

Content type
application/json
[]

Get the current user's profile

Returns the private user profile of the currently logged-in user. This private profile contains information that is not visible in the public profile, such as tariff status or the used storage.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "avatar_url": "string",
  • "conference_theme": "de",
  • "dashboard_theme": "de",
  • "display_name": "Alice Adams",
  • "email": "string",
  • "firstname": "string",
  • "id": "00000009-9889-9889-9889-988000000000",
  • "language": "de",
  • "lastname": "string",
  • "tariff_status": "default",
  • "title": "M.Sc.",
  • "used_storage": 0
}

Patch the current user's profile

Fields that are not provided in the request body will remain unchanged.

Authorizations:
BearerAuth
Request Body schema: application/json
required
conference_theme
string <= 128 characters

A theme identifier

dashboard_theme
string <= 128 characters

A theme identifier

display_name
string <= 255 characters

The display name of a user or participant

language
string <= 35 characters

A language identifier

title
string <= 255 characters

The title of a user

Responses

Request samples

Content type
application/json
{
  • "display_name": "Alice Adams",
  • "language": "en"
}

Response samples

Content type
application/json
{
  • "created_at": "1970-01-01T00:00:00Z",
  • "created_by": {},
  • "id": "00000000-0000-0000-0000-000000000000",
  • "password": "v3rys3cr3t",
  • "waiting_room": false
}

Get the assets associated with the user.

All assets associated to the requesting user are returned in a list. If no pagination query is added, the default page size is used.

Authorizations:
BearerAuth
query Parameters
per_page
integer <int64>

The number of entries per page

page
integer <int64>

The number of the page

sort
required
string (AssetSorting)
Enum: "filename" "size" "namespace" "kind" "created_at"

sort by this field

order
required
string (Ordering)
Enum: "ascending" "descending"

ordering direction

Responses

Response samples

Content type
application/json
{
  • "owned_assets": [
    ]
}

Get the current user tariff information.

Returns the tariff information for the currently logged in user.

Authorizations:
BearerAuth

Responses

Response samples

Content type
application/json
{
  • "disabled_features": [
    ],
  • "enabled_modules": [
    ],
  • "id": "00000000-0000-0000-0000-000000000000",
  • "modules": {
    },
  • "name": "Starter tariff",
  • "quotas": {
    }
}

Get a user's public profile

Returns the public profile of a user.

Authorizations:
BearerAuth
path Parameters
user_id
required
string <uuid> (UserId)
Example: 00000009-9889-9889-9889-988000000000

The id of the user

Responses

Response samples

Content type
application/json
{}

api::signaling

Endpoints for signaling connections in a meeting

Room signaling websocket

The room signaling websocket. Documentation: https://docs.opentalk.eu/developer/controller/signaling/.

Authorizations:
BearerAuth
header Parameters
Sec-WebSocket-Protocol
required
string^opentalk-signaling-json-v1.0, ticket#.*$
Example: opentalk-signaling-json-v1.0, ticket#eyJpc3MiOiJodHRwczovL2V4YW1wbGUuYXV0aDAuY29tLy
connection
required
string
Value: "Upgrade"
upgrade
required
string
Value: "websocket"

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "message": "string"
}