{
 "openapi": "3.1.0",
 "info": {
  "title": "Maglev Parts API",
  "version": "1.0.0",
  "description": "Read-only catalog API. No authentication. CORS open."
 },
 "servers": [
  {
   "url": "https://parts.trymaglev.com"
  }
 ],
 "paths": {
  "/api/index.json": {
   "get": {
    "operationId": "getIndex",
    "summary": "Categories, counts and endpoints",
    "responses": {
     "200": {
      "description": "Index"
     }
    }
   }
  },
  "/api/parts.json": {
   "get": {
    "operationId": "listParts",
    "summary": "Every part",
    "responses": {
     "200": {
      "description": "All parts"
     }
    }
   }
  },
  "/api/parts/{id}.json": {
   "get": {
    "operationId": "getPart",
    "summary": "One part",
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Part"
     },
     "404": {
      "description": "No such part"
     }
    }
   }
  },
  "/api/categories/{category}.json": {
   "get": {
    "operationId": "getCategory",
    "summary": "One category",
    "parameters": [
     {
      "name": "category",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "compute-modules",
        "motors",
        "actuators",
        "drone"
       ]
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Category"
     }
    }
   }
  },
  "/api/search": {
   "get": {
    "operationId": "searchParts",
    "summary": "Ranked search",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": true,
      "description": "Query: part number, brand, or spec words",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "lens",
      "in": "query",
      "required": false,
      "description": "Origin filter",
      "schema": {
       "type": "string",
       "enum": [
        "any",
        "not-cn",
        "us",
        "usmca",
        "allied"
       ]
      }
     },
     {
      "name": "ndaa",
      "in": "query",
      "required": false,
      "description": "1 for NDAA-compliant or Blue UAS listed only",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "category",
      "in": "query",
      "required": false,
      "description": "Limit to a category id",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "Max results",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Results"
     }
    }
   }
  },
  "/api/landed": {
   "get": {
    "operationId": "landedCost",
    "summary": "Landed-cost estimate",
    "parameters": [
     {
      "name": "id",
      "in": "query",
      "required": true,
      "description": "Part id",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "qty",
      "in": "query",
      "required": false,
      "description": "Quantity",
      "schema": {
       "type": "integer"
      }
     },
     {
      "name": "origin",
      "in": "query",
      "required": false,
      "description": "ISO-2 country it ships from",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "unit_usd",
      "in": "query",
      "required": false,
      "description": "Override unit price",
      "schema": {
       "type": "number"
      }
     },
     {
      "name": "freight",
      "in": "query",
      "required": false,
      "description": "Freight in USD",
      "schema": {
       "type": "number"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "Estimate"
     }
    }
   }
  },
  "/api/trade.json": {
   "get": {
    "operationId": "getTrade",
    "summary": "Duty and compliance reference data",
    "responses": {
     "200": {
      "description": "Trade data"
     }
    }
   }
  }
 }
}