Skip to content

Accept a CEO retire/retune proposal from the morning brief (OAV-05)

POST
/api/v1/attribution/proposals/{proposal_id}/accept
curl --request POST \
--url https://api.ultimateteam.ai/api/v1/attribution/proposals/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/accept \
--header 'X-API-Key: <X-API-Key>'

Operator acceptance of a retire-or-retune proposal (Phase 200-02).

The approval_action.proposal_id emitted in the morning brief’s roi_deep_dive.unattributed_decisions[] section is the exact UUID this endpoint expects. On success the proposal is marked accepted and an :attr:MessageType.ATTRIBUTION_PROPOSAL_ACCEPTED event is published on the message bus (bus failure is swallowed by the service so transient bus outages never fail the operator’s click).

Tenant-isolated via :class:UserContext. Returns 404 (not 403) when the proposal does not exist, belongs to a different tenant, or was already accepted – matches the Phase 199-03 “leak zero bits about other tenants’ namespaces” convention.

proposal_id
required
Proposal Id
string format: uuid

Successful Response

Media typeapplication/json
Response Accept Retire Retune Proposal Api V1 Attribution Proposals Proposal Id Accept Post
object
key
additional properties
any
Examplegenerated
{}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Examplegenerated
{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}