playlistmanager-go (0.1.0)

Download OpenAPI specification:

License: Proprietary

API de catalogo do MamutTV. Erros saem como application/problem+json.

health

Probes de liveness, readiness e startup.

Liveness probe

Responses

Response samples

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

Readiness probe

Responses

Response samples

Content type
application/json
{
  • "status": "string"
}

Startup probe

Responses

Response samples

Content type
application/json
{
  • "status": "string"
}

media

Catalogo de filmes, series, episodios e generos.

Get medias by ID (batch)

query Parameters
ids
required
Array of strings or null [ 1 .. 100 ] items

Media IDs separados por vírgula (máx. 100)

audience
string
Enum: "kids" "adult"
episodes_max_age
integer <int64> [ 0 .. 86400 ]

Idade máxima aceitável do cache de episódios, em segundos (0 = default de 86400)

header Parameters
X-Providers-Ids
string
X-Canonical-Read
string

Responses

Response samples

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

List VOD categories cached for the active provider

query Parameters
kind
required
string
Enum: "movie" "tv"
audience
string
Enum: "kids" "adult"
header Parameters
X-Providers-Ids
string
X-Canonical-Read
string

Responses

Response samples

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

Tracks grouped by season/episode for a media

query Parameters
media_id
required
string
season
string
episode
string
audience
string
Enum: "kids" "adult"
limit
integer <int64> [ 1 .. 100 ]
Default: 20
offset
integer <int64> >= 0
Default: 0
header Parameters
X-Providers-Ids
string
X-Canonical-Read
string

Responses

Response samples

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

List episodes filtered by tv_show_id/media_id/season_number

query Parameters
tv_show_id
string
media_id
string
season_number
string
limit
integer <int64> [ 1 .. 100 ]
Default: 20
offset
integer <int64> >= 0
Default: 0

Responses

Response samples

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

Episode context (tv_show, season, episode) with tracks

path Parameters
episode_id
required
integer <int64>
header Parameters
X-Providers-Ids
string

Responses

Response samples

Content type
application/json
{
  • "episode": {
    },
  • "season": {
    },
  • "tracks": [
    ],
  • "tv_show": {
    }
}

List the genres present in the active providers' catalogue

query Parameters
kind
required
string
Enum: "movie" "tv"
audience
string
Enum: "kids" "adult"
header Parameters
X-Providers-Ids
string
Accept-Language
string

Responses

Response samples

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

List TV shows from the indexed catalog

query Parameters
name
string
limit
integer <int64> [ 1 .. 100 ]
Default: 20
offset
integer <int64> >= 0
Default: 0

Responses

Response samples

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

Get media by ID

path Parameters
media_id
required
string

Media ID

query Parameters
audience
string
Enum: "kids" "adult"
header Parameters
X-Providers-Ids
string
X-Canonical-Read
string

Responses

Response samples

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

Find related media (TMDB/ES based)

path Parameters
media_id
required
string
query Parameters
tmdb_id
string
kind
string
genres
string
audience
string
Enum: "kids" "adult"
header Parameters
X-Providers-Ids
string
X-Canonical-Read
string

Responses

Response samples

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

channels

Canais ao vivo e suas categorias.

List live-channel categories cached for the active provider

query Parameters
audience
string
Enum: "kids" "adult"
header Parameters
X-Providers-Ids
string

Responses

Response samples

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

Get the programme grid of one live channel around now

query Parameters
provider_id
required
string

Provider dono do canal, como vem em /providers/channels/list.

stream_id
required
string

stream_id do canal no painel, como vem em /providers/channels/list.

hours_behind
integer <int64> [ 0 .. 72 ]
Default: 12

Quanto do passado entra na grade.

hours_ahead
integer <int64> [ 0 .. 72 ]
Default: 12

Quanto do futuro entra na grade.

Responses

Response samples

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

List live channels cached for the active provider

query Parameters
category_id
string
audience
string
Enum: "kids" "adult"
header Parameters
X-Providers-Ids
string

Responses

Response samples

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

providers

Cadastro de painel IPTV, ingestao pelo device e status de saude.

List all configured providers

Responses

Response samples

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

Add a new provider, validate creds, dispatch warmup

Authorizations:
serviceToken
Request Body schema: application/json
required
dns_id
string or null <uuid>

partner-api DNS this list belongs to; absent or null leaves the provider untagged

name
required
string
output
required
string
password
required
string
regex_patterns
Array of strings or null
url
required
string
username
required
string
xui_type
required
string

Responses

Request samples

Content type
application/json
{
  • "dns_id": "9b8cbc27-3943-421c-8cef-89def8d5fab0",
  • "name": "string",
  • "output": "string",
  • "password": "string",
  • "regex_patterns": [
    ],
  • "url": "string",
  • "username": "string",
  • "xui_type": "string"
}

Response samples

Content type
application/json
{
  • "provider_id": "string",
  • "warmup_task_id": "string"
}

Update provider name/url/xui_type

A url change on a provider tagged with a dns answers 409; move it with PUT /providers/dns instead. Sending its current url is a no-op.

Authorizations:
serviceToken
Request Body schema: application/json
required
id
required
string <uuid>
name
string
url
string
xui_type
string

Responses

Request samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "string",
  • "url": "string",
  • "xui_type": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "url": "string",
  • "xui_type": "string"
}

Move a batch of providers to a DNS, setting dns_id, url and panel_url in one update

Authorizations:
serviceToken
Request Body schema: application/json
required
dns_id
required
string <uuid>

partner-api DNS the providers move to

ids
required
Array of strings <uuid> [ 1 .. 1000 ] items [ items <uuid > ]

Providers to move

url
required
string [ 1 .. 2048 ] characters

Bare base of the DNS, http(s)://host[:port] with no path, query, fragment or userinfo; it replaces the scheme://[userinfo@]host[:port] prefix of each provider url and becomes panel_url

Responses

Request samples

Content type
application/json
{
  • "dns_id": "9b8cbc27-3943-421c-8cef-89def8d5fab0",
  • "ids": [
    ],
  • "url": "string"
}

Response samples

Content type
application/json
{
  • "updated": 0
}

Count the providers tagged with each dns_id, in dns_id order

query Parameters
after
string <uuid>

Return only DNS ids greater than this one

limit
integer <int64> [ 1 .. 1000 ]
Default: 1000

Page size

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "next": "string"
}

Set dns_id on untagged providers whose url is on the expected base, without writing anything else

Authorizations:
serviceToken
Request Body schema: application/json
required
dns_id
required
string <uuid>

partner-api DNS the providers are tagged with

ids
required
Array of strings <uuid> [ 1 .. 1000 ] items [ items <uuid > ]

Providers to tag

url
required
string [ 1 .. 2048 ] characters

Expected bare base of the DNS, http(s)://host[:port]; it is compared with each provider url and never written

Responses

Request samples

Content type
application/json
{
  • "dns_id": "9b8cbc27-3943-421c-8cef-89def8d5fab0",
  • "ids": [
    ],
  • "url": "string"
}

Response samples

Content type
application/json
{
  • "already_tagged": 0,
  • "skipped": [
    ],
  • "tagged": 0
}

Replace the versioned route set of a DNS and rebase its providers to the position-0 base

Authorizations:
serviceToken
path Parameters
dns_id
required
string <uuid>

partner-api DNS that owns the set

Request Body schema: application/json
required
required
Array of objects (DNSRouteItem) [ 1 .. 64 ] items

The whole ordered set; positions are exactly 0..n-1 in any order, position 0 is the path dns_id, and no dns_id or url repeats

routes_version
required
integer <int64> >= 1

Version of the set in partner-api; an equal version is a no-op and an older one is refused with 409

Responses

Request samples

Content type
application/json
{
  • "routes": [
    ],
  • "routes_version": 1
}

Response samples

Content type
application/json
{
  • "providers_updated": 0,
  • "routes_version": 0
}

Batch status para varios providers via ?ids=a,b,c (max 100)

query Parameters
ids
string
Examples: ids=uuid1,uuid2,uuid3

CSV de UUIDs de providers (max 100)

Responses

Response samples

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

Delete provider

Authorizations:
serviceToken
path Parameters
provider_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "string"
}

Get provider by ID

path Parameters
provider_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "output": "string",
  • "password": "string",
  • "total_tracks": 0,
  • "url": "string",
  • "username": "string",
  • "xui_type": "string"
}

Device reports a download failure (signal, not truth)

path Parameters
provider_id
required
string <uuid>
Request Body schema: application/json
required
action
string
alive
boolean
Array of objects or null (HealthReportAttempt) <= 64 items

The cycle's route attempts in order. Each one is logged as a refresh route attempt line; the report is still counted once.

correlation_id
string^[A-Za-z0-9-]{1,64}$

One id per refresh cycle, repeated on every attempt line.

error
string
executor
string
Value: "tv"

Who ran the cycle. Only the TV reports here.

result
string <= 64 characters

The device's own verdict. success counts nothing and writes nothing; any other value is counted like a failure report. alive: true takes precedence.

status
integer <int64>
used_route_position
integer <int64> >= 0

Position of the route that delivered the cycle. Absent when no route delivered.

Responses

Request samples

Content type
application/json
{
  • "action": "string",
  • "alive": true,
  • "attempts": [
    ],
  • "correlation_id": "string",
  • "error": "string",
  • "executor": "tv",
  • "result": "string",
  • "status": 0,
  • "used_route_position": 0
}

Response samples

Content type
application/json
{
  • "marked_healthy": true,
  • "marked_unhealthy": true,
  • "received": true
}

Ingest player_api bytes tunneled by the device (gzip optional)

path Parameters
provider_id
required
string <uuid>
action
required
string
header Parameters
Content-Encoding
string
Request Body schema: application/octet-stream
required
string <binary> <application/octet-stream>

Responses

Response samples

Content type
application/json
{
  • "accepted": true
}

Stale actions the device should fetch and tunnel back

path Parameters
provider_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "actions": [
    ],
  • "provider_id": "string",
  • "routes": [
    ]
}

Health status (blocked=true when front should deny entry)

path Parameters
provider_id
required
string <uuid>

Responses

Response samples

Content type
application/json
{
  • "blocked": true,
  • "healthy": true,
  • "label": "string",
  • "last_check_at": "string",
  • "provider_id": "string",
  • "reason": "string",
  • "unhealthy_since": "string"
}

search_engine

Busca, trilhos de seçao, relacionados e jobs de indexacao.

Diagnostic snapshot of cache and queues

Responses

Response samples

Content type
application/json
{
  • "backends": {
    },
  • "counters": {
    },
  • "service": "string",
  • "version": "string"
}

Dispatch TMDB enrich of the full catalog (same job as the 05:00/17:00 UTC cron)

Responses

Response samples

Content type
application/json
{
  • "status": "string",
  • "task_id": "string"
}

Dispatch indexing of media flagged is_indexed=false

Responses

Response samples

Content type
application/json
{
  • "status": "string",
  • "task_id": "string"
}

Known-for: media in provider memory where the person is in cast or crew

header Parameters
X-Canonical-Read
string
Request Body schema: application/json
required
cursor
string
kind
string
Enum: "movie" "tv"
language_code
string
Default: "pt-br"
limit
integer <int64> [ 1 .. 200 ]
Default: 20
person_id
required
integer <int64>
provider_id
required
string

Responses

Request samples

Content type
application/json
{
  • "cursor": "string",
  • "kind": "movie",
  • "language_code": "pt-br",
  • "limit": 20,
  • "person_id": 0,
  • "provider_id": "string"
}

Response samples

Content type
application/json
{
  • "cursor": "string",
  • "medias": [
    ],
  • "total": 0
}

Search media via fast_mode

header Parameters
X-Canonical-Read
string
Request Body schema: application/json
required
cursor
string
object
language_code
string
Default: "pt-br"
limit
integer <int64> [ 1 .. 200 ]
Default: 20
query
string
object

Uma chave com asc ou desc: title, popularity, rating (ou vote_average), year, added, release_date (ou first_air_date) ou runtime. Outra chave cai no motor legado. No catálogo canônico: com query, vale dentro de cada faixa de match e, omitido, ordena por release_date desc; sem query, omitido é year desc. Título sem release_date entra pelo ano.

Responses

Request samples

Content type
application/json
{
  • "cursor": "string",
  • "filters": {
    },
  • "language_code": "pt-br",
  • "limit": 20,
  • "query": "string",
  • "sort": {
    }
}

Response samples

Content type
application/json
{
  • "cursor": "string",
  • "medias": [
    ],
  • "total": 0
}

Dispatch full rebuild of the ES index (heavy)

Responses

Response samples

Content type
application/json
{
  • "status": "string",
  • "task_id": "string"
}

Run multiple search sections in one call (with dedupe)

header Parameters
X-Canonical-Read
string
Request Body schema: application/json
required
object
language_code
string
Default: "pt-br"
required
Array of objects or null (SectionRequestBody)

Responses

Request samples

Content type
application/json
{
  • "base_filters": {
    },
  • "language_code": "pt-br",
  • "sections": [
    ]
}

Response samples

Content type
application/json
{
  • "deduped_count": 0,
  • "sections": [
    ]
}

Find similar media (placeholder, returns empty list in fast_mode)

header Parameters
X-Canonical-Read
string
Request Body schema: application/json
required
object
language_code
string
limit
integer <int64>
Default: 20
media_id
required
string

Responses

Request samples

Content type
application/json
{
  • "filters": {
    },
  • "language_code": "string",
  • "limit": 20,
  • "media_id": "string"
}

Response samples

Content type
application/json
{
  • "medias": [
    ],
  • "total": 0
}

tasks

Inspeçao das filas asynq.

List queues with stats

Responses

Response samples

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

Detailed inspect of asynq queues

Responses

Response samples

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

Delete all archived tasks of a queue

path Parameters
queue_name
required
string

Responses

Response samples

Content type
application/json
{
  • "deleted": 0,
  • "queue": "string"
}

Cancel/delete a task

path Parameters
task_id
required
string
query Parameters
queue
string
Default: "default"

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "queue": "string"
}

Status of a single task

path Parameters
task_id
required
string
query Parameters
queue
string
Default: "default"

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "last_err": "string",
  • "max_retry": 0,
  • "next_process_at": "string",
  • "queue": "string",
  • "retried": 0,
  • "state": "string",
  • "type": "string"
}

sports

Agenda de jogos de futebol, emissoras e canais do usuario.

List manually registered football matches for a day

query Parameters
date
string^\d{4}-\d{2}-\d{2}$

Dia em America/Sao_Paulo. Default: hoje.

Responses

Response samples

Content type
application/json
{
  • "date": "string",
  • "matches": [
    ]
}

Register a football match by hand, for days the upstream has none

Request Body schema: application/json
required
away_logo
string <= 500 characters
away_name
required
string [ 1 .. 120 ] characters
broadcasters
Array of strings or null

Emissoras canonicas. Ex: ["SPORTV","PREMIERE"]

home_logo
string <= 500 characters
home_name
required
string [ 1 .. 120 ] characters
kickoff
required
string <date-time>

Inicio do jogo, com fuso. Ex: 2026-08-19T21:30:00-03:00

league_name
string <= 120 characters
league_slug
string <= 64 characters

Responses

Request samples

Content type
application/json
{
  • "away_logo": "string",
  • "away_name": "string",
  • "broadcasters": [
    ],
  • "home_logo": "string",
  • "home_name": "string",
  • "kickoff": "2019-08-24T14:15:22Z",
  • "league_name": "string",
  • "league_slug": "string"
}

Response samples

Content type
application/json
{
  • "away": {
    },
  • "broadcasters": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "home": {
    },
  • "id": "string",
  • "kickoff": "2019-08-24T14:15:22Z",
  • "league": {
    },
  • "updated_at": "2019-08-24T14:15:22Z"
}

Delete a manually registered football match

path Parameters
match_id
required
string

Responses

Response samples

Content type
application/problem+json
{}

Get a manually registered football match

path Parameters
match_id
required
string

Responses

Response samples

Content type
application/json
{
  • "away": {
    },
  • "broadcasters": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "home": {
    },
  • "id": "string",
  • "kickoff": "2019-08-24T14:15:22Z",
  • "league": {
    },
  • "updated_at": "2019-08-24T14:15:22Z"
}

Update a manually registered football match

path Parameters
match_id
required
string
Request Body schema: application/json
required
away_logo
string <= 500 characters
away_name
required
string [ 1 .. 120 ] characters
broadcasters
Array of strings or null

Emissoras canonicas. Ex: ["SPORTV","PREMIERE"]

home_logo
string <= 500 characters
home_name
required
string [ 1 .. 120 ] characters
kickoff
required
string <date-time>

Inicio do jogo, com fuso. Ex: 2026-08-19T21:30:00-03:00

league_name
string <= 120 characters
league_slug
string <= 64 characters

Responses

Request samples

Content type
application/json
{
  • "away_logo": "string",
  • "away_name": "string",
  • "broadcasters": [
    ],
  • "home_logo": "string",
  • "home_name": "string",
  • "kickoff": "2019-08-24T14:15:22Z",
  • "league_name": "string",
  • "league_slug": "string"
}

Response samples

Content type
application/json
{
  • "away": {
    },
  • "broadcasters": [
    ],
  • "created_at": "2019-08-24T14:15:22Z",
  • "home": {
    },
  • "id": "string",
  • "kickoff": "2019-08-24T14:15:22Z",
  • "league": {
    },
  • "updated_at": "2019-08-24T14:15:22Z"
}

List football matches of the day with broadcasters and the user's channels

query Parameters
date
string^\d{4}-\d{2}-\d{2}$

Dia da agenda em America/Sao_Paulo. Default: hoje.

header Parameters
X-Providers-Ids
string

Responses

Response samples

Content type
application/json
{
  • "date": "string",
  • "matches": [
    ]
}

List the football teams that can be followed, with the leagues they play in

Responses

Response samples

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