Set one team's override of a field's upload default (admin)
PUT /fields/{id}/default-overrides/{team_id}
Validated exactly as the field’s own default is: against the
field’s type, and for a vocabulary field against the live
options document, where a deprecated or archived term is
rejected. An override that could not apply is never stored.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body required
Section titled “Request Body required ”A declarative upload default (ADR 0081 §3). Exactly one of two
shapes, discriminated by kind, and never an expression:
literal— a value in whichevervalue_*member this field’s type uses (the same mappingAssetFieldValueWritedocuments). Populating any other member is a 400: the value would land in a column nothing reads.context— a name from a closed set the server resolves at creation time. The operator picks from a menu; nothing they write is evaluated.
For select / multi_select / tree, a literal slug must
exist in the field’s options and be active. A deprecated
or archived term is rejected on write, because a default is
the fastest way to spread a term you have just retired.
When a value must genuinely be COMPUTED rather than chosen, that
is what extraction_source / extraction_mode are for. A
default answers “what should this be when nothing else says”.
object
Required when kind is context, forbidden otherwise.
uploading_user— the uploader’s display name. Text types only.uploading_team— the name of the team the upload belongs to. Text types only. Not applied when the uploader belongs to no team, or to more than one.current_date— creation time. Date types only; adatefield gets the day, adatetimethe instant.
The set is closed. It carries no “target collection”
because POST /assets has no collection in scope — see the
2026-07-31 defaults amendment to ADR 0081.
Responses
Section titled “ Responses ”The stored override.
One team’s override of a field’s upload default.
object
A declarative upload default (ADR 0081 §3). Exactly one of two
shapes, discriminated by kind, and never an expression:
literal— a value in whichevervalue_*member this field’s type uses (the same mappingAssetFieldValueWritedocuments). Populating any other member is a 400: the value would land in a column nothing reads.context— a name from a closed set the server resolves at creation time. The operator picks from a menu; nothing they write is evaluated.
For select / multi_select / tree, a literal slug must
exist in the field’s options and be active. A deprecated
or archived term is rejected on write, because a default is
the fastest way to spread a term you have just retired.
When a value must genuinely be COMPUTED rather than chosen, that
is what extraction_source / extraction_mode are for. A
default answers “what should this be when nothing else says”.
object
Required when kind is context, forbidden otherwise.
uploading_user— the uploader’s display name. Text types only.uploading_team— the name of the team the upload belongs to. Text types only. Not applied when the uploader belongs to no team, or to more than one.current_date— creation time. Date types only; adatefield gets the day, adatetimethe instant.
The set is closed. It carries no “target collection”
because POST /assets has no collection in scope — see the
2026-07-31 defaults amendment to ADR 0081.
Malformed request
object
Human-readable error summary
Example
the request could not be completedAuthentication required, missing, or invalid
object
Human-readable error summary
Example
the request could not be completedExample
{ "error": "authentication required: sign in and retry with a valid session or API token"}Authenticated but missing required capabilities
object
Human-readable error summary
Example
the request could not be completedResource not found
object
Human-readable error summary
Example
the request could not be completed