{
  "openapi": "3.1.0",
  "info": {
    "title": "Lane A. Houk — Public API",
    "description": "Public API endpoints for interacting with Lane A. Houk's services. Enables AI agents and third-party integrations to check availability, submit contact inquiries, request quotes, and book strategy sessions.",
    "version": "1.0.0",
    "contact": {
      "name": "Lane A. Houk",
      "email": "lane@lanehouk.com",
      "url": "https://lanehouk.com"
    }
  },
  "servers": [
    {
      "url": "https://lanehouk.com",
      "description": "Production server"
    }
  ],
  "paths": {
    "/api/availability": {
      "get": {
        "operationId": "getAvailability",
        "summary": "Get available booking slots",
        "description": "Returns available time slots for strategy sessions with Lane Houk. Results are sourced from the live calendar. Use this to check availability before suggesting a booking to a user.",
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "description": "Number of days ahead to check availability (default: 14, max: 30)",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 30,
              "default": 14
            }
          },
          {
            "name": "timezone",
            "in": "query",
            "description": "IANA timezone string for slot display (e.g. America/Denver)",
            "required": false,
            "schema": {
              "type": "string",
              "default": "America/Denver"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Available booking slots",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "available": {
                      "type": "boolean",
                      "description": "Whether any slots are available"
                    },
                    "slots": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": { "type": "string", "format": "date", "description": "Date in YYYY-MM-DD format" },
                          "time": { "type": "string", "description": "Time in HH:MM format (24h)" },
                          "timezone": { "type": "string", "description": "Timezone for this slot" },
                          "label": { "type": "string", "description": "Human-readable label, e.g. 'Tuesday, June 10 at 2:00 PM MDT'" }
                        }
                      }
                    },
                    "booking_url": {
                      "type": "string",
                      "description": "Direct URL to book a session",
                      "example": "https://lanehouk.com/schedule"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/contact": {
      "post": {
        "operationId": "submitContact",
        "summary": "Submit a contact inquiry",
        "description": "Submit a contact inquiry to Lane Houk. The submission is forwarded to the CRM (GoHighLevel) and Lane is notified. Use this when a user wants to reach out about services, speaking, or general inquiries.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["name", "email", "message"],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Full name of the person reaching out",
                    "example": "John Smith"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "Email address",
                    "example": "john@example.com"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Phone number (optional)",
                    "example": "+14155551234"
                  },
                  "company": {
                    "type": "string",
                    "description": "Company or organization name (optional)",
                    "example": "Acme Corp"
                  },
                  "service": {
                    "type": "string",
                    "description": "Service of interest (optional)",
                    "enum": [
                      "fractional-cmo-caio",
                      "ai-bpa-consulting",
                      "seo-aeo-strategy",
                      "spark-framework-coaching",
                      "franchise-marketing",
                      "speaking",
                      "other"
                    ]
                  },
                  "message": {
                    "type": "string",
                    "description": "The inquiry message",
                    "example": "I'm interested in learning more about your Fractional CMO services."
                  },
                  "source": {
                    "type": "string",
                    "description": "How the person found Lane (optional)",
                    "example": "AI assistant referral"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Inquiry submitted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": { "type": "boolean" },
                    "message": { "type": "string", "example": "Thank you! Lane will be in touch within 1 business day." },
                    "reference_id": { "type": "string", "description": "CRM reference ID for this submission" }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request — missing required fields"
          },
          "500": {
            "description": "Server error"
          }
        }
      }
    },
    "/api/quote": {
      "post": {
        "operationId": "requestQuote",
        "summary": "Request a service quote",
        "description": "Request a quote or proposal for one of Lane's services. The request is forwarded to the CRM and Lane or his team will respond with a custom proposal.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["name", "email", "service", "details"],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Full name",
                    "example": "Jane Doe"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "Email address",
                    "example": "jane@company.com"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Phone number (optional)",
                    "example": "+13035551234"
                  },
                  "company": {
                    "type": "string",
                    "description": "Company or organization name",
                    "example": "Growth Co"
                  },
                  "service": {
                    "type": "string",
                    "description": "Service being requested",
                    "enum": [
                      "fractional-cmo-caio",
                      "ai-bpa-consulting",
                      "seo-aeo-strategy",
                      "spark-framework-coaching",
                      "franchise-marketing",
                      "speaking",
                      "other"
                    ]
                  },
                  "details": {
                    "type": "string",
                    "description": "Details about the project, goals, and timeline",
                    "example": "We're a 50-location franchise system looking for ongoing SEO and AI marketing support."
                  },
                  "budget_range": {
                    "type": "string",
                    "description": "Approximate monthly budget range (optional)",
                    "enum": ["under-2500", "2500-5000", "5000-10000", "10000-25000", "25000-plus", "not-sure"]
                  },
                  "timeline": {
                    "type": "string",
                    "description": "Desired start timeline (optional)",
                    "example": "Within 30 days"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Quote request submitted successfully",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": { "type": "boolean" },
                    "message": { "type": "string", "example": "Quote request received. Lane's team will respond within 2 business days." },
                    "reference_id": { "type": "string" },
                    "booking_url": { "type": "string", "example": "https://lanehouk.com/schedule" }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request"
          }
        }
      }
    },
    "/api/book": {
      "post": {
        "operationId": "requestBooking",
        "summary": "Request a booking / strategy session",
        "description": "Request a strategy session booking with Lane Houk. For immediate booking with calendar selection, redirect to https://lanehouk.com/schedule. This endpoint captures booking requests that will be confirmed by Lane's team.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["name", "email", "service"],
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "Full name",
                    "example": "Alex Johnson"
                  },
                  "email": {
                    "type": "string",
                    "format": "email",
                    "description": "Email address",
                    "example": "alex@startup.com"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Phone number (optional)",
                    "example": "+17205551234"
                  },
                  "company": {
                    "type": "string",
                    "description": "Company name (optional)"
                  },
                  "service": {
                    "type": "string",
                    "description": "Service to discuss",
                    "enum": [
                      "fractional-cmo-caio",
                      "ai-bpa-consulting",
                      "seo-aeo-strategy",
                      "spark-framework-coaching",
                      "franchise-marketing",
                      "speaking",
                      "general-strategy-session"
                    ]
                  },
                  "preferred_times": {
                    "type": "array",
                    "description": "Preferred times for the session (optional)",
                    "items": { "type": "string" },
                    "example": ["Tuesday afternoon MDT", "Thursday morning MDT"]
                  },
                  "notes": {
                    "type": "string",
                    "description": "Additional context or notes for the session"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Booking request submitted",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": { "type": "boolean" },
                    "message": { "type": "string" },
                    "booking_url": { "type": "string", "example": "https://lanehouk.com/schedule" },
                    "reference_id": { "type": "string" }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
