Integration API v1

Quven Integration API

Read-only reporting for third-party software: what this installation is, which libraries it serves, what it holds, and what is playing right now.

The key is used by this page only, to call the address above. It is never sent to quven.tv.

Authentication

An operator issues a key under Settings, Integrations. Send it as X-Quven-Key, or as Authorization: Bearer. Every route is a GET: a key changes nothing and cannot issue another.

Where requests go

The API belongs to a Quven server, not to Quven Cloud. Requests go to the address of the server that issued the key; quven.tv serves this reference and no API of its own.

Polling

Every read carries a weak ETag; send it back as If-None-Match for a 304 with no body. Sessions differ every time, since the answer carries the instant it was taken. A key is allowed 120 requests a minute, counted per key.

Uptime

GET /health/live answers 200 with no key and is what a monitor should poll. Start time is in the reads: startedUtc, and quven_server_start_time_seconds in the metrics.

GET /api/integration/v1/server

Return this installation's identity and version

Answer IntegrationServerDto · 5 fields
FieldType
apiVersion int32
name string
serverId uuid
startedUtc date-time
version string
GET /api/integration/v1/libraries

Return the libraries this installation serves

Answer IntegrationLibraryListDto · 1 field
GET /api/integration/v1/statistics

Return catalogue counts and storage size

Answer IntegrationStatisticsDto · 5 fields
FieldType
episodeCount int64
fileCount int64
movieCount int64
showCount int64
totalStorageBytes int64
GET /api/integration/v1/sessions

Return the playback sessions in progress

Answer IntegrationSessionListDto · 3 fields
FieldType
items IntegrationSessionDto[]
observedUtc date-time
refreshAfterSeconds int32
GET /api/integration/v1/history

Return finished playbacks, most recent first

Query parameters 2 parameters
NameType
limit int32 · nullable
offset int32 · nullable
Answer IntegrationHistoryPageDto · 4 fields
FieldType
items IntegrationHistoryEntryDto[]
limit int32
offset int32
totalCount int32
GET /api/integration/v1/metrics text/plain

Return the same counts in Prometheus exposition format

Answers text/plain rather than a JSON object.

Schemas 8 types
IntegrationHistoryEntryDto 9 fields
FieldType
endedUtc date-time
kind string
mediaId uuid
positionSeconds int64
posterUrl string · nullable
startedUtc date-time
subtitle string · nullable
title string
watchedToEnd boolean
IntegrationHistoryPageDto 4 fields
FieldType
items IntegrationHistoryEntryDto[]
limit int32
offset int32
totalCount int32
IntegrationLibraryDto 5 fields
FieldType
fileCount int64
id uuid
kind string
lastScannedUtc date-time · nullable
name string
IntegrationLibraryListDto 1 fields
IntegrationServerDto 5 fields
FieldType
apiVersion int32
name string
serverId uuid
startedUtc date-time
version string
IntegrationSessionDto 10 fields
FieldType
durationSeconds int64 · nullable
episodeNumber int32 · nullable
isTranscoding boolean
kind string
mediaId uuid
positionSeconds int64
posterUrl string · nullable
seasonNumber int32 · nullable
seriesTitle string · nullable
title string
IntegrationSessionListDto 3 fields
FieldType
items IntegrationSessionDto[]
observedUtc date-time
refreshAfterSeconds int32
IntegrationStatisticsDto 5 fields
FieldType
episodeCount int64
fileCount int64
movieCount int64
showCount int64
totalStorageBytes int64