{
    "openapi": "3.0.3",
    "info": {
        "title": "Tint Atlanta API",
        "description": "Public API for Tint Atlanta, a professional window tinting business in Woodstock, GA serving Metro Atlanta since 1994. Use these endpoints to browse services, get instant price estimates, check appointment availability, and access FAQs. All endpoints are anonymous (no authentication required) and return JSON with next_actions guidance for multi-step workflows.",
        "version": "1.0.0",
        "contact": {
            "name": "Tint Atlanta",
            "url": "https://tintatlanta.com",
            "email": "info@tintatlanta.com"
        }
    },
    "servers": [
        {
            "url": "https://tintatlanta.com/api/v1",
            "description": "Production"
        }
    ],
    "paths": {
        "/services": {
            "get": {
                "operationId": "get_services",
                "summary": "Get the full service catalog with pricing",
                "description": "Returns the complete catalog of tinting services offered by Tint Atlanta including descriptions, pricing tiers for standard and ceramic film, film product specifications, and applicable addons. Use this when a user asks what services are available, needs to compare film options, or wants to see pricing before estimating.",
                "tags": [
                    "Discovery"
                ],
                "responses": {
                    "200": {
                        "description": "Service catalog with pricing, films, and addons",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/location": {
            "get": {
                "operationId": "get_location",
                "summary": "Get business location, hours, and service area",
                "description": "Returns Tint Atlanta's physical address, business hours for each day of the week, geographic coordinates, service area coverage across Metro Atlanta, and professional credentials. Use this when a user asks where the shop is located, what hours it's open, or whether it serves their area.",
                "tags": [
                    "Discovery"
                ],
                "responses": {
                    "200": {
                        "description": "Business location, hours, coordinates, and service area",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/faq": {
            "get": {
                "operationId": "get_faq",
                "summary": "Get frequently asked questions about window tinting",
                "description": "Returns common questions and answers about Tint Atlanta's services, pricing, Georgia tint law (32% VLT minimum for front windows), film products (Madico Black Pearl standard vs ceramic), installation process, and warranty coverage. Use this when a user has questions before getting an estimate or booking.",
                "tags": [
                    "Discovery"
                ],
                "parameters": [
                    {
                        "name": "category",
                        "in": "query",
                        "required": false,
                        "description": "Filter FAQs by service category",
                        "schema": {
                            "type": "string",
                            "enum": [
                                "automotive",
                                "residential",
                                "commercial",
                                "security",
                                "general"
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of FAQ objects with question and answer fields",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/availability": {
            "get": {
                "operationId": "check_availability",
                "summary": "Check available appointment time slots",
                "description": "Returns available appointment slots for a given date and service type, or a multi-day view of availability for the next N days. Use this when a user wants to know when they can bring their vehicle in for tinting. Returns specific time slots with availability status.",
                "tags": [
                    "Scheduling"
                ],
                "parameters": [
                    {
                        "name": "date",
                        "in": "query",
                        "required": false,
                        "description": "Specific date to check (returns multi-day view if omitted)",
                        "schema": {
                            "type": "string",
                            "format": "date",
                            "example": "2026-04-20"
                        }
                    },
                    {
                        "name": "service",
                        "in": "query",
                        "required": false,
                        "description": "Service ID (numeric) to check availability for. Default: 1 (automotive)",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    },
                    {
                        "name": "days",
                        "in": "query",
                        "required": false,
                        "description": "Number of days to show when date is not specified (1-30)",
                        "schema": {
                            "type": "integer",
                            "default": 7,
                            "minimum": 1,
                            "maximum": 30
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Available time slots for the requested date(s)",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/estimates": {
            "post": {
                "operationId": "estimate_price",
                "summary": "Get an instant price estimate for window tinting",
                "description": "Accepts a vehicle type, service, film type, coverage level, and optional addons, then returns an instant price breakdown with line items. Use this when a user wants to know how much tinting will cost for their specific vehicle. Does not create a quote or lead — pure price computation from published rates. The response includes next_actions to convert the estimate into a formal quote or book an appointment.",
                "tags": [
                    "Pricing"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "vehicle_type",
                                    "service",
                                    "film_type"
                                ],
                                "properties": {
                                    "vehicle_type": {
                                        "type": "string",
                                        "enum": [
                                            "sedan",
                                            "coupe",
                                            "suv",
                                            "truck",
                                            "wagon",
                                            "crossover",
                                            "van"
                                        ],
                                        "description": "Type of vehicle being tinted"
                                    },
                                    "service": {
                                        "type": "string",
                                        "enum": [
                                            "automotive",
                                            "film_removal",
                                            "clearplex"
                                        ],
                                        "description": "Service type"
                                    },
                                    "film_type": {
                                        "type": "string",
                                        "enum": [
                                            "standard",
                                            "ceramic"
                                        ],
                                        "description": "Film tier: standard (Madico Black Pearl NR, 55% IR rejection) or ceramic (Madico Black Pearl Nano Ceramic, 93% IR rejection)"
                                    },
                                    "coverage": {
                                        "type": "string",
                                        "enum": [
                                            "full",
                                            "front2"
                                        ],
                                        "default": "full",
                                        "description": "Coverage level: full vehicle or front 2 windows only"
                                    },
                                    "vehicle_year": {
                                        "type": "integer",
                                        "description": "Vehicle model year (optional, for display)"
                                    },
                                    "vehicle_make": {
                                        "type": "string",
                                        "description": "Vehicle manufacturer (optional, for display)"
                                    },
                                    "vehicle_model": {
                                        "type": "string",
                                        "description": "Vehicle model name (optional, for display)"
                                    },
                                    "addons": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "windshield_strip",
                                                "windshield",
                                                "sunroof",
                                                "nofault"
                                            ]
                                        },
                                        "description": "Optional add-on services"
                                    }
                                }
                            },
                            "example": {
                                "vehicle_type": "sedan",
                                "vehicle_year": 2024,
                                "vehicle_make": "Toyota",
                                "vehicle_model": "Camry",
                                "service": "automotive",
                                "film_type": "ceramic",
                                "coverage": "full",
                                "addons": [
                                    "windshield_strip"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Price estimate with line items, total, and next actions",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing or invalid fields"
                    }
                }
            }
        },
        "/quote-request": {
            "post": {
                "operationId": "request_quote",
                "summary": "Submit a quote request for commercial, residential, or security film",
                "description": "Creates a quote request for flat glass services (commercial buildings, residential homes, security film) that require custom pricing based on square footage, access requirements, and film type. Unlike the estimates endpoint which returns instant automotive pricing, these services require a site assessment. Provides a rough ballpark estimate ($16-18/sqft) if square footage is provided. Use this when a user needs window film for a building, office, home, or storefront.",
                "tags": [
                    "Quoting"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "required": [
                                    "first_name",
                                    "phone",
                                    "email",
                                    "service_type"
                                ],
                                "properties": {
                                    "first_name": {
                                        "type": "string",
                                        "description": "Customer first name"
                                    },
                                    "last_name": {
                                        "type": "string",
                                        "description": "Customer last name"
                                    },
                                    "phone": {
                                        "type": "string",
                                        "description": "Customer phone number for follow-up"
                                    },
                                    "email": {
                                        "type": "string",
                                        "format": "email",
                                        "description": "Customer email address"
                                    },
                                    "service_type": {
                                        "type": "string",
                                        "enum": [
                                            "commercial",
                                            "residential",
                                            "security"
                                        ],
                                        "description": "Type of flat glass service needed"
                                    },
                                    "company_name": {
                                        "type": "string",
                                        "description": "Business name (for commercial)"
                                    },
                                    "building_type": {
                                        "type": "string",
                                        "enum": [
                                            "office",
                                            "storefront",
                                            "warehouse",
                                            "restaurant",
                                            "medical",
                                            "church",
                                            "school",
                                            "home",
                                            "condo",
                                            "other"
                                        ],
                                        "description": "Type of building"
                                    },
                                    "square_footage": {
                                        "type": "number",
                                        "description": "Estimated square footage of glass to be filmed. Enables rough ballpark estimate."
                                    },
                                    "window_count": {
                                        "type": "integer",
                                        "description": "Approximate number of windows"
                                    },
                                    "floors": {
                                        "type": "integer",
                                        "description": "Number of floors in building"
                                    },
                                    "needs_ladder": {
                                        "type": "boolean",
                                        "description": "Whether upper-floor windows require ladder access (+$2/sqft)"
                                    },
                                    "furniture_moving": {
                                        "type": "boolean",
                                        "description": "Whether furniture needs to be moved for access"
                                    },
                                    "blinds_removal": {
                                        "type": "boolean",
                                        "description": "Whether blinds or curtains need removal and reinstallation"
                                    },
                                    "film_goals": {
                                        "type": "array",
                                        "items": {
                                            "type": "string",
                                            "enum": [
                                                "heat_reduction",
                                                "glare_reduction",
                                                "uv_protection",
                                                "privacy",
                                                "security",
                                                "decorative",
                                                "energy_savings",
                                                "leed_credits"
                                            ]
                                        },
                                        "description": "What the customer wants to achieve with window film"
                                    },
                                    "address": {
                                        "type": "string",
                                        "description": "Job site address"
                                    },
                                    "message": {
                                        "type": "string",
                                        "description": "Additional details about the project"
                                    }
                                }
                            },
                            "example": {
                                "first_name": "Sarah",
                                "last_name": "Johnson",
                                "phone": "770-555-0123",
                                "email": "sarah@example.com",
                                "service_type": "commercial",
                                "company_name": "Main Street Dental",
                                "building_type": "medical",
                                "square_footage": 400,
                                "floors": 1,
                                "needs_ladder": false,
                                "film_goals": [
                                    "heat_reduction",
                                    "glare_reduction",
                                    "uv_protection"
                                ],
                                "address": "123 Main St, Woodstock, GA 30188",
                                "message": "South-facing windows get very hot in the afternoon"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Quote request received with optional ballpark estimate",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing or invalid fields"
                    }
                }
            }
        }
    },
    "tags": [
        {
            "name": "Discovery",
            "description": "Browse services, location, and FAQs"
        },
        {
            "name": "Scheduling",
            "description": "Check appointment availability"
        },
        {
            "name": "Pricing",
            "description": "Get instant price estimates for automotive tinting"
        },
        {
            "name": "Quoting",
            "description": "Submit quote requests for commercial, residential, and security film"
        }
    ]
}