Dokumentacja API

Dokumentacja API: przegląd

Platforma DataFlow AI udostępnia mikroserwisowe API REST poprzedzone pojedynczą API Gateway. Każde żądanie klienta wchodzi przez bramę, która uwierzytelnia JWT, stosuje ograniczanie liczby żądań per-trasa, dołącza identyfikator korelacji i przezroczyście przekazuje wywołanie do usługi backendowej będącej właścicielem prefiksu trasy.


Bazowe adresy URL

Cały ruch klientów powinien być kierowany do bramy. Usługi backendowe są również osiągalne bezpośrednio w lokalnym developmencie na potrzeby debugowania.

ŚrodowiskoBazowy adres URL
Produkcja (brama)https://api.dataflow.polkomtel.pl
Lokalna bramahttp://localhost:8080
Lokalne metadata (bezpośrednio)http://localhost:8081/api/v1
Lokalny pipeline-engine (bezpośrednio)http://localhost:8082/api/v1
Lokalny lineage (bezpośrednio)http://localhost:8084/api/v1
Lokalny monitor (bezpośrednio)http://localhost:8085/api/v1

Każda usługa backendowa publikuje także serwer produkcyjny https://api.dataflow.polkomtel.pl/api/v1 — czyli ścieżkę, do której docierasz przez bramę. Każdy funkcjonalny punkt końcowy ma prefiks /api/v1.

Korzystaj z bramy

W produkcji zawsze wywołuj bramę. Bezpośrednie porty usług są chronione zaporą i przeznaczone wyłącznie do lokalnego developmentu. To brama dodaje egzekwowanie uwierzytelniania, ograniczanie liczby żądań oraz udokumentowane poniżej nagłówki korelacji.


Usługi i porty

Platforma jest zbudowana z pięciu usług specyfikowanych w OpenAPI plus trzech usług dostępnych tylko przez proxy. Wszystkie specyfikacje deklarują openapi: 3.1.0 oraz info.version: 1.0.0.

UsługaPlik specyfikacjiPort lokalnyOdpowiedzialność
API Gatewayopenapi-gateway.yaml8080Uwierzytelnianie, ograniczanie liczby żądań, routing, przekazywanie SSE/WS
Metadata Serviceopenapi-metadata.yaml8081Pipeline'y, połączenia, jakość, katalog, governance, GDPR, admin
Pipeline Engineopenapi-pipeline-engine.yaml8082Wykonywanie, planowanie, orkiestracja, Git, Flink
Lineage Serviceopenapi-lineage.yaml8084Lineage zbiorów danych/kolumn, analiza wpływu, zdarzenia OpenLineage
Monitor Serviceopenapi-monitor.yaml8085Metryki dashboardu, alerty, definicje/zdarzenia alertów, SSE
Copilot Serviceprzez proxy8086Copilot AI
Migration Serviceprzez proxy8087Plany migracji
Connector SDKprzez proxy8088Konektory CDC

Routing bramy

Brama mapuje każdy prefiks trasy na usługę backendową. Większość ścieżek bramy to ponowne eksporty specyfikacji backendowych zamontowane przez $ref; brama definiuje także sześć własnych operacji pierwszej klasy (health, copilot, migration, CDC).

Prefiks trasyUsługa backendowaPort
/api/v1/pipelines/**metadata-service8081
/api/v1/connections/**metadata-service8081
/api/v1/quality/**metadata-service8081
/api/v1/catalog/**metadata-service8081
/api/v1/governance/**metadata-service8081
/api/v1/gdpr/**metadata-service8081
/api/v1/admin/**metadata-service8081
/api/v1/runs/**pipeline-engine8082
/api/v1/scheduler/**pipeline-engine8082
/api/v1/orchestrator/**pipeline-engine8082
/api/v1/git/**pipeline-engine8082
/api/v1/flink/**pipeline-engine8082
/api/v1/runs/*/streampipeline-engine (WebSocket)8082
/api/v1/lineage/**lineage-service8084
/api/v1/monitor/**monitor-service8085
/api/v1/monitor/sse/**monitor-service (SSE)8085
/api/v1/ai/**copilot-service8086
/api/v1/migration/**migration-service8087
/api/v1/cdc/**connector-sdk8088

Operacje należące do bramy

Te sześć operacji jest definiowanych bezpośrednio przez bramę, a nie ponownie eksportowanych ze specyfikacji backendowej.

MetodaŚcieżkaOperation IDPrzeznaczenieUwierzytelnianie
GET/healthgatewayHealthKontrola kondycji bramyBrak
GET/api/v1/ai/copilotcopilotEndpointCopilot AI (przekazywany do copilot-service)JWT
GET/api/v1/migration/plansmigrationPlansPlany migracji (przekazywane do migration-service)JWT
GET/api/v1/cdc/connectorslistCdcConnectorsLista konektorów CDC (przekazywana do connector-sdk)JWT
POST/api/v1/cdc/connectorsdeployCdcConnectorWdrożenie konektora CDCJWT
GET/api/v1/cdc/healthcdcHealthPodsumowanie kondycji CDCJWT
// GET /health  →  200 OK
{
  "status": "UP",
  "gateway": "dataflow-api-gateway"
}

Wersjonowanie

Platforma używa wersjonowania opartego na ścieżce. Obecna i jedyna wersja to v1, osadzona w każdej funkcjonalnej trasie jako /api/v1/....

  • Wszystkie pięć specyfikacji OpenAPI deklaruje info.version: 1.0.0.
  • Punkt końcowy bramy GET /health jest bez wersji — nie nosi prefiksu /api/v1.
  • Nowa wersja główna, jeśli zostałaby wprowadzona, pojawiłaby się jako nowy segment ścieżki (/api/v2/...); trasy v1 pozostają stabilne.

Uwierzytelnianie

Platforma uwierzytelnia za pomocą Keycloak OIDC + tokenów JWT Bearer.

  • Schematy bezpieczeństwa. Brama deklaruje dwa schematy — oidcAuth (openIdConnect) oraz bearerAuth (http / bearer / JWT). Usługi backendowe deklarują tylko bearerAuth.
  • Odkrywanie OIDC: https://auth.dataflow.polkomtel.pl/realms/dataflow/.well-known/openid-configuration
  • Realm: dataflow
  • Identyfikatory klientów: dataflow-ui (publiczny, Authorization Code + PKCE) oraz dataflow-api (poufny, Client Credentials).
  • Nagłówek: Authorization: Bearer <token>

Wymagane claimy JWT

Każde uwierzytelnione żądanie musi nieść token z następującymi claimami.

ClaimOpis
subIdentyfikator użytkownika
realm_access.rolesRole użytkownika — jedna lub więcej z ADMIN, ENGINEER, ANALYST, VIEWER
workspace_idAktywny workspace (claim niestandardowy)
GET /api/v1/pipelines HTTP/1.1
Host: api.dataflow.polkomtel.pl
Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6...

Wyjątki

  • GET /health (brama) jest nieuwierzytelniony — jego security w OpenAPI to [].
  • Punkty końcowe webhooków (wyzwalacz orkiestratora, webhooki Git) uwierzytelniają się nagłówkami sygnatury HMAC — X-Webhook-Signature, X-Hub-Signature-256, X-Gitlab-Token — zamiast JWT.

Uwaga

Brakujący lub nieprawidłowy token daje 401 UNAUTHORIZED. Prawidłowy token, którego role lub workspace_id nie zezwalają na operację, daje 403 — na przykład międzyworkspace'owa zależność pipeline'u.


Format błędów

Każda usługa zwraca w przypadku niepowodzenia jednolite ciało ErrorResponse.

{
  "error": "NOT_FOUND",
  "message": "Pipeline not found: f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "timestamp": "2025-12-15T14:30:00Z"
}
PoleTypUwagi
errorstringKod czytelny maszynowo — BAD_REQUEST, UNAUTHORIZED, NOT_FOUND, RATE_LIMITED, GATEWAY_TIMEOUT, SERVICE_UNAVAILABLE
messagestringOpis czytelny dla człowieka
timestampstring (date-time)Opcjonalny; obecny w większości odpowiedzi

Kody statusu HTTP

StatusZnaczenie
200OK
201Utworzono
202Zaakceptowano — asynchroniczne (uruchomienie pipeline'u / wyzwalacz)
204Brak zawartości — usunięcie
400Nieprawidłowe żądanie / nieprawidłowy ładunek
401Brakujący lub nieprawidłowy JWT
403Zabronione — np. międzyworkspace'owa zależność
404Nie znaleziono zasobu
409Konflikt — zduplikowany użytkownik/klaster, konflikt scalania
429Ograniczenie liczby żądań (tylko brama)
502 / 503 / 504Błędy upstream na poziomie bramy

Błędy specyficzne dla bramy

Brama rozszerza ErrorResponse o własne tryby niepowodzeń.

BłądStatusDodatkowe pola
RateLimited429Dodaje retryAfter (liczba całkowita); ustawia także nagłówki X-RateLimit-Limit oraz X-RateLimit-Reset
GatewayTimeout504error: "GATEWAY_TIMEOUT"
ServiceUnavailable503error: "SERVICE_UNAVAILABLE"; ciało dodaje service
// 429 Too Many Requests
{
  "error": "RATE_LIMITED",
  "message": "Rate limit exceeded for /api/v1/pipelines",
  "retryAfter": 42,
  "timestamp": "2025-12-15T14:30:00Z"
}

Ograniczanie liczby żądań i nagłówki korelacji

Brama stosuje te nagłówki do każdej przekazywanej odpowiedzi.

NagłówekOpisPrzykład
X-RateLimit-LimitMaksymalna liczba żądań na minutę100
X-RateLimit-RemainingPozostałe żądania w oknie87
X-RateLimit-ResetZnacznik czasu Unix resetu okna1734272400
X-Request-IdUUID korelacji żądania na potrzeby śledzeniad1e2f3a4-5b6c-7d8e-9f0a-1b2c3d4e5f6a

Limity liczby żądań są egzekwowane per trasa. Gdy okno zostanie wyczerpane, brama odpowiada 429 z wartością retryAfter (w sekundach). Zawsze rejestruj X-Request-Id po stronie klienta — to jedyny klucz korelacji do wsparcia i śledzenia we wszystkich usługach.


Paginacja

Nie istnieje ogólnoplatformowy kontrakt paginacji. We wszystkich usługach stosowane są trzy odrębne wzorce; nigdzie nie ma paginacji opartej na kursorze.

1. Paginacja offsetowa page/size

Używana przez Admin (/admin/users, /admin/audit) oraz listę DSAR GDPR. Parametry zapytania page (domyślnie 0) i size (domyślnie 20). Odpowiedź opakowuje elementy w total, page oraz size.

// GET /api/v1/admin/users?page=0&size=20  →  200 OK
{
  "items": [ /* UserResponse[] */ ],
  "total": 134,
  "page": 0,
  "size": 20
}

2. Listy ograniczone przez limit

Większość punktów końcowych „list / history / recent" akceptuje parametr zapytania limit (wartości domyślne się różnią — 10, 50, 100). Nie ma kursora; odpowiedź to czysta tablica.

GET /api/v1/quality/results?pipelineId=...&limit=50

3. Filtry okna czasowego

Punkty końcowe historii alertów i zdarzeń filtrują według czasu, a nie numeru strony, używając sinceSeconds, from oraz to.

GET /api/v1/monitor/alerts/history?sinceSeconds=86400

Indeks grup punktów końcowych

Pełne API jest udokumentowane na trzech stronach dokumentacji. Skorzystaj z tego indeksu, aby znaleźć właściwą grupę.

GrupaUsługaStrona dokumentacji
Pipeline'y, połączenia, jakośćMetadataDokumentacja API: Pipeline Engine (CRUD pipeline'ów) / Metadata i Lineage
Katalog, governance, GDPR, adminMetadataDokumentacja API: Metadata i Lineage
Wykonywanie, scheduler, orkiestratorPipeline EngineDokumentacja API: Pipeline Engine
Git, FlinkPipeline EngineDokumentacja API: Pipeline Engine
Graf lineage, przechodzenie, analityka, wyszukiwanie, zdarzenia OpenLineageLineageDokumentacja API: Metadata i Lineage
Dashboard, alerty, definicje, zdarzenia, SSE, kanałyMonitorDokumentacja API: Monitor i AI
Copilot, migracja, CDCUsługi przez proxyDokumentacja API: Monitor i AI

Liczby punktów końcowych

UsługaOperacje na ścieżkach (w przybliżeniu)
Gateway (własne)6 (plus wiele ponownych eksportów $ref)
Metadata38
Pipeline Engine38
Lineage14
Monitor35

Usługi dostępne tylko przez proxy (copilot, migracja, CDC, connector-sdk) są udostępniane przez bramę, ale nie są formalnie specyfikowane poza sześcioma operacjami stub bramy.

Poprzednia
RBAC i uprawnienia