{
 "openapi": "3.1.0",
 "info": {
  "title": "Dmsons Metal steel calculator and quote requests",
  "version": "1.0.0",
  "description": "Work out theoretical steel weights and send Dmsons Metal Pvt. Ltd. (Mumbai, India) a quote request. Dimensions are in millimetres; weights use 7,850 kg/m3. No prices are published."
 },
 "servers": [
  {
   "url": "https://dmsons.com"
  }
 ],
 "paths": {
  "/api/steel-weight": {
   "get": {
    "operationId": "calculateSteelWeight",
    "summary": "Theoretical weight of one item",
    "description": "plate needs thickness, width, length; round-bar needs diameter, length; pipe needs outside_diameter, wall_thickness, length; coil needs thickness, width, weight_mt; structural needs section, weight_mt.",
    "parameters": [
     {
      "name": "form",
      "in": "query",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "plate",
        "round-bar",
        "pipe",
        "coil",
        "structural"
       ]
      }
     },
     {
      "name": "grade",
      "in": "query",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "thickness",
      "in": "query",
      "required": false,
      "schema": {
       "type": "number"
      },
      "description": "mm"
     },
     {
      "name": "width",
      "in": "query",
      "required": false,
      "schema": {
       "type": "number"
      },
      "description": "mm"
     },
     {
      "name": "length",
      "in": "query",
      "required": false,
      "schema": {
       "type": "number"
      },
      "description": "mm"
     },
     {
      "name": "diameter",
      "in": "query",
      "required": false,
      "schema": {
       "type": "number"
      },
      "description": "mm"
     },
     {
      "name": "outside_diameter",
      "in": "query",
      "required": false,
      "schema": {
       "type": "number"
      },
      "description": "mm"
     },
     {
      "name": "wall_thickness",
      "in": "query",
      "required": false,
      "schema": {
       "type": "number"
      },
      "description": "mm"
     },
     {
      "name": "section",
      "in": "query",
      "required": false,
      "schema": {
       "type": "string"
      },
      "description": "structural only, e.g. ISMB 200"
     },
     {
      "name": "pieces",
      "in": "query",
      "required": false,
      "schema": {
       "type": "integer",
       "minimum": 1
      }
     },
     {
      "name": "weight_mt",
      "in": "query",
      "required": false,
      "schema": {
       "type": "number"
      },
      "description": "metric tonnes, for coil and structural"
     },
     {
      "name": "rate_per_kg",
      "in": "query",
      "required": false,
      "schema": {
       "type": "number"
      },
      "description": "optional rate in INR per kg supplied by the buyer; Dmsons publishes no prices"
     }
    ],
    "responses": {
     "200": {
      "description": "The weight",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "description": {
           "type": "string"
          },
          "pieces": {
           "type": [
            "integer",
            "null"
           ]
          },
          "kg_per_piece": {
           "type": [
            "number",
            "null"
           ]
          },
          "total_kg": {
           "type": "number"
          },
          "total_mt": {
           "type": "number"
          }
         }
        }
       }
      }
     },
     "400": {
      "description": "What is wrong with the request"
     }
    }
   }
  },
  "/api/quote": {
   "post": {
    "operationId": "createQuoteRequest",
    "summary": "Send a quote request",
    "description": "Only with the buyer's real contact details and agreement. The response says whether the request was delivered; if not, pass on its whatsapp_url.",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "lines",
         "contact"
        ],
        "properties": {
         "lines": {
          "type": "array",
          "minItems": 1,
          "maxItems": 30,
          "items": {
           "type": "object",
           "required": [
            "form"
           ],
           "properties": {
            "form": {
             "type": "string",
             "enum": [
              "plate",
              "round-bar",
              "pipe",
              "coil",
              "structural"
             ]
            },
            "grade": {
             "type": "string",
             "example": "IS 2062 GR A"
            },
            "thickness": {
             "type": "number",
             "description": "mm"
            },
            "width": {
             "type": "number",
             "description": "mm"
            },
            "length": {
             "type": "number",
             "description": "mm"
            },
            "diameter": {
             "type": "number",
             "description": "mm"
            },
            "outside_diameter": {
             "type": "number",
             "description": "mm"
            },
            "wall_thickness": {
             "type": "number",
             "description": "mm"
            },
            "section": {
             "type": "string",
             "description": "structural only, e.g. ISMB 200"
            },
            "pieces": {
             "type": "integer",
             "minimum": 1
            },
            "weight_mt": {
             "type": "number",
             "description": "metric tonnes, for coil and structural"
            },
            "rate_per_kg": {
             "type": "number",
             "description": "optional rate in INR per kg supplied by the buyer; Dmsons publishes no prices"
            }
           }
          }
         },
         "contact": {
          "type": "object",
          "required": [
           "name"
          ],
          "description": "A phone number or an email address is needed.",
          "properties": {
           "name": {
            "type": "string"
           },
           "company": {
            "type": "string"
           },
           "phone": {
            "type": "string"
           },
           "email": {
            "type": "string"
           }
          }
         },
         "delivery": {
          "type": "string",
          "description": "City or PIN code, or ex-Taloja"
         },
         "needed_by": {
          "type": "string"
         },
         "requirements": {
          "type": "array",
          "items": {
           "type": "string",
           "enum": [
            "Mill test certificate (EN 10204 3.1)",
            "Third-party inspection",
            "Ultrasonic testing",
            "Cut to size"
           ]
          }
         },
         "notes": {
          "type": "string"
         }
        }
       }
      }
     }
    },
    "responses": {
     "201": {
      "description": "Delivered to Dmsons"
     },
     "202": {
      "description": "Accepted but not delivered: use whatsapp_url"
     },
     "400": {
      "description": "What is wrong with the request"
     }
    }
   }
  },
  "/catalogue.json": {
   "get": {
    "operationId": "getCatalogue",
    "summary": "Every listed product",
    "responses": {
     "200": {
      "description": "The catalogue"
     }
    }
   }
  }
 }
}
