{
  "openapi": "3.1.0",
  "jsonSchemaDialect": "https://json-schema.org/draft/2020-12/schema",
  "info": {
    "title": "Agent Winds Public Lead API",
    "version": "1.0.0",
    "description": "Machine-readable API for requesting an Agent Winds consultation or live demo. These operations create a lead for Agent Winds. Call one only after the user explicitly asks to request a consultation or schedule a demo and has approved the submitted contact details. A successful request is not a confirmed appointment; Agent Winds will follow up.",
    "contact": {
      "name": "Agent Winds",
      "email": "support@agentwinds.com",
      "url": "https://agentwinds.com"
    },
    "license": {
      "name": "Proprietary",
      "identifier": "LicenseRef-Agent-Winds-Proprietary"
    }
  },
  "servers": [
    {
      "url": "https://tophamtechbeb.com",
      "description": "Agent Winds production API"
    }
  ],
  "tags": [
    {
      "name": "Lead intake",
      "description": "User-authorized requests for Agent Winds sales follow-up."
    }
  ],
  "paths": {
    "/api/toptech/onboarding/v1/request-consultation": {
      "post": {
        "tags": [
          "Lead intake"
        ],
        "operationId": "requestConsultation",
        "summary": "Request an Agent Winds consultation",
        "description": "Creates a consultation lead. Agent Winds will follow up using the submitted contact information.\n\nThese operations create a lead for Agent Winds. Call one only after the user explicitly asks to request a consultation or schedule a demo and has approved the submitted contact details. A successful request is not a confirmed appointment; Agent Winds will follow up.",
        "security": [
          {
            "DemoApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConsultationRequest"
              },
              "examples": {
                "default": {
                  "summary": "Book Consultation request",
                  "value": {
                    "name": "Jordan Lee",
                    "email": "jordan@example.com",
                    "phone": "+1-555-555-0142",
                    "brokerage": "Example Realty",
                    "state": "TX",
                    "package": "Single Agent",
                    "needs": "I need an AI-powered IDX website with CRM lead management."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Consultation request accepted."
          },
          "400": {
            "description": "The request body is missing required data or contains invalid values."
          },
          "401": {
            "description": "The X-API-Key header is missing or invalid."
          },
          "429": {
            "description": "The public demo-key rate limit has been exceeded."
          },
          "500": {
            "description": "The server could not process the request. Validate all required fields before sending. The current backend can return 500 rather than 400 for some malformed consultation payloads."
          }
        },
        "x-rate-limit": "7 requests per hour with the public demo key",
        "x-agent-guidance": "These operations create a lead for Agent Winds. Call one only after the user explicitly asks to request a consultation or schedule a demo and has approved the submitted contact details. A successful request is not a confirmed appointment; Agent Winds will follow up.",
        "x-validation-note": "Validate all required fields before sending. The current backend can return 500 rather than 400 for some malformed consultation payloads."
      }
    },
    "/api/toptech/onboarding/v1/request-demo": {
      "post": {
        "tags": [
          "Lead intake"
        ],
        "operationId": "scheduleDemo",
        "summary": "Request a live Agent Winds demo",
        "description": "Creates a demo request for a preferred date and time. The appointment is pending until Agent Winds confirms it.\n\nThese operations create a lead for Agent Winds. Call one only after the user explicitly asks to request a consultation or schedule a demo and has approved the submitted contact details. A successful request is not a confirmed appointment; Agent Winds will follow up.",
        "security": [
          {
            "DemoApiKey": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DemoRequest"
              },
              "examples": {
                "default": {
                  "summary": "Schedule Demo request",
                  "value": {
                    "name": "Jordan Lee",
                    "email": "jordan@example.com",
                    "phone": "+1-555-555-0142",
                    "state": "TX",
                    "proposed_date_time": "2030-09-17T14:00:00-05:00"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Demo request accepted and awaiting confirmation."
          },
          "400": {
            "description": "The request body is missing required data or contains invalid values."
          },
          "401": {
            "description": "The X-API-Key header is missing or invalid."
          },
          "429": {
            "description": "The public demo-key rate limit has been exceeded."
          },
          "500": {
            "description": "The server could not process the request. Validate all required fields before sending. Missing required demo fields return 400."
          }
        },
        "x-rate-limit": "7 requests per hour with the public demo key",
        "x-agent-guidance": "These operations create a lead for Agent Winds. Call one only after the user explicitly asks to request a consultation or schedule a demo and has approved the submitted contact details. A successful request is not a confirmed appointment; Agent Winds will follow up.",
        "x-validation-note": "Validate all required fields before sending. Missing required demo fields return 400."
      }
    }
  },
  "components": {
    "securitySchemes": {
      "DemoApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Use the public evaluation key `treas-demo-api-key`. Limit: 7 requests per hour with the public demo key."
      }
    },
    "schemas": {
      "ConsultationRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "email",
          "phone",
          "brokerage",
          "state",
          "package",
          "needs"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Full name of the person requesting the consultation.",
            "examples": [
              "Jordan Lee"
            ],
            "minLength": 1
          },
          "email": {
            "type": "string",
            "description": "Email address Agent Winds may use for follow-up.",
            "examples": [
              "jordan@example.com"
            ],
            "format": "email",
            "minLength": 1
          },
          "phone": {
            "type": "string",
            "description": "Phone number Agent Winds may use for follow-up.",
            "examples": [
              "+1-555-555-0142"
            ],
            "minLength": 1
          },
          "brokerage": {
            "type": "string",
            "description": "Brokerage or company name.",
            "examples": [
              "Example Realty"
            ],
            "minLength": 1
          },
          "state": {
            "type": "string",
            "description": "Two-letter US state or District of Columbia postal abbreviation.",
            "examples": [
              "TX"
            ],
            "pattern": "^[A-Z]{2}$",
            "enum": [
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "DC",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY"
            ],
            "minLength": 1
          },
          "package": {
            "type": "string",
            "description": "Agent Winds plan of interest.",
            "examples": [
              "Single Agent"
            ],
            "enum": [
              "No IDX",
              "Single Agent",
              "Small Team",
              "Brokerage"
            ],
            "minLength": 1
          },
          "needs": {
            "type": "string",
            "description": "The user's goals, current website situation, and what they want help with.",
            "examples": [
              "I need an AI-powered IDX website with CRM lead management."
            ],
            "minLength": 1
          }
        }
      },
      "DemoRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "email",
          "phone",
          "state",
          "proposed_date_time"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Full name of the person requesting the demo.",
            "examples": [
              "Jordan Lee"
            ],
            "minLength": 1
          },
          "email": {
            "type": "string",
            "description": "Email address Agent Winds may use to confirm the demo.",
            "examples": [
              "jordan@example.com"
            ],
            "format": "email",
            "minLength": 1
          },
          "phone": {
            "type": "string",
            "description": "Phone number Agent Winds may use to confirm the demo.",
            "examples": [
              "+1-555-555-0142"
            ],
            "minLength": 1
          },
          "state": {
            "type": "string",
            "description": "Two-letter US state or District of Columbia postal abbreviation.",
            "examples": [
              "TX"
            ],
            "pattern": "^[A-Z]{2}$",
            "enum": [
              "AL",
              "AK",
              "AZ",
              "AR",
              "CA",
              "CO",
              "CT",
              "DE",
              "DC",
              "FL",
              "GA",
              "HI",
              "ID",
              "IL",
              "IN",
              "IA",
              "KS",
              "KY",
              "LA",
              "ME",
              "MD",
              "MA",
              "MI",
              "MN",
              "MS",
              "MO",
              "MT",
              "NE",
              "NV",
              "NH",
              "NJ",
              "NM",
              "NY",
              "NC",
              "ND",
              "OH",
              "OK",
              "OR",
              "PA",
              "RI",
              "SC",
              "SD",
              "TN",
              "TX",
              "UT",
              "VT",
              "VA",
              "WA",
              "WV",
              "WI",
              "WY"
            ],
            "minLength": 1
          },
          "proposed_date_time": {
            "type": "string",
            "description": "Preferred demo time as an ISO 8601 date-time with a UTC offset. Availability is subject to confirmation.",
            "examples": [
              "2030-09-17T14:00:00-05:00"
            ],
            "format": "date-time",
            "minLength": 1
          }
        }
      }
    }
  },
  "externalDocs": {
    "description": "Human-readable Agent Winds API documentation",
    "url": "https://agentwinds.com/api-docs"
  }
}
