{
  "openapi": "3.0.3",
  "info": {
    "title": "Lead Harvester API",
    "version": "1.0.0",
    "description": "Google Maps'ten B2B işletme çıkarma — kredi tabanlı REST API. Auth: Bearer API key (lh_...)."
  },
  "servers": [
    { "url": "https://lead-harvester-omega.vercel.app", "description": "Production" },
    { "url": "http://localhost:3040", "description": "Local dev" }
  ],
  "security": [{ "bearerAuth": [] }],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "lh_XXXXXXXXXXXXXXXX"
      }
    },
    "schemas": {
      "Lead": {
        "type": "object",
        "properties": {
          "id": { "type": "string", "format": "uuid" },
          "business_name": { "type": "string", "nullable": true },
          "address": { "type": "string", "nullable": true },
          "phone": { "type": "string", "nullable": true },
          "website": { "type": "string", "nullable": true },
          "email": { "type": "string", "nullable": true },
          "rating": { "type": "number", "nullable": true },
          "review_count": { "type": "integer", "nullable": true },
          "category": { "type": "string", "nullable": true }
        }
      },
      "Error": {
        "type": "object",
        "properties": { "error": { "type": "string" } }
      }
    }
  },
  "paths": {
    "/api/v1/search": {
      "post": {
        "summary": "Google Maps araması yap",
        "description": "Şehir + sektör bazlı işletme listesi çıkarır. Her başarılı istek 1 kredi düşer.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["query"],
                "properties": {
                  "query": {
                    "type": "string",
                    "example": "diş kliniği",
                    "description": "Sektör veya anahtar kelime"
                  },
                  "location": {
                    "type": "string",
                    "example": "İstanbul",
                    "description": "Şehir/bölge (opsiyonel)"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 200,
                    "default": 20
                  },
                  "min_rating": { "type": "number", "example": 4.0 },
                  "min_reviews": { "type": "integer", "example": 20 },
                  "require_website": { "type": "boolean" }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Başarılı",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "search_id": { "type": "string", "format": "uuid" },
                    "credits_remaining": { "type": "integer" },
                    "credits_used": { "type": "integer" },
                    "count": { "type": "integer" },
                    "leads": {
                      "type": "array",
                      "items": { "$ref": "#/components/schemas/Lead" }
                    }
                  }
                }
              }
            }
          },
          "400": { "description": "query eksik" },
          "401": { "description": "API key geçersiz veya yok" },
          "402": { "description": "Yetersiz kredi" },
          "500": { "description": "Sağlayıcı hatası (Outscraper vb.)" }
        }
      }
    }
  }
}
