Tovább a tartalomhoz

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

AzonosítóHogy néz kiMire való
API-kulcsown_…Szerver-szerver hívások, CI, szkriptek
SDK-tokensdk_…A böngésző-SDK, egyetlen projekthez
OAuth hozzáférési tokenátlátszatlanAz MCP-kiszolgáló és külső alkalmazások
Munkamenet-sütiA webalkalmazás a böngészőjében

A kulcsot bearer tokenként adja át:

Terminál
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.

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.

A hibák JSON-ként térnek vissza, a státusz a törzsben megismételve:

{ "message": "Forbidden", "error": "Forbidden", "statusCode": 403 }
StátuszJelentés
400A kérés nem ment át az érvényesítésen
401Nincs azonosító, vagy már nem jó
403Hitelesítve van, de ezt nem teheti meg
404Nincs ilyen objektum, vagy nincs ilyen útvonal
409Az 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.

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.

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
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.

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
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}
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
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
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
MetódusÚtvonal
GET POST/v1/languages
DELETE/v1/languages/{code}

Ezekhez semmilyen azonosító nem kell. Nyilvános projekteket és OTA-terjesztéseket szolgálnak ki.

MetódusÚtvonalMit ad vissza
GET/public/v1/projectsEgy munkaterület nyilvános projektjei
GET/public/v1/projects/{id}Egy nyilvános projekt
GET/public/v1/segments/progressEgy nyilvános projekt haladása
GET/public/v1/segments/translations-mapEgy nyilvános projekt összes fordítása, fájl és nyelv szerint csoportosítva
GET/public/v1/ota/{accessKey}/manifestA legutóbbi kiadás verziója és nyelvei
GET/public/v1/ota/{accessKey}/bundlesCsomag minden nyelvhez
GET/public/v1/ota/{accessKey}/bundles/{language}Csomag egy nyelvhez
GET/public/v1/plansCsomagok á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.

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.

Terminál
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-data vagy text/plain —, lehetséges cross-site kérésként elutasításra kerül, hacsak meg nem nevez egy műveletet az x-apollo-operation-name fejlécben. Küldjön application/json tí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, az input objektumokon belül is; az a mutáció, amely kihagyja, nem hitelesíthető.