State API
Verwalten Sie den SDK-State für Ihren Tenant
Übersicht
Die State API ermöglicht das Speichern und Abrufen des kompletten SDK-States. Der State enthält alle Compliance-Daten: Use Cases, Risiken, Controls, Checkpoints und mehr.
Versionierung
Der State wird mit optimistischem Locking gespeichert. Bei jedem Speichern wird die Version erhöht. Bei Konflikten erhalten Sie einen 409-Fehler.
GET /state/{tenantId}
Lädt den aktuellen SDK-State für einen Tenant.
Request
cURL
curl -X GET "https://api.breakpilot.io/sdk/v1/state/your-tenant-id" \
-H "Authorization: Bearer YOUR_API_KEY"Response (200 OK)
Response
{
"success": true,
"data": {
"version": "1.0.0",
"lastModified": "2026-02-04T12:00:00Z",
"tenantId": "your-tenant-id",
"userId": "user-123",
"subscription": "PROFESSIONAL",
"currentPhase": 1,
"currentStep": "use-case-workshop",
"completedSteps": ["use-case-workshop", "screening"],
"checkpoints": {
"CP-UC": {
"checkpointId": "CP-UC",
"passed": true,
"validatedAt": "2026-02-01T10:00:00Z",
"validatedBy": "user-123",
"errors": [],
"warnings": []
}
},
"useCases": [
{
"id": "uc-1",
"name": "KI-Kundenanalyse",
"description": "...",
"category": "Marketing",
"stepsCompleted": 5,
"assessmentResult": {
"riskLevel": "HIGH",
"dsfaRequired": true,
"aiActClassification": "LIMITED"
}
}
],
"risks": [...],
"controls": [...],
"dsfa": {...},
"toms": [...],
"vvt": [...]
},
"meta": {
"version": 5,
"etag": "W/\"abc123\""
}
}Response (404 Not Found)
Response
{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "No state found for tenant your-tenant-id"
}
}POST /state
Speichert den SDK-State. Unterstützt Versionierung und optimistisches Locking.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
tenantId | string | Yes | Eindeutige Tenant-ID |
userId | string | No | User-ID für Audit-Trail |
state | SDKState | Yes | Der komplette SDK-State |
expectedVersion | number | No | Erwartete Version für optimistisches Locking |
Request
cURL
curl -X POST "https://api.breakpilot.io/sdk/v1/state" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "If-Match: W/\"abc123\"" \
-d '{
"tenantId": "your-tenant-id",
"userId": "user-123",
"state": {
"currentPhase": 1,
"currentStep": "risks",
"useCases": [...],
"risks": [...]
}
}'Response (200 OK)
Response
{
"success": true,
"data": {
"tenantId": "your-tenant-id",
"version": 6,
"updatedAt": "2026-02-04T12:05:00Z"
},
"meta": {
"etag": "W/\"def456\""
}
}Response (409 Conflict)
Response
{
"success": false,
"error": {
"code": "CONFLICT",
"message": "Version conflict: expected 5, but current is 6",
"details": {
"expectedVersion": 5,
"currentVersion": 6
}
}
}Konfliktbehandlung
Bei einem 409-Fehler sollten Sie den State erneut laden, Ihre Änderungen mergen und erneut speichern.
DELETE /state/{tenantId}
Löscht den kompletten State für einen Tenant.
Request
cURL
curl -X DELETE "https://api.breakpilot.io/sdk/v1/state/your-tenant-id" \
-H "Authorization: Bearer YOUR_API_KEY"Response (200 OK)
Response
{
"success": true,
"data": {
"tenantId": "your-tenant-id",
"deleted": true
}
}State-Struktur
Der SDKState enthält alle Compliance-Daten:
types.ts
interface SDKState {
// Metadata
version: string
lastModified: Date
// Tenant & User
tenantId: string
userId: string
subscription: 'FREE' | 'STARTER' | 'PROFESSIONAL' | 'ENTERPRISE'
// Progress
currentPhase: 1 | 2
currentStep: string
completedSteps: string[]
checkpoints: Record<string, CheckpointStatus>
// Phase 1 Data
useCases: UseCaseAssessment[]
activeUseCase: string | null
screening: ScreeningResult | null
modules: ServiceModule[]
requirements: Requirement[]
controls: Control[]
evidence: Evidence[]
checklist: ChecklistItem[]
risks: Risk[]
// Phase 2 Data
aiActClassification: AIActResult | null
obligations: Obligation[]
dsfa: DSFA | null
toms: TOM[]
retentionPolicies: RetentionPolicy[]
vvt: ProcessingActivity[]
documents: LegalDocument[]
cookieBanner: CookieBannerConfig | null
consents: ConsentRecord[]
dsrConfig: DSRConfig | null
escalationWorkflows: EscalationWorkflow[]
// UI State
preferences: UserPreferences
}Beispiel: SDK Integration
sdk-client.ts
import { getSDKApiClient } from '@breakpilot/compliance-sdk'
const client = getSDKApiClient('your-tenant-id')
// State laden
const state = await client.getState()
console.log('Current step:', state.currentStep)
console.log('Use cases:', state.useCases.length)
// State speichern
await client.saveState({
...state,
currentStep: 'risks',
risks: [...state.risks, newRisk],
})