{"openapi":"3.1.0","info":{"title":"GDPR API","summary":"DSGVO-Compliance API für Discord Bot-Entwickler","description":"DSGVO-Compliance API für Discord Bot-Entwickler.\n\n## Authentifizierung\n\nAlle API-Requests erfordern einen API-Key im Authorization-Header:\n\n```\nAuthorization: Bearer sk_live_xxxxxxxxxxxx\n```\n\n## Rate Limiting\n\n- Free Tier: 30 Requests/Minute\n- Rate-Limit-Header werden bei jeder Response mitgesendet\n\n## Wichtiger Hinweis\n\nDiese API verwaltet ausschließlich Daten, die über die Schnittstelle gespeichert werden.\n**Discord-Nachrichten, DMs oder andere Discord-Plattformdaten werden weder gespeichert noch gelöscht.**","version":"1.0.0","contact":{"name":"GDPR API Support","email":"support@gdprapi.de","url":"https://gdprapi.de"},"license":{"name":"Proprietary","url":"https://gdprapi.de/legal/terms"}},"servers":[{"url":"https://api.gdprapi.de","description":"Production"},{"url":"http://localhost:3001","description":"Development"}],"externalDocs":{"description":"Vollständige Dokumentation","url":"https://gdprapi.de/de/docs"},"tags":[{"name":"Bots","description":"Bot-Registrierung und -Verwaltung","externalDocs":{"description":"Bot-Setup Guide","url":"https://gdprapi.de/de/docs/bots"}},{"name":"Servers","description":"Server (Guild) Registrierung"},{"name":"Data Categories","description":"Datenkategorien definieren - Lege fest, welche Datenarten dein Bot speichert"},{"name":"Consent","description":"Einwilligungsverwaltung gemäß DSGVO Art. 6 (Rechtmäßigkeit) und Art. 7 (Einwilligung)","externalDocs":{"description":"GDPR Consent Guide","url":"https://gdprapi.de/de/docs/consent"}},{"name":"User Data","description":"Nutzerdaten verwalten - Speichern und Abrufen von Bot-Daten"},{"name":"GDPR","description":"DSGVO-Rechte: Datenexport (Art. 15) und Löschung (Art. 17 \"Recht auf Vergessenwerden\")","externalDocs":{"description":"GDPR Compliance Guide","url":"https://gdprapi.de/de/docs/gdpr"}},{"name":"Audit","description":"Audit-Logging für Nachweispflicht und Compliance"},{"name":"Webhooks","description":"Webhook-Events die an deinen Bot gesendet werden (HMAC-SHA256 signiert)","externalDocs":{"description":"Webhook Integration Guide","url":"https://gdprapi.de/de/docs/webhooks"}}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"API-Key with prefix sk_live_","bearerFormat":"API-Key"}},"schemas":{"Error":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","examples":["invalid_request","unauthorized","not_found","rate_limit_exceeded"]},"message":{"type":"string","examples":["Validation failed","Missing Authorization header"]},"details":{"type":"object"}}}}},"DiscordSnowflake":{"type":"string","pattern":"^\\d{17,20}$","examples":["123456789012345678","987654321098765432"],"description":"Discord ID (Snowflake) - 17-20 Ziffern, zeitbasierte eindeutige Kennung"},"ConsentStatus":{"type":"string","enum":["none","pending","accepted","revoked"],"description":"Status einer Einwilligung: none (keine), pending (ausstehend), accepted (akzeptiert), revoked (widerrufen)"},"DeletionStatus":{"type":"string","enum":["processing","completed","failed"],"description":"Status einer Löschanfrage"},"AuditEventType":{"type":"string","enum":["consent_requested","consent_accepted","consent_revoked","data_submitted","data_exported","data_deleted","deletion_requested","deletion_completed","deletion_failed"],"description":"Typ des Audit-Events für die Nachverfolgung"},"DataField":{"type":"object","required":["key","type","label_de","label_en"],"properties":{"key":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","examples":["xp","level","warnings"]},"type":{"type":"string","enum":["string","number","boolean","date","json"],"description":"Datentyp des Feldes"},"label_de":{"type":"string","examples":["Erfahrungspunkte","Level"]},"label_en":{"type":"string","examples":["Experience Points","Level"]},"description":{"type":["string","null"]}}},"Timestamp":{"type":"string","format":"date-time","examples":["2025-01-15T12:00:00Z"],"description":"ISO 8601 Zeitstempel"}},"responses":{"Unauthorized":{"description":"Fehlende oder ungültige Authentifizierung","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"success":false,"error":{"code":"unauthorized","message":"Missing Authorization header"}}}}},"RateLimitExceeded":{"description":"Rate-Limit überschritten","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests per minute"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining requests"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix timestamp of reset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"security":[{"BearerAuth":[]}],"paths":{"/api/v1/bots/register":{"post":{"tags":["Bots"],"summary":"Bot registrieren","description":"Registriert einen neuen Discord Bot und gibt einen API-Key zurück. Der API-Key wird nur einmal angezeigt!","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["discord_bot_id","name"],"properties":{"discord_bot_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"name":{"type":"string","maxLength":100,"example":"My Bot"},"privacy_contact":{"type":"string","format":"email","example":"privacy@example.com"},"webhook_url":{"type":"string","format":"uri","example":"https://example.com/webhook"}}}}}},"responses":{"201":{"description":"Bot registered successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"discord_bot_id":{"type":"string"},"name":{"type":"string"},"api_key":{"type":"string","example":"sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"},"api_key_prefix":{"type":"string","example":"sk_live_xxxx"},"notice":{"type":"string"}}}}}}}},"409":{"description":"Bot existiert bereits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/bots/{bot_id}":{"get":{"tags":["Bots"],"summary":"Bot-Details abrufen","description":"Gibt Details des authentifizierten Bots zurück.","parameters":[{"name":"bot_id","in":"path","required":true,"description":"Bot ID (UUID)","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Bot details","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"discord_bot_id":{"type":"string"},"name":{"type":"string"},"privacy_contact":{"type":["string","null"]},"webhook_url":{"type":["string","null"]},"api_key_prefix":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Bot not found"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}},"put":{"tags":["Bots"],"summary":"Bot aktualisieren","description":"Aktualisiert Bot-Einstellungen (Name, Datenschutz-Kontakt, Webhook-URL).","parameters":[{"name":"bot_id","in":"path","required":true,"description":"Bot ID (UUID)","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"privacy_contact":{"type":["string","null"],"format":"email"},"webhook_url":{"type":["string","null"],"format":"uri"}}}}}},"responses":{"200":{"description":"Bot updated successfully"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Bot not found"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}},"delete":{"tags":["Bots"],"summary":"Bot löschen","description":"Löscht den Bot und alle zugehörigen Daten. Diese Aktion kann nicht rückgängig gemacht werden!","parameters":[{"name":"bot_id","in":"path","required":true,"description":"Bot ID (UUID)","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Bot deleted successfully"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Bot not found"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/servers/register":{"post":{"tags":["Servers"],"summary":"Server registrieren","description":"Registriert einen Discord Server (Guild) für den Bot.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["guild_id"],"properties":{"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"name":{"type":"string","maxLength":100,"example":"My Server"}}}}}},"responses":{"201":{"description":"Server registered successfully","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"guild_id":{"type":"string"},"name":{"type":"string"},"created_at":{"type":"string","format":"date-time"}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/data/register":{"post":{"tags":["Data Categories"],"summary":"Datenkategorie registrieren","description":"Definiert eine neue Datenkategorie (z.B. Leveling, Moderation) mit ihren Feldern.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["key","label_de","label_en","fields"],"properties":{"key":{"type":"string","pattern":"^[a-z_][a-z0-9_]*$","example":"leveling"},"label_de":{"type":"string","example":"Level-System"},"label_en":{"type":"string","example":"Leveling System"},"fields":{"type":"array","items":{"$ref":"#/components/schemas/DataField"},"minItems":1,"maxItems":50}}},"example":{"key":"leveling","label_de":"Level-System","label_en":"Leveling System","fields":[{"key":"xp","type":"number","label_de":"Erfahrungspunkte","label_en":"Experience Points"},{"key":"level","type":"number","label_de":"Level","label_en":"Level"}]}}}},"responses":{"201":{"description":"Category created successfully"},"401":{"$ref":"#/components/responses/Unauthorized"},"409":{"description":"Kategorie existiert bereits"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/data/categories":{"get":{"tags":["Data Categories"],"summary":"Datenkategorien auflisten","description":"Gibt alle registrierten Datenkategorien des Bots mit Pagination zurück.","parameters":[{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"page_size","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Data categories list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"key":{"type":"string"},"label_de":{"type":"string"},"label_en":{"type":"string"},"fields":{"type":"array","items":{"$ref":"#/components/schemas/DataField"}},"created_at":{"type":"string","format":"date-time"}}}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"page_size":{"type":"integer"},"total_count":{"type":"integer"},"total_pages":{"type":"integer"}}}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/consents/request":{"post":{"tags":["Consent"],"summary":"Einwilligung anfordern","description":"Erstellt eine ausstehende Einwilligungsanfrage für einen Nutzer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user_id","guild_id","consent_version"],"properties":{"user_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"consent_version":{"type":"string","example":"1.0"}}}}}},"responses":{"201":{"description":"Consent requested","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/ConsentStatus"},"version":{"type":"string"},"requested_at":{"type":"string","format":"date-time"}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/consents/accept":{"post":{"tags":["Consent"],"summary":"Einwilligung akzeptieren","description":"Akzeptiert eine ausstehende Einwilligungsanfrage.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user_id","guild_id","consent_version"],"properties":{"user_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"consent_version":{"type":"string","example":"1.0"}}}}}},"responses":{"200":{"description":"Consent accepted"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Keine Einwilligungsanfrage gefunden"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/consents/revoke":{"post":{"tags":["Consent"],"summary":"Einwilligung widerrufen","description":"Widerruft eine akzeptierte Einwilligung. Löst einen Webhook aus.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user_id","guild_id"],"properties":{"user_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"}}}}}},"responses":{"200":{"description":"Consent revoked"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Keine Einwilligung gefunden"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/consents/status":{"get":{"tags":["Consent"],"summary":"Einwilligungsstatus prüfen","description":"Gibt den aktuellen Einwilligungsstatus eines Nutzers zurück.","parameters":[{"name":"user_id","in":"query","required":true,"schema":{"$ref":"#/components/schemas/DiscordSnowflake"}},{"name":"guild_id","in":"query","required":true,"schema":{"$ref":"#/components/schemas/DiscordSnowflake"}}],"responses":{"200":{"description":"Consent status","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"status":{"$ref":"#/components/schemas/ConsentStatus"},"version":{"type":"string"},"user_id":{"type":"string"},"guild_id":{"type":"string"},"accepted_at":{"type":["string","null"],"format":"date-time"},"revoked_at":{"type":["string","null"],"format":"date-time"}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/data/submit":{"post":{"tags":["User Data"],"summary":"Nutzerdaten speichern","description":"Speichert oder aktualisiert Nutzerdaten für eine Kategorie. Erfordert akzeptierte Einwilligung.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user_id","guild_id","category","data"],"properties":{"user_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"category":{"type":"string","example":"leveling"},"data":{"type":"object","example":{"xp":500,"level":5}}}}}}},"responses":{"200":{"description":"Data saved"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Keine Einwilligung gefunden"},"404":{"description":"Kategorie nicht gefunden"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/data/export/{user_id}":{"get":{"tags":["GDPR"],"summary":"Datenexport (Art. 15 DSGVO)","description":"Exportiert alle gespeicherten Daten eines Nutzers im JSON-Format.","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscordSnowflake"}},{"name":"guild_id","in":"query","required":true,"schema":{"$ref":"#/components/schemas/DiscordSnowflake"}}],"responses":{"200":{"description":"Exported data","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"userId":{"type":"string"},"guildId":{"type":"string"},"exportedAt":{"type":"string","format":"date-time"},"bot":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"consent":{"type":["object","null"],"properties":{"status":{"type":"string"},"version":{"type":"string"},"acceptedAt":{"type":["string","null"],"format":"date-time"}}},"data":{"type":"object","additionalProperties":{"type":"object"},"example":{"leveling":{"xp":500,"level":5}}}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Keine Daten gefunden"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/gdpr/forget-user":{"post":{"tags":["GDPR"],"summary":"Datenlöschung (Art. 17 DSGVO)","description":"Löscht alle Daten eines Nutzers (Recht auf Vergessenwerden). Löst einen Webhook aus.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user_id","guild_id"],"properties":{"user_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"}}}}}},"responses":{"200":{"description":"Deletion completed","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/DeletionStatus"},"deleted_categories":{"type":"array","items":{"type":"string"}},"completed_at":{"type":"string","format":"date-time"},"notice":{"type":"string"}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"409":{"description":"Löschung bereits in Bearbeitung"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/gdpr/forget-status/{id}":{"get":{"tags":["GDPR"],"summary":"Löschstatus prüfen","description":"Gibt den Status einer Löschanfrage zurück.","parameters":[{"name":"id","in":"path","required":true,"description":"Deletion request ID (UUID)","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Deletion request status","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"request_id":{"type":"string","format":"uuid"},"status":{"$ref":"#/components/schemas/DeletionStatus"},"user_id":{"type":"string"},"guild_id":{"type":"string"},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"},"deleted_categories":{"type":["array","null"],"items":{"type":"string"}},"webhook_sent":{"type":"boolean"}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"description":"Löschanfrage nicht gefunden"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/audit/event":{"post":{"tags":["Audit"],"summary":"Audit-Event loggen","description":"Loggt ein benutzerdefiniertes Audit-Event.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["user_id","guild_id","event_type"],"properties":{"user_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"event_type":{"$ref":"#/components/schemas/AuditEventType"},"details":{"type":"object"}}}}}},"responses":{"201":{"description":"Event logged"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}},"/api/v1/audit/events":{"get":{"tags":["Audit"],"summary":"Audit-Events abrufen","description":"Gibt Audit-Events mit optionalen Filtern und Pagination zurück.","parameters":[{"name":"user_id","in":"query","schema":{"$ref":"#/components/schemas/DiscordSnowflake"}},{"name":"guild_id","in":"query","schema":{"$ref":"#/components/schemas/DiscordSnowflake"}},{"name":"event_type","in":"query","schema":{"$ref":"#/components/schemas/AuditEventType"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1,"default":1}},{"name":"page_size","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Audit events list","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"data":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"guild_id":{"type":"string"},"user_id":{"type":"string"},"event_type":{"type":"string"},"details":{"type":["object","null"]},"created_at":{"type":"string","format":"date-time"}}}},"pagination":{"type":"object","properties":{"page":{"type":"integer"},"page_size":{"type":"integer"},"total_count":{"type":"integer"},"total_pages":{"type":"integer"}}}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimitExceeded"}}}}},"webhooks":{"userForgotten":{"post":{"summary":"User Forgotten Webhook","description":"Wird ausgelöst, wenn eine Löschanfrage (Art. 17 DSGVO) abgeschlossen wurde. Der Bot sollte alle lokal gespeicherten Daten des Nutzers löschen.","operationId":"userForgottenWebhook","tags":["Webhooks"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["event","request_id","user_id","guild_id","completed_at"],"properties":{"event":{"type":"string","const":"user_forgotten"},"request_id":{"type":"string","format":"uuid"},"user_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"completed_at":{"type":"string","format":"date-time"},"notice":{"type":"string","examples":["Diese Löschung betrifft nur über diese API gespeicherte Daten. Discord-Nachrichten und andere Discord-Plattformdaten sind nicht betroffen."]}}},"examples":{"userForgotten":{"summary":"User Forgotten Event","value":{"event":"user_forgotten","request_id":"550e8400-e29b-41d4-a716-446655440000","user_id":"123456789012345678","guild_id":"987654321098765432","completed_at":"2025-01-15T12:00:00Z","notice":"Diese Löschung betrifft nur über diese API gespeicherte Daten. Discord-Nachrichten und andere Discord-Plattformdaten sind nicht betroffen."}}}}}},"responses":{"200":{"description":"Webhook received successfully"}},"security":[],"x-webhook-headers":{"X-GDPR-Signature":{"description":"HMAC-SHA256 signature of payload (sha256=...)","schema":{"type":"string"}},"X-GDPR-Event":{"description":"Event type","schema":{"type":"string","enum":["user_forgotten","consent_revoked"]}}}}},"consentRevoked":{"post":{"summary":"Consent Revoked Webhook","description":"Wird ausgelöst, wenn ein Nutzer seine Einwilligung widerruft. Der Bot sollte die Datenverarbeitung für diesen Nutzer einstellen.","operationId":"consentRevokedWebhook","tags":["Webhooks"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["event","user_id","guild_id","revoked_at"],"properties":{"event":{"type":"string","const":"consent_revoked"},"user_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"guild_id":{"$ref":"#/components/schemas/DiscordSnowflake"},"revoked_at":{"type":"string","format":"date-time"},"previous_version":{"type":"string"}}},"examples":{"consentRevoked":{"summary":"Consent Revoked Event","value":{"event":"consent_revoked","user_id":"123456789012345678","guild_id":"987654321098765432","revoked_at":"2025-01-15T12:00:00Z","previous_version":"1.0"}}}}}},"responses":{"200":{"description":"Webhook received successfully"}},"security":[]}}}}