DSAR
API

Appeals API

POST /requests/:id/appeals

Create an appeal for a request.

Request body:

  • message (string, required): free-text appeal rationale
  • grounds (string, optional)

Create requests only accept the client-supplied appeal fields. Server-managed fields such as id, status, timestamps, and any decision metadata are returned by list/read models instead of being supplied during creation.

Response (202):

{
	"appealId": "appeal-123",
	"requestId": "req-123",
	"status": "appeal_submitted"
}

GET /requests/:id/appeals

List appeals for a request.

Response (200):

[
	{
		"id": "appeal-123",
		"message": "Please review the refusal.",
		"status": "pending",
		"createdAt": "2026-01-01T00:00:00.000Z"
	}
]

POST /requests/:id/appeals/:appealId/decide

Decide on an appeal.

Request body:

  • decision (string): "approve" | "deny" | "partial"
  • explanation (string, optional)

Response (202):

{
	"appealId": "appeal-123",
	"decision": "approve",
	"requestId": "req-123",
	"status": "appeal_decided"
}