Zero-knowledge DevOps-шлюз. Ниже — подробное руководство как взаимодействовать, затем интерактивный справочник Swagger (можно вызывать endpoint'ы прямо со страницы).
application/octet-stream отдаёт зашифрованные байты; JSON-endpoint'ы — это только метаданные (счётчики, статусы, идентификаторы).https://gitwave.ru/v1.200/201 — ок, 401 — нет/неверный токен, 404 — нет репо/ресурса, 409 — репозиторий уже существует.Каждый запрос к /v1/* требует заголовок Authorization: Bearer <jwt>. Токен — подписанный OIDC JWT (ES256). Получить его можно двумя способами:
Локальный агент Aris Drive выдаёт токен без ручного ввода:
# получить токен TOKEN=$(curl -s https://gitwave.ru/aris-drive/agent/session | jq -r .token) # использовать его curl -s https://gitwave.ru/v1/repos -H "authorization: Bearer $TOKEN"
Откройте /aris-id/authorize?redirect_uri=https://gitwave.ru/app&state=gw. После согласия произойдёт редирект на redirect_uri#access_token=<jwt> — токен во фрагменте URL.
sub (пользователь), company_id, device_id, roles (например developer), scopes (repo.read, repo.write). Сервер проверяет подпись и issuer; срок жизни ограничен.export URL=https://gitwave.ru TOKEN=$(curl -s $URL/aris-drive/agent/session | jq -r .token) # список репозиториев (метаданные) curl -s $URL/v1/repos -H "authorization: Bearer $TOKEN" | jq # создать репозиторий curl -s -X POST $URL/v1/repos -H "authorization: Bearer $TOKEN" \ -H "content-type: application/json" -d '{"repo_id":"payments"}'
На практике всю криптографию делает CLI/приложение (gitwave init, gitwave commit). Ниже — что при этом происходит на уровне API, чтобы вы могли встроиться сами.
/v1/repos — создать репозиторий./v1/repos/{repo}/epochs/0 — положить обёрнутый ключ репозитория (эпоха 0). Клиент генерирует RepoKey и оборачивает его под устройство (ECDH P-256)./v1/repos/{repo}/devices/{device_id} — подписанное одобрение устройства (цепочка доверия)./v1/repos/{repo}/objects/{oid} — для каждого git-объекта: зашифровать локально (AES-256-GCM) и загрузить шифротекст./v1/repos/{repo}/refs/main — указать ветку на oid нового коммита./v1/repos/{repo}/objects — выгрузить карту oid → hex(шифротекст)./aris-drive/agent/keys/{repo} — получить device-ключ (hex).# пример: объект приходит шифротекстом curl -s $URL/v1/repos/demo/objects/04163b25 -H "authorization: Bearer $TOKEN" | xxd | head # 96c9b846 a756217b 0f0063f7 ... ← сервер видит только это
| Endpoint | Тело | Сервер читает? |
|---|---|---|
/v1/repos/{r}/objects/{oid} | шифротекст | нет |
/v1/repos/{r}/epochs/{n} | обёрнутый ключ | нет |
/v1/repos/{r}/devices/{id} | подписанное одобрение | нет |
/v1/repos/{r}/refs/{name} | oid коммита | да (метаданные) |
/v1/repos, /issues, /docs, /runs | JSON-метаданные | да (метаданные) |
/v1/repos/{r}/runs/{commit} — раннер шлёт только {"ok":true|false}. Логи остаются у вас./v1/repos/{r}/monitor/errors — прод-ошибка {commit, fingerprint, title}. Первая → авто-issue, повторы → инкремент count. Стек-трейс шифруется рантаймом и сюда не уходит./v1/repos/{r}/issues {title, commit?} · GET список · POST /issues/{id}/close./v1/repos/{r}/docs {title, kind, link?} — привязать ТЗ/договор из ArisDoc (kind: spec/contract/proposal/note).