START · LOCAL · ZERO EXTERNAL CALLS

Первый проверяемый запрос

Поднимите Local-контур, проверьте readiness и выполните один tenant-bound запрос. Результат фиксирует decision и evidence, но не вызывает провайдера и не перемещает деньги или активы.

Граница выполнения
LOCAL · NON_PRODUCTION_TEST_ONLY
Local API и deterministic evidence
РЕАЛИЗОВАНО
Контракты и исходные файлы

OpenAPI, схемы и примеры для скачивания.

До запуска

Quickstart рассчитан на локальный checkout репозитория CertaRail.

  • Docker Compose и локальный порт 8080 доступны только разработчику.
  • Используются синтетические данные и заменяемый local credential.
  • Provider, payment, custody, blockchain и regulator egress остаются отключены.
Это не production activation
Успешный Local-ответ доказывает поведение локального control plane. Он не доказывает подключение IdP, провайдера, внешнего Kafka или HTTPS webhook delivery.

Пять шагов до evidence

  1. Поднимите Local-контур

    Используйте Compose-профиль репозитория без production secrets и реальных данных.

  2. Проверьте /readyz

    Продолжайте только после ответа ready от authoritative decision store.

  3. Передайте server-bound bearer

    Tenant выводится сервером из credential; конфликтующий tenant отклоняется.

  4. Зафиксируйте Idempotency-Key

    Сохраните один key вместе с неизменным canonical payload до получения однозначного результата.

  5. Прочитайте decision и receipt

    Проверяйте reason codes, replay headers и safety fields, не выводите execution из статуса APPROVED.

Запрос eligibility

Пример использует только synthetic references и тестовую сумму.

POST /v1/eligibility/evaluationsbash
curl -X POST http://localhost:8080/v1/eligibility/evaluations \
  -H "Authorization: Bearer <sandbox-bearer>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: bank-order-000001" \
  -d '{
    "request_id": "bank-order-000001",
    "tenant_id": "sandbox-bank",
    "facts_observed_at": "2026-08-24T18:20:00Z",
    "operation": "BUY",
    "asset_code": "DEMO-BTC",
    "amount": { "currency": "RUB", "minor_units": 25000000 },
    "client": {
      "subject_ref": "cust_7fd2",
      "facts_version": "kyc-443",
      "residency": "RU",
      "investor_category": "RETAIL",
      "kyc_status": "VERIFIED",
      "screening_status": "CLEAR",
      "knowledge_test": {
        "passed": true,
        "passed_at": "2026-08-01T00:00:00Z",
        "valid_until": "2027-08-01T00:00:00Z"
      },
      "risk_disclosure": {
        "accepted": true,
        "version": "sandbox-risk-v1",
        "accepted_at": "2026-08-24T18:15:00Z"
      },
      "annual_volume": { "currency": "RUB", "minor_units": 10000000 }
    },
    "intermediary": { "kind": "BROKER", "regulated": true }
  }'

Что проверить после ответа

  • Повтор с тем же key и тем же payload возвращает committed result.
  • Тот же key с изменённым payload завершается конфликтом 409.
  • Safety metadata сохраняет external calls = 0 и non-monetary boundary.

Нашли неточность?

Участники private repository могут предложить правку через reviewed pull request. Остальные пользователи — отправить техническое сообщение без credentials и чувствительных данных.