{
    "openapi": "3.0.3",
    "info": {
        "title": "Seamless Surfaces API",
        "description": "Public API for Seamless Surfaces: service catalog, service areas, business info, and quote requests. Every GET endpoint is public with no authentication required. Errors are always returned as structured JSON with a code, a human-readable message, and a resolution hint.",
        "version": "1.0.0",
        "contact": {
            "name": "Seamless Surfaces",
            "url": "https://seamlesssurfacespros.com/ai-agent-resources/",
            "email": "info@seamlesssurfacespros.com"
        }
    },
    "servers": [
        {
            "url": "https://seamlesssurfacespros.com/wp-json/ssp/v1",
            "description": "Production"
        }
    ],
    "paths": {
        "/services": {
            "get": {
                "summary": "List all services",
                "operationId": "listServices",
                "responses": {
                    "200": {
                        "description": "All services Seamless Surfaces offers.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "services": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "slug": {
                                                        "type": "string",
                                                        "example": "polished-concrete"
                                                    },
                                                    "name": {
                                                        "type": "string",
                                                        "example": "Polished Concrete"
                                                    },
                                                    "url": {
                                                        "type": "string",
                                                        "format": "uri"
                                                    },
                                                    "description": {
                                                        "type": "string"
                                                    }
                                                },
                                                "required": [
                                                    "slug",
                                                    "name",
                                                    "url",
                                                    "description"
                                                ]
                                            }
                                        }
                                    },
                                    "required": [
                                        "services"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "/services/{slug}": {
            "get": {
                "summary": "Get a single service by slug",
                "operationId": "getService",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "example": "polished-concrete"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The matching service.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "slug": {
                                            "type": "string",
                                            "example": "polished-concrete"
                                        },
                                        "name": {
                                            "type": "string",
                                            "example": "Polished Concrete"
                                        },
                                        "url": {
                                            "type": "string",
                                            "format": "uri"
                                        },
                                        "description": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "slug",
                                        "name",
                                        "url",
                                        "description"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No service exists with that slug.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "code": {
                                            "type": "string",
                                            "example": "ssp_missing_field"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "status": {
                                                    "type": "integer"
                                                },
                                                "hint": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "status",
                                                "hint"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "code",
                                        "message",
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "/locations": {
            "get": {
                "summary": "List service areas",
                "operationId": "listLocations",
                "responses": {
                    "200": {
                        "description": "Metro areas served and the shop address.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "service_areas": {
                                            "type": "array",
                                            "items": {
                                                "type": "string"
                                            }
                                        },
                                        "shop_address": {
                                            "type": "object",
                                            "nullable": true
                                        }
                                    },
                                    "required": [
                                        "service_areas",
                                        "shop_address"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "/business-info": {
            "get": {
                "summary": "Get core business information",
                "operationId": "getBusinessInfo",
                "responses": {
                    "200": {
                        "description": "Name, contact details, address, and hours.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "name": {
                                            "type": "string"
                                        },
                                        "description": {
                                            "type": "string"
                                        },
                                        "url": {
                                            "type": "string",
                                            "format": "uri"
                                        },
                                        "email": {
                                            "type": "string",
                                            "format": "email"
                                        },
                                        "telephone": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "address": {
                                            "type": "object"
                                        },
                                        "opening_hours": {
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        },
                                        "business_type": {
                                            "type": "string"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/quote-request": {
            "post": {
                "summary": "Submit a quote request",
                "operationId": "createQuoteRequest",
                "description": "Zero-authentication endpoint for submitting a project quote request. Rate-limited per client to 5 requests per hour.",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "email": {
                                        "type": "string",
                                        "format": "email"
                                    },
                                    "phone": {
                                        "type": "string"
                                    },
                                    "service": {
                                        "type": "string",
                                        "description": "One of the slugs from GET /services, or free text."
                                    },
                                    "message": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "name",
                                    "message"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Request received.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "success",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Missing or invalid field.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "code": {
                                            "type": "string",
                                            "example": "ssp_missing_field"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "status": {
                                                    "type": "integer"
                                                },
                                                "hint": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "status",
                                                "hint"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "code",
                                        "message",
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "429": {
                        "description": "Rate limit exceeded.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "code": {
                                            "type": "string",
                                            "example": "ssp_missing_field"
                                        },
                                        "message": {
                                            "type": "string"
                                        },
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "status": {
                                                    "type": "integer"
                                                },
                                                "hint": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "status",
                                                "hint"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "code",
                                        "message",
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}