Internal

Create a dashboard banner (platform admin)

Mints a new banner (server-assigned id). audience/scope are consistency- checked discriminators (audience "orgs" requires orgIds and rejects them when "all"; same for scope/pathPrefixes), message is 1..500 chars, and ctaUrl must be https: or mailto:. reason is required and goes to the audit log. Refused past a 50-row cap.

post/v1/admin/banners

Request body

audience'all' | 'orgs' required
ctaLabelstring
ctaUrlstring

https: or mailto: only; rejected otherwise.

dismissibleboolean required
enabledboolean required
excludePathsstring[]
messagestring required
namestring required
orgIdsstring[]

Required and non-empty when audience is "orgs"; rejected when "all".

pathPrefixesstring[]

Required and non-empty when scope is "paths" (each must start with "/"); rejected when "all".

reasonstring required

Audit reason (recorded in the admin audit log, not on the row).

scope'all' | 'paths' required
tone'info' | 'warn' | 'danger' required

Response

Created

audience'all' | 'orgs' required

"all" targets every org; "orgs" targets exactly orgIds.

contentVersionstring required
createdAtstring
createdBystring
ctaLabelstring
ctaUrlstring

https: or mailto: only.

dismissibleboolean required
enabledboolean required
enabledEpochinteger required
excludePathsstring[]
idstring required
messagestring required

Rendered as plain text.

namestring required

Operator-facing label; not shown to customers.

orgIdsstring[]
pathPrefixesstring[]
scope'all' | 'paths' required

"all" shows everywhere; "paths" shows only under pathPrefixes.

tone'info' | 'warn' | 'danger' required
updatedAtstring
updatedBystring

Changes

Changed in 1 of the 20 revisions of this API.1