TITLE=WECP ROUTE=/engines/warp-engine/wecp LOCALE=hu MODIFIED=1792409344 URL=https://wiki.teletypegames.org/hu/engines/warp-engine/wecp L=1 #22 L=2 #46 L=3 #24 L=4 #53 q│ bWECP — WarpEngine Catalog Protocolq: a 1WarpEngine API olvasó oldala, amivel a q│ 2WarpEngine Client, a 3warpstore-motorok és az oldal beszél. JSON, camelCase q│ kulcsok, snake_case query-paraméterek. Minden válasz hordozza a q│ cWarpEngine-Versionq fejlécet. Az cAuthorization: Bearer …q mindenhol q│ opcionális. Az c/api/softwareq-en kívül bármelyik végpont 404-e régebbi motort q│ jelent, amiben nincs az adott képesség. p type Timestamp = string // ISO 8601 UTC, "2026-07-31T16:57:28.186Z"; hiány» p zó = "0001-01-01T00:00:00Z" p type Path = string // szerver-relatív, "/file/…" vagy "/api/image/7";» p a katalógus bázis-URL-je elé 1GET /api/service 1════════════════ 0.5-től. Mi ez a szerver, és hogyan lehet bejelentkezni. Az cauth0 null, ahol nincs bejelentkezés. p interface Service { p engine: "warp_engine" p version: string // motorverzió, ugyanaz, mint a WarpEngine» p -Version fejléc p api: { p version: number // alakverzió, minden boríték `api` mezője» p (2) p catalog: { p pageSize: number // per_page, ha az olvasó nem mondja p maxPageSize: number // a legtöbb, amit egy olvasó kérhet p } p } p catalog: { p gated: boolean // kívánhat-e bármelyik itteni cím jogosul» p tságot p } p auth: null | { p schemes: ["bearer"] p device: { // device authorization grant, RFC 8628 p authorizeUrl: string // ide POST a bejelentkezés indításához p tokenUrl: string // ide POST a token pollozásához p revokeUrl: string | null // ide DELETE a kijelentkezéshez p verificationUrl: string // ahová a személy beírja a user code-ot p interval: number // másodperc két poll között p } p } p admin: null | { // 1.0 óta; null, amíg a hoszt kikapcsolva» p tartja p version: number // az Admin API verziója (1) p url: string // a bázis-címe p openapiUrl: string // az OpenAPI 3.1 leírása p mcpUrl: string | null // az MCP-végpontja, null, ha az MCP ki va» p n kapcsolva p schemes: ["bearer"] p } p } Az cadmin0 az 4Admin API-ra mutat, amely nem része a WECP-nek: egy katalógusolvasónak semmi sem kell belőle, és ott minden admin tokent kér. A WarpEngine 1.0 semmi mást nem változtatott, amit egy olvasó lát — a boríték továbbra is capi: 20. 1GET /api/software 1═════════════════ A katalógus. cpage0 nélkül a teljes katalógus jön egy borítékban; cpage0-gel egy lapja. p interface SoftwareQuery { p page?: number // 1-től; hiányzik = minden p per_page?: number // maxPageSize a plafon p status?: string // vesszővel elválasztott státuszkulcsok p platform?: string // egy platformnév p category?: string // egy kategóriakulcs p q?: string // címre és névre illesztve p owner_id?: number // egy kiadó szoftverei p sort?: "title" | "updated" | "newest" p } p p interface Catalog { p api: number // 2; 0.13 előtti motoron hiányzik (sima l» p ista) p page: number p perPage: number p total: number // a szűrőkre illő szoftverek, minden lapo» p n p totalPages: number p nextPage: number | null // null-ig követni p softwares: Entry[] p } p p interface Entry { p software: Software p releases: Release[] // legújabb elöl p latestRelease: Release | null // a legújabb, amelynek verziója nem "dev-» p …" p webPlayableRelease: Release | null // a latestRelease, ha van "html" ass» p etje p totalDownloads: number p access: Access // 0.5-től, nyitott szabályzat alatt is ot» p t van p } p p interface Software { p id: number p ownerId: number p name: string // a cím kulcsa p title: string p author: string p desc: string // rövid leírás p story: string // hosszú leírás p license: string p platform: string // slug: "c64", "tic80", "godot", …; címké» p k az /api/builds-ben p status: string // kulcs az /api/software/vocabulary-ból p category: string | null // 0.12-től; kulcs az /api/software/vocabu» p lary-ból p highlighted: boolean p imageUrl: Path | null // alapértelmezett borító p images: { url: Path, isDefault: boolean, position: number }[] p externalLinks: { id: number, softwareId: number, label: string, url: strin» p g }[] p platformLinks: { name: string, url: string }[] p createdAt: Timestamp p updatedAt: Timestamp p deletedAt: Timestamp | null p } p p interface Release { p id: number p softwareId: number p version: string // "1.0.0", vagy "dev-1.0.0-branch" a fő á» p gon kívül p assets: Asset[] // ebből telepít egy áruház p cartridgePath: Path | "" // örökölt lapos mezők, ugyanazok az útvon» p alak, mint a megfelelő assetek p sourcePath: Path | "" p htmlFolderPath: Path | "" p docsFolderPath: Path | "" p downloadCount: number p createdAt: Timestamp p updatedAt: Timestamp p deletedAt: Timestamp | null p } p p interface Asset { p kind: "html" | "win_x86" | "win_x64" | "linux_x64" | "linux_arm64" p | "mac_universal" | "mac_x64" | "mac_arm64" | "cartridge" | "source" |» p "docs" p path: Path // ezt add a GET /api/download?path= -nak p } p p interface Access { p gated: boolean // ez a cím kívánhat jogosultságot p entitled: boolean | null // true: letöltheti; false: nem; null: ano» p nim hívó p price: { amountCents: number, currency: string } | null p purchaseUrl: string | null p webUrl: string | null p } 1GET /api/software/facets 1════════════════════════ 0.13-tól. Ugyanazok a szűrők, mint az c/api/software0-en. Minden szám az, amit az érték a többi szűrő mellett mutatna. p interface Facets { p api: number p total: number // minden szűrőre illő p statuses: Record // státuszkulcs → darab p platforms: Record // platform → darab p categories: Record // kategóriakulcs → darab; "" a kateg» p ória nélkülieknek p } 1GET /api/software/vocabulary 1════════════════════════════ 0.13-tól. A katalógus státuszai és kategóriái, megjelenítési sorrendben. p interface Vocabulary { p api: number p statuses: { p key: string // az érték, amit egy szoftver status-a ho» p rdoz p label: string p position: number p defaultVisible: boolean // saját preferencia nélküli áruház ezt li» p stázza p badge: string | null // stílusjavaslat p }[] p categories: { p key: string // az érték, amit egy szoftver category-ja» p hordoz p label: string p position: number p count: number // hány látható szoftver viseli p }[] p } 1GET /api/software/highlighted 1═════════════════════════════ A kiemelt cím, vagy cnull0. p type Highlighted = Entry | null 1GET /api/builds 1═══════════════ Platformcímkék, és hogy melyik platform milyen assetfajtákat vár. p interface Builds { p platforms: Record p allKinds: Asset["kind"][] p } 1GET /api/softwares/:name/builds 1═══════════════════════════════ Egy cím asset-lefedettsége kiadásonként. p interface SoftwareBuilds { p platform: string p expected: Asset["kind"][] p releases: Record p } 1GET /api/download?path= 1═══════════════════════ A cpath0 (egy cAsset.path0) alatti fájl csatolmányként, naplózott letöltéssel. 302 a tárhely-URL-re, ha a tároló nem lokális — arra a hosztra ne küldd a bearer tokent. 400 üres path, 403 a hozzáférési szabályzat megtagadta, 404 nincs. 1GET /file/*path 1═══════════════ Ugyanazok a fájlok inline, letöltési napló nélkül: böngészőben játszható buildek, dokumentáció, borítók. 301, ha a tároló nem lokális, 403 megtagadásnál. 1POST /api/auth/device 1═════════════════════ 0.5-től, az cauth.device.authorizeUrl0 címen. Bejelentkezést indít. 404, ahol az c/api/service0 cauth: null0-t mond. p interface DeviceRequest { p client_name?: string // hogyan hívják ezt az eszközt a személy » p fiókjában p } p p interface DeviceCode { p deviceCode: string // ezzel pollozz p userCode: string // ezt mutasd meg, "WXYZ-1234" p verificationUrl: string // ide küldd a személyt p interval: number // másodperc két poll között; a leíróé föl» p ött nyer p expiresIn: number // másodperc p } 1POST /api/auth/device/token 1═══════════════════════════ Az cauth.device.tokenUrl0 címen. Pollozz, amíg a state el nem dől. 404 vagy 410: az engedély eltűnt, kezdd újra. p interface TokenRequest { p device_code: string p } p p interface TokenPoll { p state: "pending" | "approved" | "denied" | "expired" p token?: string // pontosan egyszer, azon a pollon, amely » p jóváhagyva találja p } 1DELETE /api/auth/token 1══════════════════════ Az cauth.device.revokeUrl0 címen. Visszavonja a kérésen utazó bearer tokent. 204 visszavonva, 401 nincs token.