Delete KYB answer
Deletes one stored answer. Requires the record-level delete permission. This is a HARD DELETE. models.KYBAnswer embeds BaseModel, which declares no gorm.DeletedAt, so gorm issues a real DELETE and the row is gone — unlike the flow and item config routes, which deactivate. There is no undo and no audit row. Answers 200 through apireply.Ok200: the shared StdResponse envelope, not the {message: "Answer deleted successfully"} object previously documented.
Authorization
bearerAuth In: header
Path Parameters
Id of the answer row (kyb.answers.id). Read from the chi route context inside the service, not passed as an argument.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/v1/kyb/497f6eca-6276-4993-bfeb-53cbbbba6f08"{
"status": 200,
"message": "OK"
}{
"status": 400,
"message": "Invalid input",
"code": "common.invalid_input",
"class": "validation"
}{
"status": 401,
"message": "Failed to check permission",
"code": "common.failed_to_check_permission",
"class": "business"
}{
"status": 403,
"message": "No access to the record",
"code": "common.rbac_no_rec_access",
"class": "business"
}{
"status": 404,
"message": "Record not found",
"code": "common.record_not_found",
"class": "business"
}{
"status": 429,
"message": "Rate limit for 203.0.113.7 to POST:/v1/kyb/navigate exceeded.",
"code": "rate_limits_m.exceeded",
"class": "temporary",
"retryable": true
}{
"status": 500,
"message": "Database error",
"code": "common.database_error",
"class": "business"
}{
"overall_status": "unhealthy",
"message": "Service is shutting down",
"timestamp": "2026-08-27T15:04:05Z"
}Fetches one stored answer. Requires the record-level read permission for this answer id. A permission refusal is reported as 401 with code common.invalid_input — see the 401 below.
Lists stored answers for one actor. The path segment is named customer_id but is matched against the answers table's actor_id column. Record-scoped. A caller without the read-all mask has their permitted answer ids folded into the query, and a caller with NO permitted ids receives 200 with an EMPTY ARRAY — a refusal is indistinguishable from an actor who has answered nothing.