Files
mdm-ordinis/docs/index.md
T
Zimin A.N. b601c4636f feat(swagger): OAuth2/Keycloak PKCE flow в Swagger UI + docs links
OpenApiConfig:
- Добавлена OAuth2 security scheme (authorization_code flow с Keycloak
  realm `nstart`). Auth/token URLs из ordinis.openapi.oauth.issuer-uri
  configuration property (default: auth.nstart.space/realms/nstart).
- BearerAuth scheme сохранён secondary — для pre-issued tokens из CI/scripts.
- Servers list переупорядочен — prod первый, staging второй.
- Description обновлён с pointer на /docs/ для full integration guide.

application.yml:
- springdoc.swagger-ui.oauth: client-id (env override), use-pkce-with-
  authorization-code-grant=true. Public client `ordinis-swagger`
  настраивается отдельно в Keycloak — see keycloak-setup-swagger-client.md
  в ordinis-infra repo.
- ORDINIS_OPENAPI_OAUTH_ISSUER_URI env var для override realm на разных
  окружениях.

docs/integration/api/read-endpoints.md:
- Swagger UI section обновлён: акцент на Authorize button + Keycloak
  PKCE login (no client_secret needed), tip про bearerAuth fallback.

docs/index.md:
- Добавлен tab "Я хочу пощупать API" с link на Swagger UI.

После deploy:
- https://ordinis.k8s.264.nstart.cloud/swagger-ui.html  — Swagger UI
- https://ordinis.k8s.264.nstart.cloud/v3/api-docs      — OpenAPI spec
Authorize → выбрать oauth2 → Keycloak login (PKCE) → Try it out с JWT.
2026-05-08 00:08:29 +03:00

67 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ordinis НСИ ЦУОД ОДХ — Integrator Guide
Документация для команд, интегрирующих свои сервисы с Ordinis НСИ ЦУОД.
Сюда не входят operator runbooks и архитектурные deep-dives — те материалы
во внутренней документации проекта.
**Anchor v1 — production LIVE на cluster.142** (с 2026-05-07).
Альтум consumers подключены, blue/green cutover завершён.
## Что внутри
{% list tabs %}
- Я интегрирую свой сервис
Начни с [обзора API](integration/api/index.md) и [авторизации](integration/api/auth.md).
Дальше:
- [Read-side endpoints](integration/api/read-endpoints.md) — как читать справочники
- [События (Kafka outbox)](integration/api/events.md) — топики `ordinis.cuod.events.*`
- [Webhooks](integration/api/webhooks.md) — push-уведомления вместо polling
- [Кэширование](integration/api/caching.md) — TTL / push / snapshot стратегии
- Я строю UI / клиент
- [Cross-references](integration/api/x-references.md) — FK между справочниками
- [Bitemporal](integration/api/bitemporal.md) — `validFrom` / `validTo` + история
- [Bundle cuod](integration/api/bundle-cuod.md) — список 40 справочников ЦУОД
- [Best practices](integration/api/best-practices.md) — частые ошибки
- Я обрабатываю ошибки
- [Ошибки и rate limits](integration/api/errors.md) — error codes, retry strategy
- [Лучшие практики](integration/api/best-practices.md) — robust integration
- Я хочу пощупать API
Открой [Swagger UI](https://ordinis.k8s.264.nstart.cloud/swagger-ui.html) —
там можно нажать **Authorize** → войти через Keycloak (PKCE, без secret) →
и сразу делать "Try it out" с реальным JWT. Authorization, error codes,
schemas — всё через interactive UI.
{% endlist %}
## Среды
| Среда | URL | Auth | Назначение |
|---|---|---|---|
| **prod** | `https://ordinis.k8s.264.nstart.cloud/` | JWT обязателен | Real users |
| staging | `https://ordinis.k8s.265.nstart.cloud/` | optional (legacy mode) | Dev environment |
| local | `http://localhost:8080` | off | docker-compose dev |
## Поддержка
- Запросы новых ролей / scope в Keycloak: `zimin.an@nstart.space`
- Bug reports / feature requests: через issue tracker (запросить URL у Ordinis team)
## Версионирование
API стабилизирован под v1 — breaking changes только через major bump (`v2`). См.
[Best practices](integration/api/best-practices.md) для рекомендаций по
обработке появления новых полей в v1 (forward compatibility).
Bundle справочников ЦУОД versioned отдельно (`cuod-bundle:1.2.1`). Изменение
schemas — minor bump, добавление словарей — minor bump, удаление — major bump
(никогда без уведомления consumers через `record.closed` events).