{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://adcontextprotocol.org/schemas/3.3.0-beta.1/enums/audience-status.json",
  "title": "Audience Status",
  "description": "Matching status of a synced audience on a seller platform. Present when the sync action is created, updated, or unchanged; absent when the action is deleted or failed. See the Audience Sync specialism for transition rules.",
  "type": "string",
  "enum": [
    "processing",
    "ready",
    "too_small",
    "suspended"
  ],
  "enumDescriptions": {
    "processing": "Platform is matching submitted members against its user base, or is holding the audience in a consent/policy-review queue before matching begins (e.g., clean-room flows). Transitions to 'ready' when matching completes with a matched set at or above the platform's minimum, or to 'too_small' when matching completes with too few matches.",
    "ready": "Audience is available for targeting. `matched_count` and `effective_match_rate` are populated when the seller can report them and MAY be absent when it cannot (buyers MUST NOT read absence as zero); `audience_size` and `targetable_size` carry the size as a range when the seller can report one. Sellers MAY re-enter 'processing' on a subsequent re-sync while re-matching runs, and MAY transition to 'too_small' if matched counts later fall below `minimum_size`, or to 'suspended' on a seller-initiated offline transition.",
    "too_small": "Matched audience is below the platform's minimum size for targeting. `minimum_size` is populated. Not terminal — buyers add more members and re-sync, which MAY return the audience to 'processing' while re-matching runs or directly to 'ready' when the re-matched count clears the minimum. Sellers MUST emit 'too_small' (not 'ready' with a low `matched_count`) whenever `matched_count < minimum_size`, so buyers have a programmatic signal that targeting will fail.",
    "suspended": "Seller has taken the audience offline for targeting — consent expiry, PII audit failure, TTL expiry, or policy enforcement. Sellers MUST include a reason via the sync response and MUST surface a corresponding impairment on any active media buy that targets this audience (see impairment.json, impairment-reason-code.json). Not terminal — sellers MAY return the audience to 'processing' or 'ready' if the underlying cause clears (e.g., consent refreshed). MUST NOT be emitted as a synonym for 'too_small' or 'processing'; reserved for seller-initiated offline transitions."
  }
}
