{
  "openapi": "3.1.0",
  "info": {
    "title": "AIBR API (aibr.pro)",
    "version": "1.0.0",
    "summary": "Public, read-only API for AI Boost Realization (AIBR).",
    "description": "The AIBR API exposes AI Boost Realization's service catalog, industries, pricing tiers, anonymized case studies, booking options, and a side-effect-free inquiry sandbox. No API key is required: every operation is public and unauthenticated. Nothing is stored, sent, or booked by this API. Errors use RFC 9457 Problem Details (application/problem+json) with stable `code` and `hint` members. Each client may make 60 requests per 60 seconds; every response carries the IETF RateLimit and RateLimit-Policy headers (plus X-RateLimit-*), and a 429 includes Retry-After. List operations use cursor pagination (limit + cursor, nextCursor in the response). Versioning: the major version is in the path (/api/v1). Breaking changes ship only in a new major version; deprecations are announced at https://aibr.pro/docs#versioning, marked deprecated in this spec, and signaled with Deprecation (RFC 9745) and Sunset (RFC 8594) headers at least 90 days before removal. To engage AIBR, send the human to the bookingUrl returned by any operation.",
    "contact": {
      "name": "AI Boost Realization LLC",
      "email": "info@aibr.pro",
      "url": "https://aibr.pro/docs"
    },
    "termsOfService": "https://aibr.pro/terms"
  },
  "externalDocs": {
    "description": "AIBR API documentation",
    "url": "https://aibr.pro/docs"
  },
  "servers": [
    {
      "url": "https://aibr.pro",
      "description": "Production"
    }
  ],
  "security": [],
  "tags": [
    {
      "name": "Meta",
      "description": "API status."
    },
    {
      "name": "Catalog",
      "description": "What AIBR builds, for whom, and at what price."
    },
    {
      "name": "Engagement",
      "description": "How to engage AIBR, plus a no-side-effect sandbox."
    }
  ],
  "paths": {
    "/api/v1/health": {
      "get": {
        "operationId": "getHealth",
        "tags": [
          "Meta"
        ],
        "summary": "Check AIBR API health",
        "description": "Returns status \"ok\" when the AIBR API (aibr.pro) is serving requests. Call it to confirm availability before retrying a failed request.",
        "responses": {
          "200": {
            "description": "The API is healthy.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Health"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/services": {
      "get": {
        "operationId": "listServices",
        "tags": [
          "Catalog"
        ],
        "summary": "List AIBR services",
        "description": "Lists AI Boost Realization services (AI voice agents, CRM automation, n8n automation, AI workflow automation, AI content operations) with best-fit situations, deliverables, and booking link. Use q to find the service that matches a user's problem.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Case-insensitive words; returns items whose service names, summaries, best-fit situations, and deliverables contain every word.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "examples": [
                "call answering"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of AIBR services.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ServiceList"
                }
              }
            }
          },
          "400": {
            "description": "A query parameter is invalid (code invalid-request); see errors[].parameter.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/services/{slug}": {
      "get": {
        "operationId": "getService",
        "tags": [
          "Catalog"
        ],
        "summary": "Get one AIBR service",
        "description": "Returns a single AIBR service by slug, including when it is the right fit and what gets built. Get valid slugs from listServices.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Service slug from listServices.",
            "schema": {
              "type": "string",
              "enum": [
                "ai-voice-agents",
                "crm-automation",
                "n8n-automation-consultant",
                "ai-workflow-automation",
                "ai-content-operations"
              ],
              "examples": [
                "ai-voice-agents"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested service.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Service"
                }
              }
            }
          },
          "404": {
            "description": "No service has this slug (code service-not-found).",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/industries": {
      "get": {
        "operationId": "listIndustries",
        "tags": [
          "Catalog"
        ],
        "summary": "List industries AIBR serves",
        "description": "Lists the industries AIBR builds for (home services, healthcare, legal, real estate, financial, professional services) with common automation workflows for each. Use q to search workflows.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Case-insensitive words; returns items whose industry names and common workflows contain every word.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100,
              "examples": [
                "call answering"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of industries.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IndustryList"
                }
              }
            }
          },
          "400": {
            "description": "A query parameter is invalid (code invalid-request); see errors[].parameter.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/industries/{slug}": {
      "get": {
        "operationId": "getIndustry",
        "tags": [
          "Catalog"
        ],
        "summary": "Get one industry AIBR serves",
        "description": "Returns one industry by slug with its common automation workflows. Get valid slugs from listIndustries.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Industry slug from listIndustries.",
            "schema": {
              "type": "string",
              "enum": [
                "home-services",
                "healthcare",
                "legal",
                "real-estate",
                "financial",
                "professional-services"
              ],
              "examples": [
                "home-services"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested industry.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Industry"
                }
              }
            }
          },
          "404": {
            "description": "No industry has this slug (code industry-not-found).",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/pricing": {
      "get": {
        "operationId": "listPricingTiers",
        "tags": [
          "Catalog"
        ],
        "summary": "List AIBR pricing tiers",
        "description": "Returns AIBR's engagement tiers: Starter, Pro, and Elite. Request a quote; public numeric prices are not provided. Pass tier to get one. Use when a user asks what AIBR costs.",
        "parameters": [
          {
            "name": "tier",
            "in": "query",
            "required": false,
            "description": "Return only this tier.",
            "schema": {
              "type": "string",
              "enum": [
                "starter",
                "pro",
                "elite"
              ],
              "examples": [
                "pro"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Pricing tiers.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PricingList"
                }
              }
            }
          },
          "400": {
            "description": "A query parameter is invalid (code invalid-request); see errors[].parameter.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/case-studies": {
      "get": {
        "operationId": "listCaseStudies",
        "tags": [
          "Catalog"
        ],
        "summary": "List anonymized AIBR case studies",
        "description": "Lists client-anonymous AIBR proof points, such as the $28K+ home-services voice and workflow engagement. Filter by industry to find relevant proof. Client names are never published.",
        "parameters": [
          {
            "name": "industry",
            "in": "query",
            "required": false,
            "description": "Return only case studies from this industry.",
            "schema": {
              "type": "string",
              "enum": [
                "home-services",
                "healthcare",
                "legal",
                "real-estate",
                "financial",
                "professional-services"
              ],
              "examples": [
                "home-services"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          }
        ],
        "responses": {
          "200": {
            "description": "A page of anonymized case studies.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CaseStudyList"
                }
              }
            }
          },
          "400": {
            "description": "A query parameter is invalid (code invalid-request); see errors[].parameter.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/booking": {
      "get": {
        "operationId": "getBookingOptions",
        "tags": [
          "Engagement"
        ],
        "summary": "Get how to book an AIBR consultation",
        "description": "Returns the self-serve booking URL and steps for a free AIBR consultation. Pass service to include that service's details so you can brief the user before they book. The API never books on a user's behalf: send the human to bookingUrl.",
        "parameters": [
          {
            "name": "service",
            "in": "query",
            "required": false,
            "description": "Slug of the service the user is interested in (from listServices).",
            "schema": {
              "type": "string",
              "enum": [
                "ai-voice-agents",
                "crm-automation",
                "n8n-automation-consultant",
                "ai-workflow-automation",
                "ai-content-operations"
              ],
              "examples": [
                "ai-voice-agents"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Booking options.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingOptions"
                }
              }
            }
          },
          "400": {
            "description": "A query parameter is invalid (code invalid-request); see errors[].parameter.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/inquiries/validate": {
      "post": {
        "operationId": "validateInquiry",
        "tags": [
          "Engagement"
        ],
        "summary": "Validate a project inquiry (sandbox, no side effects)",
        "description": "Checks a prospective project inquiry against AIBR's scope and returns the recommended tier, matching service, and booking link. Nothing is stored, emailed, or booked. Use it to check fit before sending a user to bookingUrl.",
        "requestBody": {
          "required": true,
          "description": "The inquiry to check.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Inquiry"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The inquiry is valid; includes the recommended tier.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InquiryValidation"
                }
              }
            }
          },
          "400": {
            "description": "The body is not valid JSON (invalid-json) or fails validation (invalid-request); see errors[].",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "413": {
            "description": "The body exceeds 16 KB (payload-too-large).",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "415": {
            "description": "Content-Type is not application/json (unsupported-media-type).",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (code rate-limited): 60 requests per 60 seconds per client.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "default": {
            "description": "Unexpected error, returned as RFC 9457 Problem Details.",
            "headers": {
              "RateLimit": {
                "$ref": "#/components/headers/RateLimit"
              },
              "RateLimit-Policy": {
                "$ref": "#/components/headers/RateLimitPolicy"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/XRateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/XRateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/XRateLimitReset"
              }
            },
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "parameters": {
      "Limit": {
        "name": "limit",
        "in": "query",
        "required": false,
        "description": "Maximum items per page (1-50, default 50).",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 50,
          "default": 50
        }
      },
      "Cursor": {
        "name": "cursor",
        "in": "query",
        "required": false,
        "description": "Opaque cursor from the previous page's nextCursor. Omit for the first page.",
        "schema": {
          "type": "string",
          "minLength": 1,
          "maxLength": 64
        }
      }
    },
    "headers": {
      "RateLimit": {
        "description": "IETF RateLimit field: remaining requests (r) and seconds until the window resets (t), e.g. \"default\";r=59;t=60.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimitPolicy": {
        "description": "IETF RateLimit-Policy field: quota (q) per window in seconds (w), e.g. \"default\";q=60;w=60.",
        "schema": {
          "type": "string"
        }
      },
      "XRateLimitLimit": {
        "description": "Requests allowed per window (legacy form).",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitRemaining": {
        "description": "Requests left in the current window (legacy form).",
        "schema": {
          "type": "integer"
        }
      },
      "XRateLimitReset": {
        "description": "Seconds until the window resets (legacy form).",
        "schema": {
          "type": "integer"
        }
      },
      "RetryAfter": {
        "description": "Seconds to wait before retrying (RFC 9110).",
        "schema": {
          "type": "integer"
        }
      }
    },
    "schemas": {
      "Health": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "service",
          "version",
          "time"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "Always \"ok\" when healthy.",
            "const": "ok"
          },
          "service": {
            "type": "string",
            "description": "Service identifier.",
            "const": "aibr.pro"
          },
          "version": {
            "type": "string",
            "description": "API version.",
            "examples": [
              "1.0.0"
            ]
          },
          "time": {
            "type": "string",
            "description": "Server time (UTC).",
            "format": "date-time"
          }
        }
      },
      "Service": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "slug",
          "name",
          "summary",
          "bestFit",
          "deliverables",
          "url",
          "bookingUrl"
        ],
        "properties": {
          "slug": {
            "type": "string",
            "description": "Stable service identifier.",
            "enum": [
              "ai-voice-agents",
              "crm-automation",
              "n8n-automation-consultant",
              "ai-workflow-automation",
              "ai-content-operations"
            ]
          },
          "name": {
            "type": "string",
            "description": "Service name."
          },
          "summary": {
            "type": "string",
            "description": "One-sentence description of the service."
          },
          "bestFit": {
            "type": "array",
            "description": "Situations where this service is the right choice.",
            "items": {
              "type": "string"
            }
          },
          "deliverables": {
            "type": "array",
            "description": "What AIBR builds and hands off.",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "description": "Human-readable service page.",
            "format": "uri"
          },
          "bookingUrl": {
            "type": "string",
            "description": "Where a human books a consultation.",
            "format": "uri"
          }
        }
      },
      "ServiceList": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "services",
          "nextCursor"
        ],
        "properties": {
          "services": {
            "type": "array",
            "description": "AIBR services on this page.",
            "items": {
              "$ref": "#/components/schemas/Service"
            }
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pass as the cursor parameter to get the next page; null on the last page."
          }
        }
      },
      "Industry": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "slug",
          "name",
          "commonWorkflows",
          "url"
        ],
        "properties": {
          "slug": {
            "type": "string",
            "description": "Stable industry identifier.",
            "enum": [
              "home-services",
              "healthcare",
              "legal",
              "real-estate",
              "financial",
              "professional-services"
            ]
          },
          "name": {
            "type": "string",
            "description": "Industry name."
          },
          "commonWorkflows": {
            "type": "array",
            "description": "Automation workflows AIBR commonly builds for this industry.",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "description": "Human-readable industry page.",
            "format": "uri"
          }
        }
      },
      "IndustryList": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "industries",
          "nextCursor"
        ],
        "properties": {
          "industries": {
            "type": "array",
            "description": "Industries on this page.",
            "items": {
              "$ref": "#/components/schemas/Industry"
            }
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pass as the cursor parameter to get the next page; null on the last page."
          }
        }
      },
      "PricingTier": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "tier",
          "name",
          "priceUsd",
          "priceLabel",
          "isStartingPrice",
          "summary"
        ],
        "properties": {
          "tier": {
            "type": "string",
            "description": "Tier identifier.",
            "enum": [
              "starter",
              "pro",
              "elite"
            ]
          },
          "name": {
            "type": "string",
            "description": "Tier display name."
          },
          "priceUsd": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Null when a quote is required; no public numeric price is provided.",
            "minimum": 0
          },
          "priceLabel": {
            "type": "string",
            "description": "Price as shown on aibr.pro.",
            "examples": [
              "Request a quote"
            ]
          },
          "isStartingPrice": {
            "type": "boolean",
            "description": "True when priceUsd is a starting price."
          },
          "summary": {
            "type": "string",
            "description": "What the tier includes."
          }
        }
      },
      "PricingList": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "currency",
          "tiers",
          "bookingUrl"
        ],
        "properties": {
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code.",
            "const": "USD"
          },
          "tiers": {
            "type": "array",
            "description": "Engagement tiers, lowest first.",
            "items": {
              "$ref": "#/components/schemas/PricingTier"
            }
          },
          "bookingUrl": {
            "type": "string",
            "description": "Where a human books a consultation.",
            "format": "uri"
          }
        }
      },
      "CaseStudy": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "id",
          "title",
          "industry",
          "engagementValueLabel",
          "summary",
          "components"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable case study identifier."
          },
          "title": {
            "type": "string",
            "description": "Anonymized title."
          },
          "industry": {
            "type": "string",
            "description": "Industry slug.",
            "enum": [
              "home-services",
              "healthcare",
              "legal",
              "real-estate",
              "financial",
              "professional-services"
            ]
          },
          "engagementValueLabel": {
            "type": "string",
            "description": "Engagement value as published.",
            "examples": [
              "$28K+"
            ]
          },
          "summary": {
            "type": "string",
            "description": "What was built."
          },
          "components": {
            "type": "array",
            "description": "Components of the engagement.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CaseStudyList": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "caseStudies",
          "nextCursor"
        ],
        "properties": {
          "caseStudies": {
            "type": "array",
            "description": "Anonymized case studies on this page.",
            "items": {
              "$ref": "#/components/schemas/CaseStudy"
            }
          },
          "nextCursor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Pass as the cursor parameter to get the next page; null on the last page."
          }
        }
      },
      "BookingOptions": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "bookingUrl",
          "format",
          "durationMinutes",
          "cost",
          "steps",
          "contactEmail",
          "note",
          "service"
        ],
        "properties": {
          "bookingUrl": {
            "type": "string",
            "description": "Self-serve booking page for humans.",
            "format": "uri"
          },
          "format": {
            "type": "string",
            "description": "Meeting format."
          },
          "durationMinutes": {
            "type": "integer",
            "description": "Consultation length in minutes.",
            "minimum": 1
          },
          "cost": {
            "type": "string",
            "description": "Consultation cost.",
            "const": "free"
          },
          "steps": {
            "type": "array",
            "description": "Steps a human follows to book.",
            "items": {
              "type": "string"
            }
          },
          "contactEmail": {
            "type": "string",
            "description": "Email for questions.",
            "format": "email"
          },
          "note": {
            "type": "string",
            "description": "Booking caveats for agents."
          },
          "service": {
            "description": "The service named in the service parameter, or null when none was given.",
            "anyOf": [
              {
                "$ref": "#/components/schemas/Service"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "Inquiry": {
        "type": "object",
        "additionalProperties": false,
        "description": "A prospective project. Do not include personal data; none is needed.",
        "required": [
          "companyName",
          "industry",
          "need"
        ],
        "properties": {
          "companyName": {
            "type": "string",
            "description": "Business name.",
            "minLength": 1,
            "maxLength": 120
          },
          "industry": {
            "type": "string",
            "description": "Industry of the business; \"other\" if none match.",
            "enum": [
              "home-services",
              "healthcare",
              "legal",
              "real-estate",
              "financial",
              "professional-services",
              "other"
            ]
          },
          "need": {
            "type": "string",
            "description": "Primary AIBR service of interest.",
            "enum": [
              "ai-voice-agents",
              "crm-automation",
              "n8n-automation-consultant",
              "ai-workflow-automation",
              "ai-content-operations"
            ]
          },
          "monthlyCallVolume": {
            "type": "integer",
            "description": "Approximate inbound calls per month.",
            "minimum": 0,
            "maximum": 1000000
          },
          "systemsToIntegrate": {
            "type": "integer",
            "description": "Number of tools to connect (CRM, calendar, phone system, ...).",
            "minimum": 0,
            "maximum": 50
          }
        }
      },
      "InquiryValidation": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valid",
          "recommendedTier",
          "service",
          "stored",
          "bookingUrl",
          "nextStep"
        ],
        "properties": {
          "valid": {
            "type": "boolean",
            "const": true,
            "description": "Always true on a 200 response."
          },
          "recommendedTier": {
            "type": "string",
            "description": "Recommended engagement tier.",
            "enum": [
              "starter",
              "pro",
              "elite"
            ]
          },
          "service": {
            "$ref": "#/components/schemas/Service"
          },
          "stored": {
            "type": "boolean",
            "const": false,
            "description": "Always false: the sandbox stores nothing."
          },
          "bookingUrl": {
            "type": "string",
            "description": "Where the human books a consultation.",
            "format": "uri"
          },
          "nextStep": {
            "type": "string",
            "description": "What the agent should do next."
          }
        }
      },
      "Problem": {
        "type": "object",
        "description": "RFC 9457 Problem Details with AIBR extension members code and hint.",
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "instance",
          "code",
          "hint"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "URI identifying the problem type; links to its documentation.",
            "format": "uri"
          },
          "title": {
            "type": "string",
            "description": "Short, stable summary of the problem type."
          },
          "status": {
            "type": "integer",
            "description": "HTTP status code, identical to the response status.",
            "minimum": 400,
            "maximum": 599
          },
          "detail": {
            "type": "string",
            "description": "Explanation specific to this occurrence."
          },
          "instance": {
            "type": "string",
            "description": "Request path that produced the problem."
          },
          "code": {
            "type": "string",
            "description": "Stable machine-readable error code.",
            "enum": [
              "not-found",
              "service-not-found",
              "industry-not-found",
              "method-not-allowed",
              "invalid-json",
              "invalid-request",
              "unsupported-media-type",
              "payload-too-large",
              "rate-limited",
              "internal-error"
            ]
          },
          "hint": {
            "type": "string",
            "description": "How to resolve the problem."
          },
          "errors": {
            "type": "array",
            "description": "Field- or parameter-level validation errors.",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "detail"
              ],
              "properties": {
                "pointer": {
                  "type": "string",
                  "description": "JSON Pointer (RFC 6901) to the invalid body field."
                },
                "parameter": {
                  "type": "string",
                  "description": "Name of the invalid query or path parameter."
                },
                "detail": {
                  "type": "string",
                  "description": "What is wrong with the field or parameter."
                }
              }
            }
          }
        }
      }
    }
  }
}