Handle domain notices
Domain notices tell your application what currently needs attention and which resolutions are available. Read them whenever you display a domain, after a request that changes one, and when the team event feed reports that its state changed.
Integration flow
- Fetch the domain and read its
noticesarray. - Replace your stored or displayed notice snapshot with the returned array.
- Use
typeandseverityto decide how prominently to present each notice. - Use
codefor specialized behavior andmessageas display fallback copy. - Offer only the
actionsyour application recognizes and can complete. - After an action, use the notices in the returned domain resource immediately.
- Listen for
domain.changedthrough the team event feed and retrieve the affected domain when its state changes later.
A domain can have several notices at the same time. Handle the array instead of selecting the first item.
Read current notices
Show a single domain to receive notices automatically:
Code
The relevant part of a processing response looks like this:
Code
The same condition appears to the customer as a notice on the domain page:

Domain collections omit notices by default. Request them explicitly when a list needs badges, warnings, or actions:
Code
Leave the expansion out when the list does not show notice state. Resolving notices adds work to every returned domain.
Watch for notice changes
Do not repeatedly fetch a domain to discover whether its notices changed. Poll List team events, then retrieve a domain when the feed reports domain.changed. The event is an invalidation signal. It does not describe which field or notice changed.
Use the notices returned by a mutation immediately. For later changes, collect the event feed's unique domain IDs and retrieve their current state with the notices expansion.
The data synchronization guide covers initial snapshots, checkpoints, cursors, batch retrieval, deduplication, and recovery.
Interpret the fields
codeis the stable branching key. Use it for custom copy, analytics, and code-specific flows.typedistinguishes a condition that requires intervention from an operational update.severitycontrols presentation urgency. It is not a domain lifecycle status.messageis fallback display copy. It may change or be localized, so do not branch on it or persist it as state.actionslists resolutions available for the current domain and actor. Let these values drive the next steps instead of inferring actions fromcodealone.datacontains code-specific context such as a failure cause, affected attributes, a deadline, or an identifier required by an action.
See the DomainNotice, DomainNoticeAction, and DomainNoticeData schemas for the current complete contract.
Actions do not grant API access
An action means the resolution is valid for the domain and actor. It is not filtered by the token's scopes. Check that the token has the scope required by the linked endpoint before showing an API-backed control, and handle 403 Forbidden if its access changes.
Some actions are instructions rather than Domain Chief API calls. For example, payment belongs in your billing flow, contacting support belongs in your support flow, and unlocking at another registrar requires a customer handoff.
Remain compatible with new notices
Notice codes, actions, and data fields are extensible. A new value must not break domain rendering or block unrelated actions.
For each notice:
- Apply specialized behavior when you recognize its
code. - Otherwise, show
messageusing the presentation indicated bytypeandseverity. - Render only actions you recognize. Do not guess an endpoint for an unknown action.
- Read only the data fields needed for the selected code or action and ignore the rest.
Do not implement an exhaustive switch that rejects the whole response when a new value appears.
Examples
These examples show how the same notice contract drives API calls, customer handoffs, and asynchronous updates.
Recover a failed transfer
An incoming transfer can fail because the authorization code was rejected. The relevant response fields can look like this:
Code
When domain.transfer.retry is present, ask the customer for a corrected code and call Retry a failed transfer:
Code
A 202 Accepted response means the retry started, not that the transfer completed. Replace the current notice snapshot with the notices in that response. If the endpoint returns 429 Too Many Requests, wait for the number of seconds in Retry-After. If it returns 409 Conflict, fetch the domain again because its state changed before the retry was accepted.
Offer cancellation only while domain.transfer.cancel remains present. A later response may remove one action while leaving the other.
Hand off contact verification
Contact verification may require the customer to open a registry-hosted page:
Code
Show a Verify contact control only when domain.contact_verification.open and data.contact_verification_url are both present. Open the URL in the customer's browser. It may contain a time-limited token, so do not fetch it from your server, log it, cache it, or modify it.
Another provider may offer domain.contact_verification.resend instead. In that case, call Resend contact verification and replace the current notices with those in the response. Respect Retry-After when the endpoint returns 429 Too Many Requests.
Follow a domain update
A successful Update a domain response may still contain domain.operation.processing. This means Domain Chief accepted the requested settings, while the registry-facing operation is still running.
Use data.attribute when one setting is involved and data.attributes when several changes are being processed together. Keep showing the last confirmed domain values and the pending notice. When the event feed reports domain.changed for that domain, retrieve its current state. Continue until the processing notice disappears or is replaced by domain.operation.failed.
A failed update can include domain.operation.failure.dismiss and data.operation_id. After the customer has corrected the setting or has chosen not to retry it, call Dismiss a failed-update notice:
Code
Dismissal hides that notice for the whole team. It does not remove the failed attempt from domain activity.
Keep notices current
- Treat
noticesas a current snapshot, not as an event stream or audit log. - When a mutation returns a domain resource, use its notices immediately. Do not wait for a second request before updating the interface.
- Poll the team event feed, not individual domain endpoints. Retrieve a domain after
domain.changedreports that its current state may have changed. - After a user completes an external action, such as contact verification or unlocking a domain at another registrar, wait for
domain.changedbefore retrieving the resulting state. - Honor endpoint-specific status codes and
Retry-Afterheaders. Do not retry a state-changing request only because a notice still exists.
Use domain activity when you need history. Notices answer what is true now and what can happen next.
API reference
- Show a domain
- List domains
- List specific domains
- List team events
DomainNoticeschemaDomainNoticeCodeschemaDomainNoticeActionschemaDomainNoticeDataschema
For the complete cursor workflow, read Sync domains and contacts with your system.
