Skip to content

List Deal Close Reasons

GET
/deals/close-reasons

The org’s close reasons, and what this caller may do with them.

can_manage comes back WITH the list, resolved by the same rule the archive endpoint enforces - the app does that deliberately so the control a UI renders and the permission the endpoint applies cannot drift. A rebuilder without it has to guess which rows are removable.

LITERAL PATH: registered before deals_router so /deals/{deal_id} cannot read “close-reasons” as a deal id.

Authorizations

Parameters

Query Parameters

kind
Any of:
string

Filter to one list, e.g. won or lost.

Header Parameters

X-Target-Org-Id
Any of:
string

Responses

200

Successful Response

object
data
required

The close reasons, plus what this caller may do with them.

can_manage is returned alongside the list ON PURPOSE: it is resolved by the same rule the archive endpoint enforces, so a UI cannot render a delete control the backend would refuse - or hide one it would allow.

object
can_manage
Any of:
boolean
reasons
Array<object>
object
key
additional properties
any
key
additional properties
any
pagination
Any of:
object
has_next
required

Whether there are more pages

boolean
limit
required

Items per page

integer
next_cursor
Any of:
string
page
required

Current page number (1-indexed)

integer
total
required

Total number of items

integer

422

Validation Error

object
detail
Array<object>
object
loc
required
Array
msg
required
string
type
required
string