{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://firstpromoter.com/schemas/promoter",
  "title": "Promoter",
  "description": "An affiliate or referral partner managed in FirstPromoter.",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "description": "Unique identifier for the promoter."
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "Email address of the promoter."
    },
    "name": {
      "type": "string",
      "description": "Full name of the promoter."
    },
    "status": {
      "type": "string",
      "enum": ["pending", "active", "rejected", "blocked", "archived"],
      "description": "Current status of the promoter account."
    },
    "default_ref_id": {
      "type": "string",
      "description": "Default referral identifier used in referral links."
    },
    "auth_token": {
      "type": "string",
      "description": "Authentication token for the promoter's affiliate portal."
    },
    "clicks_count": {
      "type": "integer",
      "description": "Total number of clicks on the promoter's referral links."
    },
    "referrals_count": {
      "type": "integer",
      "description": "Total number of referrals generated by this promoter."
    },
    "customers_count": {
      "type": "integer",
      "description": "Total number of paying customers referred by this promoter."
    },
    "revenue_amount": {
      "type": "number",
      "format": "float",
      "description": "Total revenue generated by this promoter's referrals."
    },
    "paid_amount": {
      "type": "number",
      "format": "float",
      "description": "Total commissions already paid to this promoter."
    },
    "pending_amount": {
      "type": "number",
      "format": "float",
      "description": "Total commissions pending payment for this promoter."
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp when the promoter was created."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp when the promoter record was last updated."
    }
  },
  "required": ["email"],
  "additionalProperties": true
}
