Skip to content

Admin abuse report detail

GET
/api/v1/admin/abuse-reports/{id}
curl --request GET \
--url https://api.deploybase.eu/api/v1/api/v1/admin/abuse-reports/example \
--header 'Authorization: <Authorization>'

One notice plus, for each reported URL, the team and project it maps to. Custom domains and *.sites.deploybase.eu subdomains resolve; previews, function hostnames and share links come back unresolved, because no reverse index from those hostnames to a project exists and guessing would point an operator at the wrong team.

id
required
string

Abuse report ID

OK

Media type application/json
object
data
meta
object
request_id
string
timestamp
string
trace_id
string
data
object
category
string
closed_at

ClosedAt is set exactly when Status is terminal (a CHECK constraint enforces the pair) and starts the 12-month retention clock.

string
created_at
string
description
string
good_faith_declared

GoodFaithDeclared is the Art. 16(2)(d) declaration. Always true on a stored row, kept so the record shows the declaration was actually made rather than assumed.

boolean
handled_at
string
handled_by

HandledBy is the Zitadel subject of the admin who last moved the row. Text, not uuid: there is no users table (same reasoning as notices.created_by).

string
id
string
reported_urls

ReportedURLs are the flagged URLs, 1 to 10, deduplicated case-insensitively at submission. NEVER fetched by us — see the service’s validation comment. The admin UI renders them as plain text, never as links.

Array<string>
reporter_email

ReporterEmail is where the acknowledgement and the statement of reasons go. Personal data: it is never written to a log line.

string
reporter_name

ReporterName is optional and empty when not given: Art. 16(2)(c) requires a name only for notices that are not about certain offences, so a blank is a lawful notice.

string
resolution

Resolution is what we did and why, in the operator’s own words. It is the raw material for the Art. 17 statement of reasons, so it should name the acceptable-use clause that was breached, or say plainly why the notice was rejected.

string
resolved_team_id

ResolvedTeamID is the team the notice turned out to be about. ON DELETE SET NULL in the schema: an account erasure must neither be blocked by this record nor destroy it.

string
status
string
url_lookups
Array<object>
object
project_id
string
resolved

Resolved is false when we could not map the URL to a team without guessing. Honest rather than helpful: there is no reverse index from a preview or function hostname to a project, so pretending otherwise would send an operator to the wrong team.

boolean
team_id
string
team_name
string
url
string
Example generated
{
"data": {
"category": "example",
"closed_at": "example",
"created_at": "example",
"description": "example",
"good_faith_declared": true,
"handled_at": "example",
"handled_by": "example",
"id": "example",
"reported_urls": [
"example"
],
"reporter_email": "example",
"reporter_name": "example",
"resolution": "example",
"resolved_team_id": "example",
"status": "example",
"url_lookups": [
{
"project_id": "example",
"resolved": true,
"team_id": "example",
"team_name": "example",
"url": "example"
}
]
},
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Bad Request

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Unauthorized

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Forbidden

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Not Found

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Internal Server Error

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Service Unavailable

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}