{
  "openapi": "3.1.0",
  "info": {
    "title": "VolusiaCrane.com Instant Crane Sizing & Dispatch Spec API",
    "version": "2.0.0",
    "description": "Interactive Crane Tonnage & Load-Radius Calculator and Direct Dispatch Spec Builder API for Volusia and Seminole County, FL (DeLand, Sanford, Orange City, Daytona Beach, Deltona, DeBary, Lake Mary, Oviedo, Port Orange, New Smyrna Beach). Computes required crane tonnage class (20–25T Boom Truck, 30–40T Hydraulic Truck Crane, 50–60T Hydraulic Crane, or 70–90+T All-Terrain Crane) from load weight, building height, and horizontal setback radius, and packages all 4 dispatcher variables for immediate operator pricing."
  },
  "servers": [
    {
      "url": "https://volusiacrane.com"
    }
  ],
  "paths": {
    "/api/quote": {
      "get": {
        "operationId": "calculateCraneSpecGet",
        "summary": "Check endpoint health and calculate crane tonnage class from query parameters",
        "parameters": [
          {
            "name": "liftType",
            "in": "query",
            "schema": { "type": "string" },
            "description": "Lift type (e.g. HVAC Rooftop Unit (RTU) Swap, Residential / Commercial Roof Trusses, Fiberglass Pool / Swim Spa)"
          },
          {
            "name": "city",
            "in": "query",
            "schema": { "type": "string" },
            "description": "Jobsite city in Volusia or Seminole County, FL (e.g. DeLand, Sanford, Orange City, Daytona Beach)"
          },
          {
            "name": "weightLbs",
            "in": "query",
            "schema": { "type": "string" },
            "description": "Load weight in lbs (e.g. 2500 or preset string)"
          },
          {
            "name": "buildingHeightFt",
            "in": "query",
            "schema": { "type": "string" },
            "description": "Building or lift height in feet (e.g. 25 or 2 Story (20–30 ft))"
          },
          {
            "name": "radiusFt",
            "in": "query",
            "schema": { "type": "string" },
            "description": "Horizontal setback radius from crane center pin to placement spot in feet (e.g. 75 or Long Reach: 70–100 ft)"
          }
        ],
        "responses": {
          "200": {
            "description": "Computed crane engineering spec and endpoint status JSON"
          }
        }
      },
      "post": {
        "operationId": "submitOrSizeCraneDispatchSpec",
        "summary": "Calculate crane tonnage spec (mode=size_only or dryRun=true) or submit a complete ready-to-price dispatch lead",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": ["size_only", "dispatch_lead"],
                    "description": "Set to size_only to compute recommendedCraneClass and estimatedBoomTipFt without submitting a lead"
                  },
                  "dryRun": {
                    "type": "boolean",
                    "description": "Set true to validate and return computed craneSpec + lead_preview without sending a Resend email"
                  },
                  "liftType": {
                    "type": "string",
                    "description": "HVAC Rooftop Unit (RTU) Swap, Residential / Commercial Roof Trusses, Fiberglass Pool / Swim Spa, Generator / Transformer / Heavy Mechanical, Structural Steel / Beams, or Tree / Marine / Other"
                  },
                  "city": {
                    "type": "string",
                    "description": "DeLand, Sanford, Orange City, Daytona Beach, Deltona, DeBary, Lake Mary, Oviedo, New Smyrna Beach, Port Orange, or Other Volusia / Seminole"
                  },
                  "weightLbs": {
                    "type": ["number", "string"],
                    "description": "Load weight in lbs or preset bracket"
                  },
                  "buildingHeightFt": {
                    "type": ["number", "string"],
                    "description": "Building / lift height in ft (Ground 0–10 ft, 1 Story 12–18 ft, 2 Story 20–30 ft, 3 Story 32–45 ft, 4+ Story 50+ ft)"
                  },
                  "radiusFt": {
                    "type": ["number", "string"],
                    "description": "Horizontal setback / radius in ft from crane setup to drop point (15–35 ft, 40–65 ft, 70–100 ft, 100–140+ ft)"
                  },
                  "riggingNeeds": {
                    "type": "string",
                    "description": "We have our own rigging/crew (Operator + Crane only), Need Spreader Bar / Nylon Slings, Need Full Rigging + Certified Rigger / Dogman, or Not sure — advise on call"
                  },
                  "scheduleWindow": {
                    "type": "string",
                    "description": "2-Hour Window (4-Hr Portal Min Ready), Half-Day (4 Hours), Full Day (8 Hours), or Emergency / Same-Day Dispatch"
                  },
                  "targetDate": {
                    "type": "string",
                    "description": "Target lift date or morning/afternoon schedule window"
                  },
                  "recommendedCraneClass": {
                    "type": "string",
                    "description": "Optional pre-calculated crane class (computed automatically if omitted)"
                  },
                  "estimatedBoomTipFt": {
                    "type": "string",
                    "description": "Optional pre-calculated boom tip height and radius (computed automatically if omitted)"
                  },
                  "name": {
                    "type": "string",
                    "description": "Contractor full name (required when submitting a dispatch lead)"
                  },
                  "company": {
                    "type": "string",
                    "description": "Contractor company or trade"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Direct cell or callback phone number (required when submitting a dispatch lead)"
                  },
                  "email": {
                    "type": "string",
                    "description": "Email address for dispatch confirmation and jobsite COI (required when submitting a dispatch lead)"
                  },
                  "notes": {
                    "type": "string",
                    "description": "Jobsite street address for satellite radius verification, unit count, overhead power lines, or special instructions"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Computed craneSpec JSON and dispatch status"
          }
        }
      }
    }
  }
}
