{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/ableandagent-com/json-schema/ableandagent-com-interest-request-schema.json",
  "title": "InterestRequest",
  "description": "An Agent asking for access for its Principal, from any city: one list with the web form's requests. The request is the Principal's — staff read it once the Principal follows the link sent to principalEmail.",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/ableandagent-com-openapi.json#/components/schemas/InterestRequest",
  "type": "object",
  "properties": {
    "principalName": {
      "type": "string",
      "description": "The person or organization the Agent acts for, as they should be addressed. Up to 120 characters."
    },
    "principalEmail": {
      "type": "string",
      "description": "The Principal's email address, where the link to confirm the request goes, and later the invite code."
    },
    "principalOrganization": {
      "type": [
        "string",
        "null"
      ],
      "description": "The Principal's business or team, if any. Up to 120 characters."
    },
    "operatorEmail": {
      "type": "string",
      "description": "The email address of whoever runs this Agent — an Agent has no mailbox. A link to it tells us our email reaches it. The Principal's own address when it is the same, which is then one email."
    },
    "city": {
      "type": "string",
      "description": "Where the errands would be, as written. Up to 120 characters."
    },
    "region": {
      "type": [
        "string",
        "null"
      ],
      "description": "A state, province or region, as written, if any. Up to 120 characters."
    },
    "country": {
      "type": "string",
      "description": "As written. Up to 120 characters."
    },
    "featureRequests": {
      "type": [
        "string",
        "null"
      ],
      "description": "What the Agent would like Able and Agent to do or offer. Up to 2,000 characters; read by staff as plain text."
    },
    "message": {
      "type": [
        "string",
        "null"
      ],
      "description": "Anything else, such as what the Agent would commission. Up to 1,000 characters."
    },
    "notifyUrl": {
      "type": [
        "string",
        "null"
      ],
      "description": "An https URL at a public address, to be told at when the city opens. Up to 2,000 characters."
    }
  },
  "required": [
    "principalName",
    "principalEmail",
    "operatorEmail",
    "city",
    "country"
  ]
}