openapi: 3.0.0
info:
title: VDX Pexip History Service
description: API description for VDX Pexip History Service
version: 1.11.0
contact:
email: development@kvalitetitsit.dk
tags:
- name: Info
description: Technical information regarding the service
- name: live-status
description: Live conference information. Endpoints is secured with an API key.
- name: historic
description: Historic conference information. Endpoints is secured with an API key.
- name: live-status-idws
description: Live conference information. Endpoints is secured with OIO IDWSREST.
- name: historic-idws
description: Historic conference information. Endpoints is secured with OIO IDWSREST.
servers:
- url: '{protocol}://{environment}:{port}'
variables:
protocol:
enum:
- http
- https
default: http
environment:
enum:
- localhost # Docker-compose setup
default: localhost # Development
port:
enum:
- '8080'
default: '8080'
paths:
/apikey/status/v1/conference/{uri_with_domain}:
get:
tags:
- live-status
security:
- apiKeyAuth: []
summary: Get a specific status
description: Get a specific status identified by uri with domain.
parameters:
- name: uri_with_domain
in: path
required: true
schema:
type: string
example: '123@some.domain'
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/live-conference'
'404':
$ref: '#/components/responses/404'
/apikey/status/v1/conference/list/{group_id}:
get:
tags:
- live-status
security:
- apiKeyAuth: []
summary: Get status by group id.
description: Get a list of status identified by group id.
parameters:
- name: group_id
in: path
required: true
schema:
type: integer
example: 1
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/live-conference'
'404':
$ref: '#/components/responses/404'
/apikey/status/v1/conference/list:
get:
tags:
- live-status
security:
- apiKeyAuth: []
summary: Get status.
description: Get a list of status.
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/live-conference'
'404':
$ref: '#/components/responses/404'
/apikey/history/v1/conference:
get:
tags:
- historic
security:
- apiKeyAuth: []
summary: Get historic conferences
description: Get all historic conferences for the organisation hierarchy that the API key grants access to.
parameters:
- in: query
name: start_time__gte
required: true
schema:
type: string
format: date-time
- in: query
name: end_time__lt
required: false
schema:
type: string
format: date-time
- in: query
name: limit
required: false
schema:
type: integer
format: int32
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/historic-conference'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'501':
$ref: '#/components/responses/501'
/apikey/history/v1/conference/{conference_id}:
get:
tags:
- historic
summary: Get historic conferences by ID
description: Get historicconferences by ID
parameters:
- name: conference_id
in: path
required: true
schema:
type: string
example: 8583f400-7886-48c9-874b-5fefc2ac097e
security:
- apiKeyAuth: []
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/historic-conference'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'501':
$ref: '#/components/responses/501'
/idws/status/v1/conference/{uri_with_domain}:
get:
tags:
- live-status-idws
summary: Get a specific status
description: Get a specific status identified by uri with domain.
parameters:
- name: uri_with_domain
in: path
required: true
schema:
type: string
example: '123@some.domain'
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/live-conference'
'404':
$ref: '#/components/responses/404'
/idws/status/v1/conference/list/{group_id}:
get:
tags:
- live-status-idws
summary: Get status by group id.
description: Get a list of status identified by group id.
parameters:
- name: group_id
in: path
required: true
schema:
type: integer
example: 1
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/live-conference'
'404':
$ref: '#/components/responses/404'
/idws/status/v1/conference/list:
get:
tags:
- live-status-idws
summary: Get status.
description: Get a list of status.
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/live-conference'
'404':
$ref: '#/components/responses/404'
/idws/history/v1/conference:
get:
tags:
- historic-idws
summary: Get historic conferences
description: Get all historic conferences for the organisation hierarchy that the API key grants access to.
parameters:
- in: query
name: start_time__gte
required: true
schema:
type: string
format: date-time
- in: query
name: end_time__lt
required: false
schema:
type: string
format: date-time
- in: query
name: limit
required: false
schema:
type: integer
format: int32
responses:
'200':
description: Ok
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/historic-conference'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'501':
$ref: '#/components/responses/501'
/idws/history/v1/conference/{conference_id}:
get:
tags:
- historic-idws
summary: Get historic conferences by ID
description: Get historicconferences by ID
parameters:
- name: conference_id
in: path
required: true
schema:
type: string
example: 8583f400-7886-48c9-874b-5fefc2ac097e
responses:
'200':
description: Ok
content:
application/json:
schema:
$ref: '#/components/schemas/historic-conference'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'403':
$ref: '#/components/responses/403'
'501':
$ref: '#/components/responses/501'
components:
securitySchemes:
apiKeyAuth:
type: apiKey
in: header
name: X-API-KEY
responses:
'400':
description: "Bad Request. This could be because: * One of the required parameters/properties are missing or is empty
* Length of input is exceeding maximum length
(See a possible detailed error message in the in the response.)"
'401':
description: "Unauthorized. This could be because:
* The calling system has not been properly authenticated."
'403':
description: "Forbidden. This could be because:
* The requested information does not belong the organisation of the user
* The calling user does not have the required roles"
'404':
description: "Not Found. This could be because:
* The participant requested has been deleted or has never existed"
'501':
description: "Not Implemented. This could be because: * The combination of parameters is not supported
* See a possible detailed error message in the in the response"
schemas:
additional_info_type:
type: object
required:
- key
- value
properties:
key:
type: string
description: key of additional info field
example: key
value:
type: string
description: value of additional info field
example: value
conference:
type: object
properties:
duration:
type: integer
format: int32
example: 579
default: 0
description: The duration of the conference in seconds
instant_message_count:
type: integer
format: int32
example: 0
default: 0
description: The number of instant messages sent in the conference
start_time:
type: string
format: date-time
example: 2020-05-21T17:32:28.556929
description: The time at which the conference started
end_time:
type: string
format: date-time
example: 2020-04-21T17:32:28.556929
default: null
description: The time at which the conference ended
service_type:
type: string
example: conference
description: The type of conferencing service
participant_count:
type: integer
format: int32
example: 2
description: The number of participants that joined the conference
resource_uri:
type: string
example: /history/v1/conference/8583f400-7886-48c9-874b-5fefc2ac097e/
description: The URI that identifies this resource
name:
type: string
example: meet.alice
description: The name used to refer to the service. Maximum length 250 characters
maxLength: 250
id:
type: string
example: 8583f400-7886-48c9-874b-5fefc2ac097e
uniqueItems: true
description: The primary key
tag:
type: string
example: tag
description: The unique identifier used to track usage of the service. Maximum length 250 characters
maxLength: 250
participants:
type: array
items:
type: string
example: [/history/v1/participant/e9883f1d-88ca-495d-8366-b6eb772dfe57/, /history/v1/participant/5881adda-00ef-4315-8886-5d873d2ef269/]
description: The participants that joined the conference
historic-conference:
type: object
required:
- start_time
properties:
group_id:
type: integer
format: int32
group_name:
type: string
conferenceId:
type: string
format: uuid
name:
type: string
start_time:
type: string
format: date-time
end_time:
type: string
format: date-time
duration:
type: integer
format: int32
participant_count:
type: integer
format: int32
overall_quality:
type: string
overall_quality_percent:
type: number
format: double
local_alias:
type: string
remote_alias:
type: string
service_type:
type: string
meetingid:
type: string
format: uuid
meeting_start_time:
type: string
format: date-time
meeting_end_time:
type: string
format: date-time
meeting_uri_with_domain:
type: string
meeting_created_by_name:
type: string
meeting_organized_by_name:
type: string
meeting_project_code:
type: string
meeting_external_id:
type: string
additional_info:
type: array
items:
$ref: '#/components/schemas/additional_info_type'
# participants:
# type: array
# items:
# $ref: '#/components/schemas/participant-ended'
live-conference:
type: object
required:
- start_time
properties:
id:
type: string
group_id:
type: integer
format: int32
group_name:
type: string
organisation_name:
type: string
is_locked:
type: boolean
is_started:
type: boolean
name:
type: string
overall_quality:
type: string
overall_quality_percent:
type: number
format: double
overall_quality_count:
type: array
items:
type: integer
format: int32
is_encrypted:
type: boolean
service_type:
type: string
start_time:
type: string
# format: date-time
description: Date time without any offset information.
aliases:
type: array
items:
type: string
participant_count:
type: integer
format: int32
participants_data:
type: array
items:
$ref: '#/components/schemas/live-participant'
live-participant:
type: object
properties:
bandwidth:
type: integer
format: int32
bucketed_call_quality:
type: array
items:
type: integer
format: int32
call_direction:
type: string
call_quality:
type: string
call_uuid:
type: string
conference:
type: string
connect_time:
type: string
# format: date-time
description: Date time without any offset information.
conversation_id:
type: string
destination_alias:
type: string
display_name:
type: string
encryption:
type: string
has_media:
type: boolean
id:
type: string
is_muted:
type: boolean
is_presenting:
type: boolean
is_streaming:
type: boolean
license_count:
type: integer
format: int32
license_type:
type: string
media_node:
type: string
participant_alias:
type: string
protocol:
type: string
proxy_node:
type: string
remote_address:
type: string
role:
type: string
rx_bandwidth:
type: integer
format: int32
service_type:
type: string
signalling_node:
type: string
source_alias:
type: string
system_location:
type: string
tx_bandwidth:
type: integer
format: int32
vendor:
type: string
media_streams:
type: array
items:
$ref: '#/components/schemas/live-media-stream'
live-media-stream:
type: object
properties:
id:
type: string
node:
type: string
rx_bitrate:
type: integer
format: int32
rx_codec:
type: string
rx_fps:
type: number
format: double
rx_jitter:
type: number
format: double
rx_packets_lost:
type: number
format: double
rx_resolution:
type: string
rx_windowed_packet_lost:
type: number
format: double
start_time:
type: string
description: Date time without any offset information.
# format: date-time
tx_codec:
type: string
tx_fps:
type: number
format: double
tx_jitter:
type: number
format: double
tx_packet_loss:
type: integer
format: int32
tx_packets_sent:
type: integer
format: int32
tx_windows_packet_loss:
type: number
format: double
type:
type: string
info:
type: object
properties:
git:
properties:
commit:
properties:
time:
type: string
example: "10.10.2018 @ 11:52:54 CEST"
id:
type: string
example: "97fd935"
branch:
type: string
example: "master"
health:
type: object
properties:
status:
type: string
example: "UP"
compoents:
properties:
diskSpace:
properties:
status:
type: string
example: "UP"
mongo:
properties:
status:
type: string
example: "UP"
details:
properties:
version:
type: string
example: "4.2.6"
nats:
properties:
status:
type: string
example: "UP"
details:
properties:
url:
type: string
example: "nats://localhost:4222"
status:
type: string
example: "CONNECTED"
detailedError:
allOf:
- $ref: '#/components/schemas/basicError'
- type: object
required:
- detailed_error
- detailed_error_code
properties:
detailed_error:
description: Detailed error text. This could be a text describing an validation error.
type: string
detailed_error_code:
description:
type: string
enum:
- 10
- 20
basicError:
type: object
required:
- timestamp
- status
- error
- path
properties:
error:
description: Error message.
type: string
path:
description: Path
type: string
status:
description: HTTP status code
type: integer
timestamp:
description: Time of error
type: string
format: date-time