{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/politicalcomms-com/json-schema/politicalcomms-com-email-sender-identity-schema.json",
  "title": "EmailSenderIdentity",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/politicalcomms-com-openapi.json#/components/schemas/EmailSenderIdentity",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    },
    "email_domain_id": {
      "type": "string",
      "format": "uuid"
    },
    "from_address": {
      "type": "string"
    },
    "from_local_part": {
      "type": "string"
    },
    "from_name": {
      "type": "string"
    },
    "reply_to": {
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "draft",
        "active",
        "paused"
      ],
      "description": "An identity missing a required physical address or disclaimer is paused rather than deleted."
    },
    "physical_address": {
      "type": [
        "string",
        "null"
      ],
      "description": "Postal address included in the footer of every message."
    },
    "disclaimer": {
      "type": [
        "string",
        "null"
      ],
      "description": "Paid-for-by disclaimer text."
    },
    "disclaimer_required": {
      "type": "boolean"
    },
    "authorized_by_candidate": {
      "type": "boolean"
    },
    "gmail_verified_sender": {
      "type": [
        "object",
        "null"
      ],
      "description": "Read-only. Status of this address in Google's Gmail Verified Sender Program, submitted through Campaign Verify. Null when the identity has never been eligible.",
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "not_eligible",
            "eligible",
            "ready_to_submit",
            "submitted",
            "verified",
            "suspended",
            "rejected",
            "expired"
          ]
        },
        "submitted_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "verified_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "Set when status is verified, else null."
        }
      }
    },
    "created_at": {
      "type": "string",
      "format": "date-time"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "id",
    "email_domain_id",
    "from_address",
    "status"
  ],
  "additionalProperties": true
}