INTEGRITY Dokumentace

Referenční dokumentace HTTP API

Tato stránka dokumentuje všechny trasy, které zpřístupňuje sandbox bridge na stabilní šabloně.

Ověřování

Všechny routes pod /v1/sandbox/* a /v1/openapi.* vyžadují Bearer token:

Authorization: Bearer <SANDBOX_API_KEY>

Když SANDBOX_API_KEY není nastaven, autentizace se kvůli pohodlí při lokálním vývoji přeskočí. Před nasazením do produkce vždy nastavte tajnou hodnotu.

Schéma OpenAPI

Bridge poskytuje vlastní dokumentaci API:

Metoda Trasa Popis
GET /v1/openapi.json Strojově čitelné schéma OpenAPI 3.1.
GET /v1/openapi Interaktivní dokumentace v HTML.

Obě trasy přijímají ověření pomocí hlavičky Bearer nebo ?token= parametr dotazu.

Při lokálním spuštění s npm run dev, otevřete http://localhost:8787/v1/openapi ve vašem prohlížeči a interaktivně prozkoumejte všechny koncové body.

Životní cyklus sandboxu

Metoda Trasa Popis
POST /v1/sandbox Vytvoří nový sandbox. Vrátí {"id": "<sandbox-id>"}.
DELETE /v1/sandbox/:id Zničí kontejner sandboxu. Vrátí 204.
GET /v1/sandbox/:id/running Zkontrolujte dostupnost kontejneru. Vrací {"running": true|false}.

Spouštění příkazů

Metoda Trasa Popis
POST /v1/sandbox/:id/exec Spustí příkaz. Odpověď je SSE stream (viz níže).

/exec endpoint přijímá tělo požadavku ve formátu JSON:

{
  "argv": ["sh", "-lc", "echo hello"],
  "timeout_ms": 10000,
  "cwd": "/workspace"
}

Escapování argv

Každý prvek argv pole je escapováno pomocí ANSI-C $'...' uvozovky, než se spojí do příkazu shellu. Tokeny, které obsahují pouze bezpečné znaky (A-Za-z0-9@%+=:,./-) se předávají beze změny. Všechny ostatní tokeny jsou obaleny do $'...' s escapovanými zpětnými lomítky, jednoduchými uvozovkami, znaky nového řádku, znaky návratu na začátek řádku a tabulátory. Tím se zabraňuje shell injection a zároveň zůstávají zachovány argumenty obsahující mezery, uvozovky nebo speciální znaky.

Formát odpovědi SSE

Odpověď je text/event-stream s následujícími typy událostí:

Událost Data Popis
stdout Blok zakódovaný v Base64 Standardní výstup příkazu.
stderr Blok zakódovaný v Base64 Standardní chybový výstup příkazu.
exit {"exit_code": N} Příkaz dokončen. Terminálová událost.
error {"error": "…", "code": "…"} Příkaz selhal. Terminálová událost.

Operace se soubory

Metoda Trasa Popis
GET /v1/sandbox/:id/file/* Přečtěte soubor. Vrací nezpracované bajty (application/octet-stream).
PUT /v1/sandbox/:id/file/* Zapíše soubor. Tělo požadavku obsahuje surová bajtová data. Vrací {"ok": true}. Maximálně 32 MiB.

Cesta k souboru je zakódovaná v URL za /file/. Všechny cesty se musí přeložit v rámci /workspace. Pokusy o path traversal (například ../../etc/passwd) jsou odmítnuty.

Perzistence pracovního prostoru

Metoda Trasa Popis
POST /v1/sandbox/:id/persist Serializujte /workspace do archivu tar. Vrátí surová data tar archivu jako bajty.
POST /v1/sandbox/:id/hydrate Naplňte /workspace z tar archivu odeslaného jako tělo požadavku.

/persist endpoint přijímá volitelný excludes parametr dotazu, seznam relativních cest oddělených čárkami, které se z archivu vyloučí.

/hydrate endpoint přijímá nezpracovaný tar payload o velikosti až 32 MiB.

Připojení bucketů

Metoda Trasa Popis
POST /v1/sandbox/:id/mount Připojte bucket kompatibilní s S3 jako lokální adresář.
POST /v1/sandbox/:id/unmount Odpojte dříve připojený bucket.

/mount endpoint přijímá tělo požadavku ve formátu JSON. Podporovány jsou dva postupy:

Mounty R2 bindingu

Vynechte endpoint a předejte název R2 bindingu Workeru v bucket:

{
  "bucket": "MY_BUCKET",
  "mountPath": "/mnt/data",
  "options": {
    "readOnly": false,
    "prefix": "/subdir"
  }
}

Když options.endpoint je vynechán, bucket znamená název vazby R2 ve Workeru.

Pro explicitní připojení koncového bodu kompatibilního s S3 přidejte endpoint a volitelně credentials:

{
  "bucket": "my-r2-bucket",
  "mountPath": "/mnt/data",
  "options": {
    "endpoint": "https://ACCOUNT_ID.r2.cloudflarestorage.com",
    "readOnly": false,
    "prefix": "/subdir",
    "credentials": {
      "accessKeyId": "...",
      "secretAccessKey": "..."
    }
  }
}

Když endpoint je zadán, bucket znamená název vzdáleného bucketu. Přihlašovací údaje jsou volitelné pouze v tomto režimu: bridge je automaticky rozpozná ze secrets Workeru (R2_ACCESS_KEY_ID / R2_SECRET_ACCESS_KEY nebo AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY) pokud není uvedeno.

Relace

Metoda Trasa Popis
POST /v1/sandbox/:id/session Vytvoří relaci. Vrátí {"id": "<session-id>"}.
DELETE /v1/sandbox/:id/session/:sid Odstraní relaci. Vrací 204.

Relace v rámci sandboxu izolují pracovní adresář, proměnné prostředí a stav spouštění příkazů. Předejte Session-Id hlavičku na /exec, /file/*, a /pty požadavky, aby byly omezeny na danou relaci.

Pokud není Session-Id hlavička je poskytnuta, požadavky používají implicitní režim provádění sandboxu. Ve výchozím nastavení jde o výchozí relaci, ale SDK nakonfigurovaná s enableDefaultSession: false tyto implicitní operace spouštějte místo toho bez relace.

Terminál (PTY)

Metoda Trasa Popis
GET /v1/sandbox/:id/pty Přechod na relaci PTY přes WebSocket.

Parametry dotazu:

Parametr Typ Výchozí Popis
cols number 80 Šířka terminálu ve sloupcích.
rows number 24 Výška terminálu v řádcích.
shell string , Binární soubor shellu (například /bin/bash).
session string , ID relace pro PTY vázané na relaci.

WebSocket přenáší binární rámce pro vstup a výstup terminálu a textové rámce JSON pro řídicí zprávy:

Směr Typ rámce Obsah
Klient na server Binární Stisky kláves kódované v UTF-8.
Ze serveru ke klientovi Binární Výstup terminálu včetně únikových sekvencí ANSI.
Klient na server Text (JSON) Řídicí zprávy (například {"type": "resize", "cols": 120, "rows": 30}).
Ze serveru ke klientovi Text (JSON) Stavové zprávy (ready, exit, error).

Zahřátý fond

Metoda Trasa Popis
GET /v1/pool/stats Aktuální statistiky poolu.
POST /v1/pool/prime Spusťte smyčku alarmu pro warm pool.
POST /v1/pool/shutdown-prewarmed Zastavte všechny nečinné warm kontejnery.

Warm pool předem spouští kontejnery sandboxu, takže nové relace naběhnou okamžitě. Nakonfigurujete ho pomocí proměnných prostředí v wrangler.jsonc:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "vars": {
    "WARM_POOL_TARGET": "3",
    "WARM_POOL_REFRESH_INTERVAL": "10000"
  }
}
[vars]
WARM_POOL_TARGET = "3"           # Number of idle containers to keep warm (0 = disabled)
WARM_POOL_REFRESH_INTERVAL = "10000"  # Health-check interval in milliseconds

Cron trigger (* * * * *) po nasazení automaticky předehřeje fond. Nastavte WARM_POOL_TARGET na "0" (výchozí hodnota), aby se fond deaktivoval a předešlo se neočekávaným nákladům.

Kontrola stavu

Metoda Trasa Popis
GET /health Neautentizovaná kontrola stavu (liveness probe). Vrací {"ok": true}.