REST és GraphQL API
Mindaz, amit a webalkalmazás tesz, ugyanazon a nyilvános API-n megy keresztül, amelyet Ön is hívhat. Két bejárat van — egy REST API az automatizáláshoz, és egy GraphQL-végpont, amelyet maga az alkalmazás használ —, és mindkettő ugyanaz mögött a hitelesítés és ugyanazok mögött a jogosultság-ellenőrzések mögött áll.
Alap-URL: https://api.ownlate.com
Hitelesítés
Szekció neve “Hitelesítés”| Azonosító | Hogy néz ki | Mire való |
|---|---|---|
| API-kulcs | own_… | Szerver-szerver hívások, CI, szkriptek |
| SDK-token | sdk_… | A böngésző-SDK, egyetlen projekthez |
| OAuth hozzáférési token | átlátszatlan | Az MCP-kiszolgáló és külső alkalmazások |
| Munkamenet-süti | — | A webalkalmazás a böngészőjében |
A kulcsot bearer tokenként adja át:
curl "https://api.ownlate.com/v1/workspaces" \ -H "Authorization: Bearer $OWNLATE_API_KEY"Kulcsot a Profil → API-kulcsok alatt hozhat létre. A kulcsot egyszer, létrehozáskor mutatjuk meg, utána már csak az előtagját. Minden kulcs hordoz:
- Hatóköröket — azokat a jogosultságkódokat, amelyeket gyakorolhat; ezek csak szűkítik azt, amivel már rendelkezik, sosem bővítik.
- Opcionális lejáratot — amely után a kulcs megszűnik működni.
A kulcs visszavonása azonnal érvényes. Magukat a jogosultságkódokat lásd: Tagok és hozzáférés.
Hogyan dől el a jogosultság
Szekció neve “Hogyan dől el a jogosultság”Minden hívásnál a szerver előbb kideríti, melyik munkaterületről van szó, majd ehhez méri, mivel rendelkezik a hívó:
- A munkaterület az útvonalból derül ki. A query string és a törzs ehhez nem számít, így az a végpont, amelynek útvonala nem nevez meg munkaterületet,
Workspace ID is requiredüzenettel utasít el, nem pedig találgat. - Az API-kulcs vagy OAuth-token tovább szűkít: a hatókörén kívüli jogosultság, vagy a kiadásakor meghatározottakon kívüli munkaterület még azelőtt elutasításra kerül, hogy a munkaterületet megkérdeznénk.
- A névtelen hívó azt kapja, amit egy viewer látna — és semmivel sem többet.
- A nyitott projekt ezen felül bárkitől fogad javaslatot, aki be van jelentkezve.
Hibák
Szekció neve “Hibák”A hibák JSON-ként térnek vissza, a státusz a törzsben megismételve:
{ "message": "Forbidden", "error": "Forbidden", "statusCode": 403 }| Státusz | Jelentés |
|---|---|
400 | A kérés nem ment át az érvényesítésen |
401 | Nincs azonosító, vagy már nem jó |
403 | Hitelesítve van, de ezt nem teheti meg |
404 | Nincs ilyen objektum, vagy nincs ilyen útvonal |
409 | Az objektum nincs olyan állapotban, amely ezt megengedné — például már jóváhagyott jóváhagyása |
A kéréstörzs mérete legfeljebb 1 MB. Ennél nagyobb tartalomnál bontsa a feltöltést fájlonként.
Interaktív referencia
Szekció neve “Interaktív referencia”A generált OpenAPI-dokumentumot a /swagger-json szolgálja ki, az alkalmazás pedig a platform.ownlate.com/docs/swagger címen jeleníti meg. A futó szerverből készül, így soha nem tér el attól, ami ki van telepítve.
Végpontok
Szekció neve “Végpontok”Munkaterületek és tagok
Szekció neve “Munkaterületek és tagok”| Metódus | Útvonal |
|---|---|
GET POST | /v1/workspaces |
GET PUT | /v1/workspaces/{workspaceId} |
GET | /v1/workspaces/{workspaceId}/audit-log |
POST | /v1/workspaces/{workspaceId}/sync-word-usage |
GET | /v1/workspaces/{workspaceId}/users/me/permissions |
GET POST | /v1/workspaces/{workspaceId}/members |
DELETE | /v1/workspaces/{workspaceId}/members/{userId} |
GET | /v1/workspaces/users/lookup |
GET PUT | /v1/workspaces/levels/{level} |
GET POST | /v1/workspaces/api-keys |
DELETE | /v1/workspaces/api-keys/{keyId} |
GET | /v1/users/me |
Projektek
Szekció neve “Projektek”| Metódus | Útvonal |
|---|---|
GET POST | /v1/workspaces/{workspaceId}/projects |
GET PUT DELETE | /v1/workspaces/{workspaceId}/projects/{id} |
PUT | /v1/workspaces/{workspaceId}/projects/{id}/restore |
DELETE | /v1/workspaces/{workspaceId}/projects/{id}/permanent |
DELETE archiválja a projektet, a permanent megsemmisíti a már archiváltat.
Fájlok
Szekció neve “Fájlok”| Metódus | Útvonal |
|---|---|
GET POST | /v1/workspaces/{workspaceId}/translation-files |
POST | /v1/workspaces/{workspaceId}/translation-files/upload |
PUT DELETE | /v1/workspaces/{workspaceId}/translation-files/{id} |
POST | /v1/workspaces/{workspaceId}/translation-files/rename-folder |
POST | /v1/workspaces/{workspaceId}/translation-files/merge-duplicates |
Szegmensek és fordítások
Szekció neve “Szegmensek és fordítások”| Metódus | Útvonal |
|---|---|
GET POST | /v1/workspaces/{workspaceId}/segments |
GET DELETE | /v1/workspaces/{workspaceId}/segments/{id} |
PUT | /v1/workspaces/{workspaceId}/segments/{id}/translate |
PUT | /v1/workspaces/{workspaceId}/segments/{id}/draft |
PUT | /v1/workspaces/{workspaceId}/segments/{id}/source-text |
PUT | /v1/workspaces/{workspaceId}/segments/{id}/translations/{language}/review |
PUT | /v1/workspaces/{workspaceId}/segments/{id}/translations/{language}/approve |
PUT | /v1/workspaces/{workspaceId}/segments/{id}/translations/{language}/reject |
POST | /v1/workspaces/{workspaceId}/segments/{id}/auto-translate |
GET | /v1/workspaces/{workspaceId}/segments/{id}/qa |
POST | /v1/workspaces/{workspaceId}/segments/approve-all |
POST | /v1/workspaces/{workspaceId}/segments/reject-all |
POST | /v1/workspaces/{workspaceId}/segments/pre-translate |
GET | /v1/workspaces/{workspaceId}/segments/progress |
GET | /v1/workspaces/{workspaceId}/segments/analytics |
GET | /v1/workspaces/{workspaceId}/segments/by-keys |
GET | /v1/workspaces/{workspaceId}/segments/translation-memory |
GET | /v1/workspaces/{workspaceId}/segments/export |
GET | /v1/workspaces/{workspaceId}/segments/export-zip |
Szójegyzék, hozzászólások és előzmények
Szekció neve “Szójegyzék, hozzászólások és előzmények”| Metódus | Útvonal |
|---|---|
GET POST | /v1/workspaces/{workspaceId}/glossary |
PUT DELETE | /v1/workspaces/{workspaceId}/glossary/{id} |
GET | /v1/workspaces/{workspaceId}/glossary/matches |
GET POST | /v1/workspaces/{workspaceId}/comments |
DELETE | /v1/workspaces/{workspaceId}/comments/{id} |
GET | /v1/workspaces/{workspaceId}/translation-history/{segmentId} |
Kiadások és terjesztés
Szekció neve “Kiadások és terjesztés”| Metódus | Útvonal |
|---|---|
GET POST | /v1/workspaces/{workspaceId}/releases |
DELETE | /v1/workspaces/{workspaceId}/releases/{id} |
GET | /v1/workspaces/{workspaceId}/releases/distribution |
POST | /v1/workspaces/{workspaceId}/releases/distribution/regenerate |
Integrációk
Szekció neve “Integrációk”| Metódus | Útvonal |
|---|---|
POST | /v1/workspaces/{workspaceId}/integrations |
GET | /v1/workspaces/{workspaceId}/integrations/by-project/{projectId} |
GET PUT DELETE | /v1/workspaces/{workspaceId}/integrations/{id} |
PATCH | /v1/workspaces/{workspaceId}/integrations/{id}/activate |
PATCH | /v1/workspaces/{workspaceId}/integrations/{id}/pause |
PATCH | /v1/workspaces/{workspaceId}/integrations/{id}/sync |
PATCH | /v1/workspaces/{workspaceId}/integrations/{id}/test |
POST | /v1/workspaces/{workspaceId}/integrations/test-direct |
POST | /v1/workspaces/{workspaceId}/integrations/{id}/create-pr |
Csomagok és számlázás
Szekció neve “Csomagok és számlázás”| Metódus | Útvonal |
|---|---|
GET | /v1/plans |
GET | /v1/payment/providers |
GET | /v1/workspaces/{workspaceId}/subscription |
PUT | /v1/workspaces/{workspaceId}/subscription/plan |
POST | /v1/workspaces/{workspaceId}/subscription/checkout |
POST | /v1/workspaces/{workspaceId}/subscription/portal |
Nyelvek
Szekció neve “Nyelvek”| Metódus | Útvonal |
|---|---|
GET POST | /v1/languages |
DELETE | /v1/languages/{code} |
Nyilvános végpontok
Szekció neve “Nyilvános végpontok”Ezekhez semmilyen azonosító nem kell. Nyilvános projekteket és OTA-terjesztéseket szolgálnak ki.
| Metódus | Útvonal | Mit ad vissza |
|---|---|---|
GET | /public/v1/projects | Egy munkaterület nyilvános projektjei |
GET | /public/v1/projects/{id} | Egy nyilvános projekt |
GET | /public/v1/segments/progress | Egy nyilvános projekt haladása |
GET | /public/v1/segments/translations-map | Egy nyilvános projekt összes fordítása, fájl és nyelv szerint csoportosítva |
GET | /public/v1/ota/{accessKey}/manifest | A legutóbbi kiadás verziója és nyelvei |
GET | /public/v1/ota/{accessKey}/bundles | Csomag minden nyelvhez |
GET | /public/v1/ota/{accessKey}/bundles/{language} | Csomag egy nyelvhez |
GET | /public/v1/plans | Csomagok árakkal |
GET | /public/v1/workspaces/{workspaceId} | Nyilvános munkaterület-adatok |
The SDK endpoints — /public/v1/sdk/segments and /public/v1/sdk/segments/{id}/translations/{lang} — need an SDK token rather than an API key. See SDK and clients.
Az SDK-végpontokhoz — /public/v1/sdk/segments és /public/v1/sdk/segments/{id}/translations/{lang} — SDK-token kell, nem API-kulcs. Lásd: SDK és kliensek.
GraphQL
Szekció neve “GraphQL”A POST /graphql ugyanazokat a műveleteket hordozza, amelyeket a webalkalmazás használ, és ez több, mint amit a REST kifelé ad: meghívók, feladatok, javaslatok, értesítések, QA-szabályok, SDK-tokenek, fordításimemória-bejegyzések és az elemzési lekérdezések.
curl -X POST https://api.ownlate.com/graphql \ -H "Authorization: Bearer $OWNLATE_API_KEY" \ -H 'Content-Type: application/json' \ -d '{"query":"query($id:ID!){ project(id:$id){ name progress { language progress } } }","variables":{"id":"…"}}'Két dolgot érdemes tudni, mielőtt klienst irányítana rá:
- A tartalomtípus számít. Az a kérés, amely úgy néz ki, mintha HTML-űrlapból jöhetett volna —
application/x-www-form-urlencoded,multipart/form-datavagytext/plain—, lehetséges cross-site kérésként elutasításra kerül, hacsak meg nem nevez egy műveletet azx-apollo-operation-namefejlécben. Küldjönapplication/jsontípust, és a kérdés fel sem merül. - A jogosultság az argumentumokból dől el. Adja át a
workspaceIdértéket ott, ahol a séma kéri, azinputobjektumokon belül is; az a mutáció, amely kihagyja, nem hitelesíthető.