Upsert proposal
PUT/v1/proposals
Takes the same body as POST, plus id and public_id, and dedups on id, public_id, external_id and the resource's natural keys, in that order, stopping at the first key that finds a record. A match is updated and returns 200; otherwise the record is created and returns 201. The POST's required fields are required only when no record is found, and updates are partial: absent fields keep their stored value.
Request​
Responses​
- 200
- 201
- 400
- 401
- 403
- 404
- 422
- 429
- 500
Record updated.
Record created.
Request body failed validation.
Missing or invalid bearer token.
Token is valid but lacks permission for this operation. With code insufficient_scope, details.required carries the one minimal set of scopes that, added to details.granted, would let the request through: the resource scope (billing/{resource}, or billing/all off the catalogue) then the bare verb — e.g. ["billing/customers", "delete"].
Resource not found in the current organization.
Request body failed validation.
Rate limit exceeded.
Unexpected server error.