SDK SUITE · 0.1.0 SOURCE RELEASES

SDK и клиентская интеграция

В source tree доступны initial TypeScript @certrail/sdk 0.1.0, Python certrail 0.1.0 и Go SDK 0.1.0 для OpenAPI 0.29.0, а также три independently runnable sample roots для decision replay, webhook verification и event consumption. Публичные npm/PyPI/Go module-дистрибуции и отдельные remote repositories этим фактом не подтверждены.

Граница выполнения
LOCAL SOURCE PACKAGES · PUBLIC DISTRIBUTION NOT ACTIVATED
TypeScript, Python и Go SDK 0.1.0 source packages
ТРЕБУЕТ АКТИВАЦИИ
Контракты и исходные файлы

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

Что вошло в SDK suite

  1. Выберите client strategy

    TypeScript использует CertaRailClient; Python предоставляет CertaRail и native AsyncCertaRail; Go принимает context.Context в каждой network operation. Все клиенты по умолчанию используют подтверждённый loopback Local sandbox URL, bearer provider и 10-секундный timeout на попытку.

  2. Вызовите нужный ресурс

    decisions, movements и evidence имеют typed request/response contracts и сохраняют response metadata.

  3. Сохраните command identity

    Request ID, Idempotency-Key и JSON bytes не меняются между bounded retry attempts; 409 никогда не скрывается automatic retry.

  4. Проверяйте webhook локально

    webhooks.verify() принимает raw bytes, проверяет body digest, UTC microseconds, replay window и HMAC-SHA256 без network call.

Decision examples

Initial SDK suite 0.1.0typescript
import { CertaRailClient } from '@certrail/sdk';

const client = new CertaRailClient({
  accessToken: () => process.env.CERTARAIL_API_KEY!,
});

const result = await client.decisions.create(request, {
  requestId: 'integration-run-42',
  idempotencyKey: 'decision-command-42',
});

console.log(result.data.decision.outcome, result.requestId);

Три runnable sample repository roots

Каждый каталог содержит собственный manifest, lockfile, README, fixture mode и проверки. Команды запускаются без правки source code; samples/smoke дополнительно связывает TypeScript и Go entrypoints с реальным Python receiver path в hermetic HTTP smoke с replay, webhook HMAC и удалением временного credential.

Runnable sample suite
Repository rootПроверяемый путьDefault boundary
samples/decision-replay-evidenceDecision → exact replay → тот же audit receiptIn-process synthetic Fetch; live sandbox opt-in
samples/webhook-verificationRaw bytes → HMAC → SQLite Inbox → duplicateEphemeral loopback; external HTTPS не заявлен
samples/event-consumerAsyncAPI headers/payload → durable Inbox → offset commitNDJSON fixture; Local Kafka opt-in
Credential-free README pathsbash
cd samples/decision-replay-evidence
npm run setup && npm run demo

cd ../webhook-verification
uv sync --locked && uv run webhook-demo

cd ../event-consumer
go mod download && go run . --source fixture

cd ../..
uv run --project samples/webhook-verification python samples/smoke/run.py
Source roots, не опубликованные remote repositories
Каталоги находятся в одном review/security boundary монорепозитория. Их публикация, package registry releases, Hosted credentials и production activation остаются отдельными owner-approved действиями.

Reliability и security boundary

  • TypeScript strict types/runtime tests/npm pack, Python PEP 561/mypy/runtime tests/wheel/sdist/twine и Go test/race/vet/example builds входят в отдельные CI gates.
  • Commit/release smoke поднимает ephemeral loopback fixture, выполняет три sample path и отдельным always-postcondition проверяет credential cleanup receipt.
  • TypeScript и Go не имеют runtime dependencies; Python использует один fully typed HTTP stack и фиксирует полный development graph в uv.lock.
  • Не логировать bearer, checkout token, raw restricted payload или signing material.
  • Не генерировать новый idempotency key после неоднозначного timeout.
  • Автоматически повторяются только bounded retry statuses и transport failures; mutation требует стабильный key, Retry-After ограничен сверху.
  • Успешный HMAC не доказывает settlement, execution, внешнюю доставку или legal effect; consumer отдельно deduplicate event_id.

Source release и distribution gate

SDK release gates
GateТекущий evidence
Versioning0.1.0, SemVer policy, package/OpenAPI constants и changelog
SecurityRaw-body HMAC verifier, bounded payload, minimal dependency surface и secret-handling notes
ReliabilityType contract, retry/idempotency/timeout/error tests и stable request identity
DistributionЛокальные npm pack, Python wheel/sdist и Go module checks выполняются; npm/PyPI publish, sdk/go/v0.1.0 tag, provenance attestation и owner approval не выполнены
SupportREADME и release notes есть; production support/deprecation SLA требует owner approval

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

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