{
  "openapi": "3.0.1",
  "info": {
    "title": "Beam & Frame Calculator: Shear, Moment, Deflection",
    "description": "Structural analysis of beams, 2D frames and trusses: reactions, shear and bending moment diagrams, deflection, axial force, stress and L/360 checks. Plain-text loads and supports, SI or US units, PNG/SVG diagrams, CSV. For AI agents.",
    "version": "0.1",
    "x-build-id": "DccO0c51nlY3FMjbI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jumblemog~beam-calculator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jumblemog-beam-calculator",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/jumblemog~beam-calculator/runs": {
      "post": {
        "operationId": "runs-sync-jumblemog-beam-calculator",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/jumblemog~beam-calculator/run-sync": {
      "post": {
        "operationId": "run-sync-jumblemog-beam-calculator",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "length": {
            "title": "Beam length",
            "type": "string",
            "description": "The beam's length with a unit, such as 6 m, 4500 mm or 20 ft. A bare number uses metres (or feet when the other inputs are in US units)."
          },
          "supports": {
            "title": "Supports",
            "type": "array",
            "description": "Where the beam is held: 'simply supported', 'cantilever' (fixed at the left), 'fixed both ends', 'propped cantilever', or one line per support such as 'pin at 0', 'roller at 6 m', 'fixed at 0', 'roller at L/2', 'roller at end'. Default: simply supported.",
            "items": {
              "type": "string"
            }
          },
          "loads": {
            "title": "Loads",
            "type": "array",
            "description": "One load per line, downward unless it says up: point loads ('10 kN at 3 m', '2 kip at mid'), uniform loads over the whole beam ('5 kN/m', '200 lb/ft') or part of it ('5 kN/m from 1 to 4 m'), linearly varying loads ('0 to 8 kN/m from 0 to 6 m'), applied moments ('4 kNm clockwise at 2 m') and axial loads ('15 kN horizontal at end').",
            "items": {
              "type": "string"
            }
          },
          "hinges": {
            "title": "Internal hinges",
            "type": "array",
            "description": "Positions of internal hinges (no moment carried), such as 'at 4 m', for Gerber beams.",
            "items": {
              "type": "string"
            }
          },
          "section": {
            "title": "Cross-section",
            "type": "string",
            "description": "The beam's section: 'rectangle 100 x 200 mm' (width x depth), 'square 50 mm', 'circle 40 mm', 'tube 60.3 x 4 mm' (diameter x wall), 'box 100 x 50 x 5 mm', 'I 300 x 150 x 10.7 x 7.1 mm' (depth x width x flange x web), 'channel ...', nominal lumber '2x10', or its properties 'I = 8360 cm4, A = 53.8 cm2, depth = 300 mm'. Default: a 300 mm steel I-beam (12 in in US units)."
          },
          "material": {
            "title": "Material",
            "type": "string",
            "description": "steel, S235, S275, S355, A36, A992, A500, stainless, aluminum (6061, 6063), timber, C16, C24, glulam, douglas fir, spf, southern pine, concrete, titanium, copper, pvc, plywood, or 'E = 200 GPa, fy = 355 MPa'. The strength is used for the stress check. Default: steel."
          },
          "selfWeight": {
            "title": "Include self-weight",
            "type": "boolean",
            "description": "Add the member's own weight (from the section area and the material's density) as a downward load.",
            "default": false
          },
          "deflectionLimit": {
            "title": "Deflection limit (L/…)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Each span's deflection is checked against span / this number (cantilevers: twice their length / this number). 360 is typical for floors, 240 for roofs, 180 for cantilevers.",
            "default": 360
          },
          "units": {
            "title": "Units",
            "enum": [
              "auto",
              "SI",
              "US"
            ],
            "type": "string",
            "description": "Units for bare numbers and for the results. Automatic picks US when most units written are US units.",
            "default": "auto"
          },
          "frame": {
            "title": "Frame or truss (JSON)",
            "type": "object",
            "description": "A 2D frame or truss instead of a beam: {\"nodes\": [{\"id\": \"A\", \"x\": 0, \"y\": 0, \"support\": \"fixed\"}, ...], \"members\": [{\"id\": \"1\", \"from\": \"A\", \"to\": \"B\", \"section\": \"...\", \"material\": \"...\", \"release\": \"start|end|both\"}], \"loads\": [{\"node\": \"B\", \"fx\": 10, \"fy\": -20, \"moment\": 5}, {\"member\": \"2\", \"w\": -8, \"w2\": -4, \"from\": 0, \"to\": 3}, {\"member\": \"3\", \"wLocal\": -2}], \"truss\": true}. Coordinates in metres (feet in US units), y up; loads in global axes, so downward is negative; supports pin, roller, roller-x, fixed, guided. Example: {\"nodes\": [{\"id\": \"A\", \"x\": 0, \"y\": 0, \"support\": \"fixed\"}, {\"id\": \"B\", \"x\": 0, \"y\": 4}, {\"id\": \"C\", \"x\": 6, \"y\": 4}, {\"id\": \"D\", \"x\": 6, \"y\": 0, \"support\": \"pin\"}], \"members\": [{\"id\": \"1\", \"from\": \"A\", \"to\": \"B\"}, {\"id\": \"2\", \"from\": \"B\", \"to\": \"C\"}, {\"id\": \"3\", \"from\": \"C\", \"to\": \"D\"}], \"loads\": [{\"node\": \"B\", \"fx\": 10}, {\"member\": \"2\", \"w\": -8}]}"
          },
          "structures": {
            "title": "Several structures (batch)",
            "type": "array",
            "description": "A list of structures to analyze in one run, each an object with the fields above (length, supports, loads, ... or frame, plus title). Fields set outside the list (section, material, units, deflectionLimit, selfWeight) apply to every entry that doesn't set its own."
          },
          "title": {
            "title": "Title",
            "type": "string",
            "description": "A title for the results and files. Empty: one made from the supports and length."
          },
          "dataPoints": {
            "title": "Diagram points",
            "minimum": 10,
            "maximum": 5000,
            "type": "integer",
            "description": "How many points of the shear, moment and deflection diagrams to include in each result's diagram field. The CSV file always has every computed point.",
            "default": 200
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}