Skip to content

API: Catalog

Controller: admin-series.controller.ts: mount admin/series.

MethodPathPermPurpose
GET/admin/seriescatalog:readList series (paginated, filterable).
GET/admin/series/:idcatalog:readSeries detail incl. episodes count, media links.
POST/admin/seriescatalog:writeCreate a series (draft).
PUT/admin/series/:idcatalog:writeUpdate metadata / localization / pricing.
DELETE/admin/series/:idcatalog:deleteDelete (two-person via approvals).
PUT/admin/series/:id/mediacatalog:writeAttach poster / hero / trailer asset ids.
ParamTypeNotes
qstringSearch title/slug/synopsis.
statusdraft / in_review / scheduled / published / archived
genrestring (slug)
languageen / ar / id
marketISO-2
sort, order, cursor, limitstandard
{
"titleEn": "The Villain's Wife",
"slug": "the-villains-wife",
"synopsisEn": "A woman marries the empire's most feared general...",
"genres": ["romance", "historical"],
"tropes": ["arranged-marriage", "enemies-to-lovers"],
"maturity": "teen",
"marketAvailability": ["EG", "SA", "AE"],
"priceCoins": 30,
"freeEpisodeCount": 3
}

Controller: admin-episodes.controller.ts: mount admin/series/:seriesId/episodes.

MethodPathPerm
GET/admin/series/:seriesId/episodescatalog:read
GET/admin/series/:seriesId/episodes/:epIdcatalog:read
POST/admin/series/:seriesId/episodescatalog:write
PUT/admin/series/:seriesId/episodes/:epIdcatalog:write
DELETE/admin/series/:seriesId/episodes/:epIdcatalog:delete

Body includes: episodeNumber, titleI18n, synopsisI18n, cliffhangerScore, priceCoinsOverride, mediaAssetId, thumbAssetId.

Controller: admin-catalog.controllers.ts: mount admin/genres.

MethodPathPerm
GET/admin/genrescatalog:read
POST/admin/genrescatalog:write
PUT/admin/genres/:idcatalog:write
DELETE/admin/genres/:idcatalog:delete

Mount admin/tropes. Same shape as genres.

MethodPathPerm
GET/admin/tropescatalog:read
POST/admin/tropescatalog:write
PUT/admin/tropes/:idcatalog:write
DELETE/admin/tropes/:idcatalog:delete

Mount admin/cast.

MethodPathPerm
GET/admin/castcatalog:read
GET/admin/cast/:idcatalog:read
POST/admin/castcatalog:write
PUT/admin/cast/:idcatalog:write
DELETE/admin/cast/:idcatalog:delete

Mount admin/series/:seriesId/cast.

MethodPathPermNotes
GET/admin/series/:seriesId/castcatalog:readList cast attached to series.
PUT/admin/series/:seriesId/castcatalog:writeFull replace: pass complete array of {castId, role, characterName, sort}.