Recoverable Web 0.6.1 · EOC 0.27.0
Интеграционный контракт для объектов, доступа и аудита
EOC v0.27.0 объединяет ingest, проверку, evidence, объектную модель, Storage Provider и контекст безопасности. Публичный gateway добавляет стабильный API v1 для проверки и интеграционных workflows; внутренние EOC-маршруты остаются закрыты.
Recoverable EOC · Public API v1Открыть техническую документацию EOC →
Integration surface · EOC v0.27.0
8 групп Integration API под одним объектным контрактом
Публичный registry содержит 17 public operations `/v1`, из которых 15 требуют аутентификацию, и 8 integration-маршрутов. Контракт учитывает 6 ролей и 9 scopes. Сервис разделяет команды и чтение состояния: ingest, jobs, objects, revisions, events, reverify, webhooks и webhook deliveries. Доступ задают scopes; API keys и user principals привязаны к tenantId и projectId.
POST /v1/integration/ingest
GET /v1/integration/jobs/:jobId
GET /v1/integration/objects/:objectId
GET /v1/integration/objects/:objectId/revisions/:revision
GET /v1/integration/events
POST /v1/integration/reverify
GET /v1/integration/webhooks
GET /v1/integration/webhook-deliveriesПубличная граница — https://api.recoverable.ru/v1. Передайте ровно один credential: X-EOC-API-Key или Authorization: Bearer <OIDC JWT>. Внутренний /api/integration не является клиентским API; gateway проверяет scope, tenant/project context, лимиты и безопасную проекцию ответа.
PostgreSQL
В non-production интеграции объекты, ревизии, jobs, события, idempotency и webhook records проходят через tenant/project-aware repository. Интеграционный smoke дважды подтвердил сохранение и изоляцию контекста.
S3-совместимое хранилище
Adapter проверяет SHA-256, безопасность object key, повторную запись и namespace tenant/project. Live preflight с S3-совместимым сервером прошёл полный put/head/get/delete цикл; это ещё не подтверждение production rollout.
Публичная документация и OpenAPI доступны без регистрации. Для технического доступа откройте личный кабинет, войдите по одноразовому коду на email, создайте проект и выпустите API-ключ с нужными scopes.
По умолчанию действует 60 запросов в минуту на principal, до 4 одновременных операций и очередь до 64 запросов; превышение лимита возвращает 429, заполненная очередь — 503, payload свыше 64 MiB — 413. Записывающие операции требуют Idempotency-Key: повтор идентичного запроса безопасно воспроизводит результат, несовпадение даёт 409. Решения — ALLOW, WARN, REJECT, QUARANTINE; job — COMPLETED или FAILED. Event ledger фиксирует ingest, verification, evidence, storage и policy decision. Webhook delivery — at-least-once: проверяйте подпись, сохраняйте eventId и обрабатывайте повторы. Chunked upload/download не являются маршрутами этого публичного контракта.
Operation surface
Выберите задачу — получите точный набор маршрутов
Группы помогают ориентироваться, но не смешивают разные request/response contracts. HTTP status и содержательный verification result обрабатываются отдельно.
Проверить объект
Инспекция показывает структуру, но не заменяет решение проверки. Восстановление начинается только после положительного результата.
POST /api/check
POST /api/inspect
POST /api/extract-payload
POST /api/check
Content-Type: multipart/form-data
file=@object.eoc
Сформировать объект
Новая ревизия формируется как полный согласованный набор FP, ED и R, а не заменой одного компонента.
POST /api/pack-v2
POST /api/adapters/build-spec
POST /api/adapters/pack
POST /api/pack-v2
Content-Type: multipart/form-data
fixedRepresentation=@result.bin
payloads=@editable-state.bin
metadata={...}
Восстановить состояние
Restore возвращает допустимое редактируемое состояние; список adapter descriptors читается из фактического ответа сервиса.
POST /api/restore
GET /api/adapters
Получить evidence
Evidence, report, signature и provenance остаются отдельными операциями с собственными фактическими ответами.
POST /api/evidence-v1
POST /api/evidence-v1/report
POST /api/signature/verify
POST /api/provenance
Adapter rules
Адаптер следует за проверкой
Adapter связывает проверенное ED с прикладной средой, но не обходит verification gate. Если revision consistency не подтверждена, он не должен подставлять похожий файл или игнорировать mismatch. Точный набор adapter IDs и поддерживаемых payloads читается из ответа сервиса.
Restore gating
Читаемый файл ещё не означает допустимый restore
Клиент различает локальную целостность и согласованность ревизии. FP из одного объекта нельзя соединять с ED из другого по имени или дате. Отрицательный verification result сохраняет fail-closed семантику.
Error taxonomy
Transport, формат и решение проверки — разные статусы
Отсутствие соединения, HTTP 4xx/5xx, невалидный входной формат и отрицательный содержательный результат отображаются раздельно. Бинарные ответы читаются с учётом фактического Content-Type; HTTP 200 сам по себе не разрешает restore.
Contract versioning
Web и EOC имеют независимые версии
Публичный gateway отвечает как Recoverable Web 0.6.1, а поле upstream в локальной deep health подтверждает EOC 0.27.0. Клиент должен проверять нужную identity, а не смешивать версии двух сервисов.
{
"ok": true,
"service": "recoverable-web",
"version": "0.6.1",
"upstream": {
"status": 200,
"body": { "version": "0.27.0" }
}
}Публичная граница проходит по HTTP API. Внутренние process ports, deployment scripts и server topology не являются частью продуктового контракта.
