What it means
The caller asked Aeris to change the state of a resource (publish, pause, cancel) but the resource is already in that terminal state. Publishing a published campaign, pausing an already-paused ad group, cancelling a cancelled subscription — all surface asCONFLICT.
Not retryable. From the client’s perspective, the desired state is already true — in many cases you can treat this as a success.
How to fix
- Read the resource’s current state first, or treat
CONFLICTon a state-change tool as a benign no-op. - If your workflow is deterministic (“apply this plan”), collapse
CONFLICTresponses into the success branch instead of surfacing them to the user.
Response envelope
details is empty by default; a handler may add resource-specific context.
Related
IDEMPOTENCY_CONFLICT— also 409, but about idempotency bookkeeping rather than resource state.NOT_FOUND— for state changes on a resource that does not exist.