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.
| Środowisko | Bazowy adres URL |
|---|---|
| Produkcja (brama) | https://api.dataflow.polkomtel.pl |
| Lokalna brama | http://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ługa | Plik specyfikacji | Port lokalny | Odpowiedzialność |
|---|---|---|---|
| API Gateway | openapi-gateway.yaml | 8080 | Uwierzytelnianie, ograniczanie liczby żądań, routing, przekazywanie SSE/WS |
| Metadata Service | openapi-metadata.yaml | 8081 | Pipeline'y, połączenia, jakość, katalog, governance, GDPR, admin |
| Pipeline Engine | openapi-pipeline-engine.yaml | 8082 | Wykonywanie, planowanie, orkiestracja, Git, Flink |
| Lineage Service | openapi-lineage.yaml | 8084 | Lineage zbiorów danych/kolumn, analiza wpływu, zdarzenia OpenLineage |
| Monitor Service | openapi-monitor.yaml | 8085 | Metryki dashboardu, alerty, definicje/zdarzenia alertów, SSE |
| Copilot Service | przez proxy | 8086 | Copilot AI |
| Migration Service | przez proxy | 8087 | Plany migracji |
| Connector SDK | przez proxy | 8088 | Konektory 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 trasy | Usługa backendowa | Port |
|---|---|---|
/api/v1/pipelines/** | metadata-service | 8081 |
/api/v1/connections/** | metadata-service | 8081 |
/api/v1/quality/** | metadata-service | 8081 |
/api/v1/catalog/** | metadata-service | 8081 |
/api/v1/governance/** | metadata-service | 8081 |
/api/v1/gdpr/** | metadata-service | 8081 |
/api/v1/admin/** | metadata-service | 8081 |
/api/v1/runs/** | pipeline-engine | 8082 |
/api/v1/scheduler/** | pipeline-engine | 8082 |
/api/v1/orchestrator/** | pipeline-engine | 8082 |
/api/v1/git/** | pipeline-engine | 8082 |
/api/v1/flink/** | pipeline-engine | 8082 |
/api/v1/runs/*/stream | pipeline-engine (WebSocket) | 8082 |
/api/v1/lineage/** | lineage-service | 8084 |
/api/v1/monitor/** | monitor-service | 8085 |
/api/v1/monitor/sse/** | monitor-service (SSE) | 8085 |
/api/v1/ai/** | copilot-service | 8086 |
/api/v1/migration/** | migration-service | 8087 |
/api/v1/cdc/** | connector-sdk | 8088 |
Operacje należące do bramy
Te sześć operacji jest definiowanych bezpośrednio przez bramę, a nie ponownie eksportowanych ze specyfikacji backendowej.
| Metoda | Ścieżka | Operation ID | Przeznaczenie | Uwierzytelnianie |
|---|---|---|---|---|
| GET | /health | gatewayHealth | Kontrola kondycji bramy | Brak |
| GET | /api/v1/ai/copilot | copilotEndpoint | Copilot AI (przekazywany do copilot-service) | JWT |
| GET | /api/v1/migration/plans | migrationPlans | Plany migracji (przekazywane do migration-service) | JWT |
| GET | /api/v1/cdc/connectors | listCdcConnectors | Lista konektorów CDC (przekazywana do connector-sdk) | JWT |
| POST | /api/v1/cdc/connectors | deployCdcConnector | Wdrożenie konektora CDC | JWT |
| GET | /api/v1/cdc/health | cdcHealth | Podsumowanie kondycji CDC | JWT |
// 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 /healthjest 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/...); trasyv1pozostają stabilne.
Uwierzytelnianie
Platforma uwierzytelnia za pomocą Keycloak OIDC + tokenów JWT Bearer.
- Schematy bezpieczeństwa. Brama deklaruje dwa schematy —
oidcAuth(openIdConnect) orazbearerAuth(http/bearer/JWT). Usługi backendowe deklarują tylkobearerAuth. - Odkrywanie OIDC:
https://auth.dataflow.polkomtel.pl/realms/dataflow/.well-known/openid-configuration - Realm:
dataflow - Identyfikatory klientów:
dataflow-ui(publiczny, Authorization Code + PKCE) orazdataflow-api(poufny, Client Credentials). - Nagłówek:
Authorization: Bearer <token>
Wymagane claimy JWT
Każde uwierzytelnione żądanie musi nieść token z następującymi claimami.
| Claim | Opis |
|---|---|
sub | Identyfikator użytkownika |
realm_access.roles | Role użytkownika — jedna lub więcej z ADMIN, ENGINEER, ANALYST, VIEWER |
workspace_id | Aktywny 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 — jegosecurityw 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"
}
| Pole | Typ | Uwagi |
|---|---|---|
error | string | Kod czytelny maszynowo — BAD_REQUEST, UNAUTHORIZED, NOT_FOUND, RATE_LIMITED, GATEWAY_TIMEOUT, SERVICE_UNAVAILABLE |
message | string | Opis czytelny dla człowieka |
timestamp | string (date-time) | Opcjonalny; obecny w większości odpowiedzi |
Kody statusu HTTP
| Status | Znaczenie |
|---|---|
| 200 | OK |
| 201 | Utworzono |
| 202 | Zaakceptowano — asynchroniczne (uruchomienie pipeline'u / wyzwalacz) |
| 204 | Brak zawartości — usunięcie |
| 400 | Nieprawidłowe żądanie / nieprawidłowy ładunek |
| 401 | Brakujący lub nieprawidłowy JWT |
| 403 | Zabronione — np. międzyworkspace'owa zależność |
| 404 | Nie znaleziono zasobu |
| 409 | Konflikt — zduplikowany użytkownik/klaster, konflikt scalania |
| 429 | Ograniczenie liczby żądań (tylko brama) |
| 502 / 503 / 504 | Błędy upstream na poziomie bramy |
Błędy specyficzne dla bramy
Brama rozszerza ErrorResponse o własne tryby niepowodzeń.
| Błąd | Status | Dodatkowe pola |
|---|---|---|
RateLimited | 429 | Dodaje retryAfter (liczba całkowita); ustawia także nagłówki X-RateLimit-Limit oraz X-RateLimit-Reset |
GatewayTimeout | 504 | error: "GATEWAY_TIMEOUT" |
ServiceUnavailable | 503 | error: "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łówek | Opis | Przykład |
|---|---|---|
X-RateLimit-Limit | Maksymalna liczba żądań na minutę | 100 |
X-RateLimit-Remaining | Pozostałe żądania w oknie | 87 |
X-RateLimit-Reset | Znacznik czasu Unix resetu okna | 1734272400 |
X-Request-Id | UUID korelacji żądania na potrzeby śledzenia | d1e2f3a4-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ę.
| Grupa | Usługa | Strona dokumentacji |
|---|---|---|
| Pipeline'y, połączenia, jakość | Metadata | Dokumentacja API: Pipeline Engine (CRUD pipeline'ów) / Metadata i Lineage |
| Katalog, governance, GDPR, admin | Metadata | Dokumentacja API: Metadata i Lineage |
| Wykonywanie, scheduler, orkiestrator | Pipeline Engine | Dokumentacja API: Pipeline Engine |
| Git, Flink | Pipeline Engine | Dokumentacja API: Pipeline Engine |
| Graf lineage, przechodzenie, analityka, wyszukiwanie, zdarzenia OpenLineage | Lineage | Dokumentacja API: Metadata i Lineage |
| Dashboard, alerty, definicje, zdarzenia, SSE, kanały | Monitor | Dokumentacja API: Monitor i AI |
| Copilot, migracja, CDC | Usługi przez proxy | Dokumentacja API: Monitor i AI |
Liczby punktów końcowych
| Usługa | Operacje na ścieżkach (w przybliżeniu) |
|---|---|
| Gateway (własne) | 6 (plus wiele ponownych eksportów $ref) |
| Metadata | 38 |
| Pipeline Engine | 38 |
| Lineage | 14 |
| Monitor | 35 |
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.