TITLE=WarpEngine Admin API ROUTE=/engines/warp-engine/admin-api LOCALE=hu MODIFIED=1792409344 URL=https://wiki.teletypegames.org/hu/engines/warp-engine/admin-api L=1 #22 L=2 #54 q│ A 1WarpEngine 1.0 óta mindaz, amit az ActiveAdmin-erőforrások tudnak, JSON q│ API-ként is elérhető a c/api/admin/v1q alatt: a katalógus a kiadásaival, q│ assetjeivel, linkjeivel és képeivel, a státusz- és kategóriaszótár, a q│ platformlinkek, a letöltési statisztika, a pipeline-ok, az artifact-tár és q│ az alkalmazástokenek. Kikapcsolva érkezik, a hoszt kapcsolja be; OpenAPI 3.1 q│ leírást ad magáról, és ugyanezeket a műveleteket MCP-szerverként q│ LLM-ügynököknek is kiszolgálja. A katalógusolvasók olvasó oldala továbbra is q│ a 2WECP. 1Bekapcsolás 1═══════════ p # config/initializers/warp_engine.rb p WarpEngine.configure do |c| p c.admin_api.enabled = true p c.admin_api.mcp = true # a Gemfile-ba kel» p l a gem "mcp" p c.admin_api.rate_limit = { to: 300, within: 1.minute } # tokenenként p end t┌────────────────────────┬─────────────────────────┬─────────────────────────┐ t│h Kulcs t│h Alapérték t│h Jelentés t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cenabled0 t│0 cfalse0 t│0 Kikapcsolva minden t│ t│0 t│0 t│0 Admin API-cím 404-et ad t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 ctoken_owner_class0 t│0 capplication_token_0 t│0 Az a modell, amelynek t│ t│0 t│0 cowner_class0 t│0 tokenje admin scope-ot t│ t│0 t│0 t│0 kaphat t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cauthenticator0 t│0 c:application_token0 t│0 Vagy egy callable, t│ t│0 t│0 t│0 amely a kérésből t│ t│0 t│0 t│0 cWarpEngine::AdminApi::P0 t│ t│0 t│0 t│0 crincipal0-t csinál t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cresources0 t│0 c:all0 t│0 Vagy egy lista, például t│ t│0 t│0 t│0 c%i[softwares releases0 t│ t│0 t│0 t│0 cdownloads]0; a többi 404 t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cread_only0 t│0 cfalse0 t│0 ctrue0: minden írás 405, t│ t│0 t│0 t│0 és kimarad a leírásból t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cpage_size0 / t│0 c500 / c2000 t│0 A listák lapozása t│ t│0 cmax_page_size0 t│0 t│0 t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 crate_limit0 t│0 cnil0 t│0 c{ to:, within: }0 t│ t│0 t│0 t│0 tokenenként, a t│ t│0 t│0 t│0 cRails.cache0-ben t│ t│0 t│0 t│0 számolva; fölötte 429 t│ t│0 t│0 t│0 cRetry-After0-rel t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 copenapi_requires_auth0 t│0 ctrue0 t│0 cfalse0: az t│ t│0 t│0 t│0 OpenAPI-leírás t│ t│0 t│0 t│0 nyilvános t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cdocs_ui0 t│0 cfalse0 t│0 ctrue0: Redoc-oldal a t│ t│0 t│0 t│0 c/api/admin/v1/docs0 t│ t│0 t│0 t│0 alatt (a leírás t│ t│0 t│0 t│0 auth-szabályát követi) t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cmcp0 t│0 cfalse0 t│0 ctrue0: MCP a t│ t│0 t│0 t│0 c/api/admin/v1/mcp0 alatt t│ t├────────────────────────┼─────────────────────────┼─────────────────────────┤ t│0 cmcp_exclude0 t│0 capplication_tokens0, t│0 Az MCP-ből kihagyott t│ t│0 t│0 cdevice_grants0 t│0 erőforrások t│ t└────────────────────────┴─────────────────────────┴─────────────────────────┘ A teletypegames.org-on az 1.0.0 óta be van kapcsolva az Admin API és az MCP, AdminUser-tokenekkel. 1Tokenek és scope-ok 1═══════════════════ p Authorization: Bearer 3f9c… Egy 1alkalmazástoken, amit az admin ad ki (App Tokens → Admin API scope), vagy maga az API. Három scope, egyik sem foglalja magában a másikat: t┌──────────────┬─────────────────────────────────────────────────────────────┐ t│h Scope t│h Mit nyit t│ t├──────────────┼─────────────────────────────────────────────────────────────┤ t│0 cadmin:read0 t│0 minden GET t│ t├──────────────┼─────────────────────────────────────────────────────────────┤ t│0 cadmin:write0 t│0 minden létrehozás, módosítás, törlés, trigger, sync és t│ t│0 t│0 fájlművelet t│ t├──────────────┼─────────────────────────────────────────────────────────────┤ t│0 cadmin:tokens0 t│0 az alkalmazástoken- és eszközbelépés-erőforrás, az olvasás t│ t│0 t│0 is t│ t└──────────────┴─────────────────────────────────────────────────────────────┘ Csak olyan token kaphatja meg őket, amelynek a tulajdonosa az admin-tulajdonososztály — egy publisher tokenje sosem lesz admin token. Egy token nem adhat olyan admin scope-ot, ami neki nincs, nem adhat cunrestricted0-et, és nem adhat a sajátjánál későbbi lejáratot; a sajátjánál szélesebb tokent rotálni sem tud, mert a rotáció átadja az új titkot. Publikáló (cupdate0, cupload0) és kliens (ccatalog0) tokent kiadhat. 1Alak 1════ • JSON, camelCase kulcsok a törzsben, a válaszban és a query-paraméterekben (cperPage0, cneedsReview0). • Lista: c{ "data": [ … ], "meta": { "page", "perPage", "total", "totalPages", c"nextPage" } }0; a cpage0 és a cperPage0 választ, a csort=title0 vagy csort=-createdAt0 rendez. • Egy rekord: c{ "data": { … } }0. A törlés 204-et ad. • Hiba: c{ "error": "Validation failed", "details": { "name": ["has already cbeen taken"] } }0. • Státuszkódok: 400 rossz paraméter, 401 nincs vagy nem admin token, 403 hiányzó scope, 404 nincs ilyen rekord vagy az erőforrás nincs bekapcsolva, 405 csak olvasható, 409 ütközés, 422 validáció, 429 rate limit, 502 a CI-szerver hibázott, 503 nincs CI konfigurálva. • A törlés azt csinálja, amit az admin: a rekord megsemmisül, a token visszavonódik. Az utolsó írás nyer, mint az adminban; kötegelt művelet nincs. • Minden válasz hordozza a cWarpEngine-Version0 és a cWarpEngine-Admin-Api: 1 fejlécet. • Minden sikeres írás után cwarp_engine.admin_api.write0 esemény megy a principallal, a művelettel és a cvia0 értékkel (chttp0 vagy cmcp0), a hoszt auditnaplójához. 1Műveletek 1═════════ t┌─────────────────────┬──────────────────────────────────────────────────────┐ t│h Erőforrás t│h Műveletek t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Szoftverek t│0 cGET/POST /softwares0, cGET/PATCH/DELETE0 t│ t│0 t│0 c/softwares/{id}0 t│ t│0 t│0 (cinclude=releases,images,externalLinks,extras0) t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Kiadások t│0 cGET/POST /softwares/{softwareId}/releases0, t│ t│0 t│0 cGET/PATCH/DELETE /releases/{id}0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Kiadási assetek t│0 cGET/POST /releases/{releaseId}/assets0, t│ t│0 t│0 cGET/PATCH/DELETE /assets/{id}0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Külső linkek t│0 cGET/POST /softwares/{softwareId}/external_links0, t│ t│0 t│0 cGET/PATCH/DELETE /external_links/{id}0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Szoftverképek t│0 cGET/POST /softwares/{softwareId}/images0, cPOST0 t│ t│0 t│0 c…/images/upload0 (multipart), cGET/PATCH/DELETE0 t│ t│0 t│0 c/software_images/{id}0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 További erőforrások t│0 cGET/PATCH0 t│ t│0 t│0 c/softwares/{softwareId}/extras/{association}0 — a t│ t│0 t│0 hoszt saját rekordjai, lásd lent t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Szótár t│0 c/software_statuses0, c/software_categories0, t│ t│0 t│0 c/platform_links0, mindegyik cGET/POST0 és t│ t│0 t│0 cGET/PATCH/DELETE /{id}0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Letöltések t│0 cGET /downloads0, cGET /downloads/{id}0, t│ t│0 t│0 c/downloads/summary0, c/downloads/top_files0, t│ t│0 t│0 c/downloads/top_softwares0, t│ t│0 t│0 c/softwares/{id}/download_stats0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Pipeline-ok t│0 cGET /pipelines0, cGET/PATCH /pipelines/{id}0, cGET0 t│ t│0 t│0 c/pipelines/{id}/runs0, cPOST /pipelines/{id}/trigger0, t│ t│0 t│0 cPOST /pipelines/sync0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Fájlok t│0 cGET /files?dir=0, cPOST /files0 (multipart), cPOST0 t│ t│0 t│0 c/files/directories0, cPATCH /files0, cDELETE0 t│ t│0 t│0 c/files?path=0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Tokenek t│0 cGET/POST /application_tokens0, cGET/PATCH/DELETE0 t│ t│0 t│0 c/application_tokens/{id}0, cPOST0 t│ t│0 t│0 c/application_tokens/{id}/rotate0, cGET0 t│ t│0 t│0 c/device_grants[/{id}]0 t│ t├─────────────────────┼──────────────────────────────────────────────────────┤ t│0 Meta t│0 cGET /me0 — a hívó, a scope-jai és az erőforrások, t│ t│0 t│0 amiket használhat t│ t└─────────────────────┴──────────────────────────────────────────────────────┘ A token létrehozása az egyetlen válasz, amelyben benne van a cplainToken0; többé nem látszik. A hoszt cadditional_resources0 elemei akkor jelennek meg az cextras alatt, ha a hoszt capi_schema0-t ad nekik — a teletypegames.org-on ez egy szoftver SEO-metaadata. 1OpenAPI 1═══════ A cGET /api/admin/v1/openapi.json0 (vagy copenapi.yaml0) ugyanabból a registryből generálódik kérésidőben, amely a kéréseket routolja, így pontosan azt írja le, amit ez a hoszt kiszolgál: a kihagyott erőforrások, a cread_only0 melletti írások, és CI vagy kliensbelépés nélkül a pipeline-ok és az eszközbelépések nincsenek benne. Minden művelet hordozza az cx-required-scope0-ot, és az coperationId0 egyben az MCP-tool neve. cadmin:read0 token kell hozzá, hacsak a hoszt nem tette nyilvánossá. 1MCP 1═══ cc.admin_api.mcp = true0 mellett a cPOST /api/admin/v1/mcp0 állapotmentes Streamable HTTP MCP-szerver — nincs session, nincs stream, kérésenként egy JSON-válasz —, a hivatalos Ruby SDK-ra építve. Ugyanaz a bearer token és ugyanazok a scope-ok érvényesek. • Minden művelet egy tool: csoftware_list0, csoftware_update0, crelease_create0, cpipeline_trigger0, cdownload_summary0, cadmin_whoami0 …, ugyanazzal a JSON Schemával bemenetként és ugyanazzal a válasszal structured contentként. A sikertelen művelet tool-hiba a HTTP-státusszal. • A ctools/list0 csak azt mutatja, amit a token hívhat, a cresources0, a cread_only és a CI- és belépési feltételek után. • A feltöltések kimaradnak, és alapból a tokenerőforrások is: egy friss plain tokennek nincs helye egy modell kontextusában, a transcriptjében és a naplóiban. p claude mcp add --transport http warp-admin https://teletypegames.org/api/adm» p in/v1/mcp \ p --header "Authorization: Bearer 3f9c…" 1Felfedezés 1══════════ A cGET /api/service0 (2WECP) cadmin0 kulcsot hordoz: null, amíg az Admin API ki van kapcsolva, különben a verziója, az curl0, az copenapiUrl0 és az cmcpUrl0. A címek nyilvánosak; ami mögöttük van, az nem.