API Documentation: Privacy Compliance Endpoints
Base URL
https://api.graze.social/app/api/v1/privacy-compliance
POST /request-removal
Submit a data removal request for a user account associated with the provided email address.
Request
URL: POST https://api.graze.social/app/api/v1/privacy-compliance/request-removal
Headers:
Content-Type: application/json
Request Body:
{
"email": "string"
}
Parameters:
FieldTypeRequiredDescriptionemailstringYesThe email address associated with the account to be removed
Response
Success Response (200 OK):
{
"filed": true
}
Response Fields:
FieldTypeDescriptionfiledbooleanAlways true when the request is successfully filed
Behavior
- The endpoint searches for user accounts associated with the provided email in both
PatreonUserandAccounttables - Creates a new
DataRemovalRequestrecord with:
- The provided email address
- Associated
patreon_user_id(if found) - Associated
account_id(if found)
- If no associated accounts are found (neither Patreon nor regular account), the request is automatically marked as complied by setting
complied_atto the current UTC timestamp - The request is saved to the database and committed
Example Request
curl -X POST "https://api.graze.social/app/api/v1/privacy-compliance/request-removal" \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com"}'
Example Response
{
"filed": true
}
Notes
- Requests for email addresses not associated with any account are automatically marked as complied
- The endpoint always returns a successful response if the request is properly formatted
- Multiple removal requests can be filed for the same email address
- The actual data removal process may be handled asynchronously after the request is filed
POST /request-stats
Retrieve statistics about data removal requests.
Request
URL: POST https://api.graze.social/app/api/v1/privacy-compliance/request-stats
Query Parameters:
ParameterTypeDefaultDescriptioninclude_deletedbooleanfalseInclude deleted requests in the statistics calculations
Response
Success Response (200 OK):
{
"total_requests": 150,
"complied_requests": 120,
"denied_requests": 5,
"median_response_days": 3.0,
"mean_response_days": 4.2,
"include_deleted": false
}
Response Fields:
FieldTypeDescriptiontotal_requestsintegerTotal number of data removal requestscomplied_requestsintegerNumber of requests that have been complied withdenied_requestsintegerNumber of requests that have been deniedmedian_response_daysfloatMedian number of days to comply with requestsmean_response_daysfloatAverage number of days to comply with requestsinclude_deletedbooleanWhether deleted requests were included in the calculations
Behavior
- Filters out deleted requests by default (unless
include_deleted=true) - Calculates response time only for complied requests
- Response time is calculated as the number of days between
created_atandcomplied_at - Handles timezone conversion to UTC for proper date calculations
Example Request
curl -X POST "https://api.graze.social/app/api/v1/privacy-compliance/request-stats?include_deleted=false"
Example Response
{
"total_requests": 250,
"complied_requests": 230,
"denied_requests": 10,
"median_response_days": 2.0,
"mean_response_days": 3.5,
"include_deleted": false
}
Notes
- Response time statistics (
median_response_daysandmean_response_days) are only calculated for complied requests - If no complied requests exist or no response times are available, both median and mean will be 0
- The statistics provide insight into GDPR/privacy compliance performance
Updated on: 30/10/2025
Thank you!