{
  "openapi": "3.1.1",
  "info": {
    "title": "Sizewise API",
    "version": "1.0.0",
    "summary": "Deterministic tools for people and AI agents.",
    "description": "Every endpoint performs the same calculation as the human page and returns inputs, result, units, assumptions, sources, warnings and computedAt. MCP endpoint: /mcp."
  },
  "servers": [
    {
      "url": "https://sizewise.usefulweb.app"
    }
  ],
  "paths": {
    "/api/v1/tools": {
      "get": {
        "operationId": "listTools",
        "summary": "Catalog of all tools",
        "responses": {
          "200": {
            "description": "Tool list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/{id}": {
      "get": {
        "operationId": "getTool",
        "summary": "Definition of one tool",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "sizewise-scale-compare",
                "sizewise-fit-count",
                "sizewise-big-number",
                "sizewise-money-stack",
                "sizewise-life-weeks",
                "sizewise-rate-counter",
                "unitproof"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "404": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/sizewise-scale-compare/calculate": {
      "post": {
        "operationId": "calculateSizewiseScaleCompare",
        "summary": "Line up buildings, animals, planets or atoms side by side, drawn to true scale.",
        "description": "Compares the sizes of up to 24 things — from atoms and viruses to skyscrapers, stars and galaxies — and draws them to the same scale or as pairs with the ratio between neighbours. 337 objects come from Wikidata with their sources; add your own as “Name = 1.8 m”.\n\nMethodology:\n- Each object’s size is one Wikidata statement: height (P2048), length (P2043), width (P2049), diameter (P2386, or twice the radius P2120), wingspan (P2050), summit elevation (P2044) or atomic radius (P14936, doubled). The curation script took the preferred statement, else the largest statement without qualifiers, unless a specific one was chosen (for example a building’s height to the tip of its spire as listed).\n- True scale: every object gets the same metres per pixel, so the largest one fills the drawing height; anything below one pixel is marked as too small to see.\n- Pairs: each neighbour pair is drawn at its own scale with the ratio between them, which keeps sizes 10^30 apart readable.\n- Silhouettes are generic shapes drawn for Sizewise; only the measured dimension is to scale (the other side uses the object’s own second dimension when Wikidata has one).\n\nSizes of animals and dinosaurs vary between individuals and estimates; Wikidata values can be maximum or typical sizes. Each row names the exact statement, so you can check it.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "sizewise_scale_compare",
        "x-owner-app": "sizewise",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SizewiseScaleCompareInput"
              },
              "examples": {
                "example1": {
                  "summary": "Landmarks and you",
                  "value": {
                    "objects": "Statue of Liberty, Eiffel Tower, Burj Khalifa, Me = 1.8 m",
                    "sort": "size",
                    "layout": "true-scale"
                  }
                },
                "example2": {
                  "summary": "From an atom to the universe, in pairs",
                  "value": {
                    "objects": "Hydrogen atom, Red blood cell, Golf ball, Blue whale, Mount Everest, Earth, Sun, Milky Way",
                    "layout": "pairs"
                  }
                },
                "example3": {
                  "summary": "The planets",
                  "value": {
                    "objects": "Mercury, Mars, Venus, Earth, Neptune, Uranus, Saturn (without rings), Jupiter",
                    "title": "Planets to scale"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SizewiseScaleCompareResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/sizewise-fit-count/calculate": {
      "post": {
        "operationId": "calculateSizewiseFitCount",
        "summary": "How many Earths fit in the Sun, golf balls in a room or pallets in a trailer?",
        "description": "Counts how many of one thing fit in another by length, by area, by volume (with the packing fractions of real spheres) or as whole boxes stacked in layers, using Wikidata sizes or your own dimensions.\n\nMethodology:\n- Length: the container’s longest known dimension divided by the item’s. Area: rectangles from two dimensions or the cross-section of a round object (π d² ÷ 4). Volume: boxes from three dimensions, spheres from the diameter (π d³ ÷ 6).\n- Round items lose space to gaps: equal spheres fill at most π ÷ (3√2) ≈ 74.05 % (Kepler conjecture, proved by Hales), about 64 % when poured at random (random close packing); circles in a plane at most π ÷ (2√3) ≈ 90.69 %.\n- Whole boxes: for each choice of the upright side, the floor is filled with rows in up to two orientations (all splits tried), and the layers are stacked; the best total wins. Mixed patterns beyond two row orientations are not searched, so the count is a guaranteed lower bound.\n\nReal objects are not perfect spheres or boxes; the counts are geometric. Planets and stars are treated as spheres of their mean or equatorial diameter.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "sizewise_fit_count",
        "x-owner-app": "sizewise",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SizewiseFitCountInput"
              },
              "examples": {
                "example1": {
                  "summary": "Earths in the Sun",
                  "value": {
                    "item": "Earth",
                    "container": "Sun",
                    "mode": "volume",
                    "packing": "none"
                  }
                },
                "example2": {
                  "summary": "EUR-pallets on a 13.6 m trailer floor",
                  "value": {
                    "item": "Pallet load = 1.2 × 0.8 × 1.6 m",
                    "container": "Trailer = 13.6 × 2.48 × 2.7 m",
                    "mode": "boxes",
                    "keepUpright": true
                  }
                },
                "example3": {
                  "summary": "Golf balls in a cubic metre box",
                  "value": {
                    "item": "Golf ball",
                    "container": "Box = 1 × 1 × 1 m",
                    "mode": "volume",
                    "packing": "random"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SizewiseFitCountResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/sizewise-big-number/calculate": {
      "post": {
        "operationId": "calculateSizewiseBigNumber",
        "summary": "What does a googol, 2^64 or 8 billion really mean? Names, digits and counting time.",
        "description": "Explains any big number written as digits, words, scientific notation, powers or factorials: exact digits, scientific notation, the short- and long-scale names, how long counting to it takes, how high a stack of banknotes it makes and which famous numbers are close.\n\nMethodology:\n- Numbers are kept exact as big integers up to 20 000 digits (factorials up to 3 000! exactly, larger ones from the Stirling series); beyond that only the logarithm is kept.\n- Names follow the Conway–Wechsler system for 10^(3n+3) on the short scale (English, US) and 10^(6n) / 10^(6n+3) (-illion / -illiard) on the long scale used in most of continental Europe, with the traditional dictionary spellings from 10^48 to 10^60.\n- Counting time uses the Julian year of 365.25 days and the age of the universe from Planck 2018 (13.787 billion years). The banknote stack uses 0.0043 in (0.109 mm) per US note.\n\nNumber names beyond the dictionary ones are systematic constructions; dictionaries rarely list them.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "sizewise_big_number",
        "x-owner-app": "sizewise",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SizewiseBigNumberInput"
              },
              "examples": {
                "example1": {
                  "summary": "A googol",
                  "value": {
                    "number": "googol"
                  }
                },
                "example2": {
                  "summary": "Grains on a chessboard (2^64)",
                  "value": {
                    "number": "2^64"
                  }
                },
                "example3": {
                  "summary": "People on Earth",
                  "value": {
                    "number": "8,117,059,282"
                  }
                },
                "example4": {
                  "summary": "Shuffles of a card deck",
                  "value": {
                    "number": "52!"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SizewiseBigNumberResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/sizewise-money-stack/calculate": {
      "post": {
        "operationId": "calculateSizewiseMoneyStack",
        "summary": "How tall is a million dollars? Banknotes as a stack, by weight and on pallets.",
        "description": "Turns an amount of money into banknotes: how many notes, how high the stack, what it weighs, the area laid flat and how many EUR-pallets it fills, compared with real objects. US dollar and euro note sizes from the issuers, or your own notes.\n\nMethodology:\n- Notes = amount ÷ note value, rounded up. Stack height = notes × thickness; mass = notes × mass per note; flat area = notes × length × width.\n- US notes: 6.14 × 2.61 in, 0.0043 in thick, about 1 g each. Check: a stack one mile high holds 14.7 million notes, matching the U.S. Currency Education Program’s “more than 14.5 million”.\n- Pallets: the EUR-pallet’s 1.2 × 0.8 m deck (Wikidata Q1281598) is filled with notes in the best row arrangement, stacked to the chosen load height.\n\nBanknotes in circulation are worn and slightly thicker; real bundles add bands and air. The ECB publishes no thickness or mass for euro notes: those values are your assumption.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "sizewise_money_stack",
        "x-owner-app": "sizewise",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SizewiseMoneyStackInput"
              },
              "examples": {
                "example1": {
                  "summary": "One million dollars in $100 notes",
                  "value": {
                    "amount": "1 million",
                    "currency": "usd",
                    "denomination": 100
                  }
                },
                "example2": {
                  "summary": "One trillion dollars",
                  "value": {
                    "amount": "1 trillion",
                    "currency": "usd",
                    "denomination": 100
                  }
                },
                "example3": {
                  "summary": "Half a million euros in €50 notes",
                  "value": {
                    "amount": "500000",
                    "currency": "eur",
                    "denomination": 50,
                    "thicknessMm": 0.11
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SizewiseMoneyStackResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/sizewise-life-weeks/calculate": {
      "post": {
        "operationId": "calculateSizewiseLifeWeeks",
        "summary": "Your life as a grid of weeks: one row per year, with milestones and exact counts.",
        "description": "Draws a life-in-weeks grid from a birth date — one row per year, 52 boxes per row — with the current week, your milestones and exact counts of days, weeks, Sundays and leap days lived. Nothing is stored.\n\nMethodology:\n- Rows start on each birthday (29 February birthdays fall on 28 February in common years); box n of a row covers days 7(n−1) to 7n−1 after the birthday, and the 52nd box also holds the last one or two days of the year.\n- Days, Sundays and leap days are exact counts of UTC calendar days from the birth date to the chosen day, both included for Sundays and leap days. Full Moons are days lived ÷ 29.530589 (mean synodic month, Meeus).\n- The grid length is your choice (90 years by default); it is not a life-expectancy estimate.\n\nNothing you enter is stored on the server beyond the request itself. The grid is a way to picture time, not a prediction.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "sizewise_life_weeks",
        "x-owner-app": "sizewise",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SizewiseLifeWeeksInput"
              },
              "examples": {
                "example1": {
                  "summary": "Born 15 June 1990, on 8 November 2026",
                  "value": {
                    "birthDate": "1990-06-15",
                    "today": "2026-11-08",
                    "years": 90,
                    "milestones": "1996-09-02 First day at school\n2008-07-01 First job"
                  }
                },
                "example2": {
                  "summary": "A leap-day birthday",
                  "value": {
                    "birthDate": "2000-02-29",
                    "today": "2026-11-08",
                    "years": 80
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SizewiseLifeWeeksResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/sizewise-rate-counter/calculate": {
      "post": {
        "operationId": "calculateSizewiseRateCounter",
        "summary": "Turn “so much per year” into per second, project it, and embed a live counter.",
        "description": "Converts a rate between seconds, minutes, hours, days, weeks, months and years, projects it over time, finds when it reaches a target and writes a small self-contained HTML counter (“since you opened this page …”) for your own site.\n\nMethodology:\n- Rate per second = amount ÷ the length of the chosen period: minute 60 s, hour 3 600 s, day 86 400 s, week 604 800 s, year 365.25 days (Julian year), month one twelfth of that.\n- Projections and the time to a target are rate × time and target ÷ rate; nothing compounds.\n- The embed is plain HTML with a 6-line script: it counts from the moment the page opened in the visitor’s browser, sends nothing anywhere and slows to one update per second for people who prefer reduced motion.\n\nA constant rate is a simplification: real rates (spending, births, traffic) change through the day and the year.",
        "tags": [
          "apps"
        ],
        "x-mcp-tool": "sizewise_rate_counter",
        "x-owner-app": "sizewise",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SizewiseRateCounterInput"
              },
              "examples": {
                "example1": {
                  "summary": "Light to the Moon",
                  "value": {
                    "label": "Light travels",
                    "amount": 299792.458,
                    "per": "second",
                    "unit": "km",
                    "elapsedSeconds": 60,
                    "target": 384400
                  }
                },
                "example2": {
                  "summary": "Earth around the Sun",
                  "value": {
                    "label": "Earth moves around the Sun",
                    "amount": 29.78,
                    "per": "second",
                    "unit": "km",
                    "elapsedSeconds": 3600,
                    "target": 0
                  }
                },
                "example3": {
                  "summary": "A yearly budget per second",
                  "value": {
                    "label": "Budget spent",
                    "amount": 50000000,
                    "per": "year",
                    "unit": "EUR",
                    "elapsedSeconds": 86400,
                    "decimals": 2
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SizewiseRateCounterResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tools/unitproof/calculate": {
      "post": {
        "operationId": "calculateUnitproof",
        "summary": "Unit maths you can audit: dimension check, exact factors and a full derivation tree.",
        "description": "Type an expression such as \"3.5 km/h * 2 h to m\", \"72 F to C\" or \"1500 W * 3 h to kWh\". UnitProof parses it, checks dimensions over the SI base units, applies exact NIST/SI conversion factors and shows every step as a derivation tree, including correct absolute-vs-difference temperature handling.\n\nMethodology:\n- A tokenizer and recursive-descent parser read numbers (incl. scientific notation), units with SI prefixes (q…Q, incl. µ/u) and binary prefixes (Ki…Ei for bit/B), ^ powers (also ² ³ and \"m2\"), × ÷ + − and parentheses. Juxtaposition (\"2 h\", \"kg m\") binds tighter than explicit * and /, so \"60 km / 2 h\" = 30 km/h.\n- Every quantity is a value in coherent SI units plus a dimension vector over m, kg, s, A, K, mol, cd and bit; ISO 4217 currency codes are carried as opaque dimensions (never converted). The table has 144 named units.\n- Multiplication adds dimension exponents, division subtracts them, powers scale them; addition, subtraction and conversion require identical dimensions, otherwise the calculation stops with an explanation of the mismatch.\n- Temperatures: \"72 F\" or \"-40 C\" (a number directly followed by °C/°F) is an absolute temperature converted with its offset; absolute − absolute gives a difference; absolute ± difference stays absolute; multiplying, dividing or powering °C/°F is refused as ambiguous (use K or deltaC/deltaF). Converting a difference to °C/°F applies only the scale factor.\n- Exact factors follow the SI Brochure (9th ed.) and NIST SP 811 Appendix B (international foot/pound, US liquid gallon = 231 in³, Btu_IT, thermochemical calorie, etc.); conventional or measured values (mmHg, inHg, dalton) are flagged as not exact.\n- The derivation graph lists literals, unit definitions (with factor), operations and the final conversion; values are IEEE-754 doubles, shown unrounded and rounded to the requested significant digits.",
        "tags": [
          "developer"
        ],
        "x-mcp-tool": "unitproof",
        "x-owner-app": "ravingdesk",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnitproofInput"
              },
              "examples": {
                "example1": {
                  "summary": "Distance: 3.5 km/h for 2 h in metres",
                  "value": {
                    "expression": "3.5 km/h * 2 h to m"
                  }
                },
                "example2": {
                  "summary": "Temperature: 72 °F in °C",
                  "value": {
                    "expression": "72 F to C"
                  }
                },
                "example3": {
                  "summary": "Energy: 1500 W for 3 h in kWh",
                  "value": {
                    "expression": "1500 W * 3 h to kWh"
                  }
                },
                "example4": {
                  "summary": "Force: 75 kg at 9.81 m/s²",
                  "value": {
                    "expression": "9.81 m/s^2 * 75 kg to N"
                  }
                },
                "example5": {
                  "summary": "Mixed lengths: 1 mi + 200 m in km",
                  "value": {
                    "expression": "1 mi + 200 m to km",
                    "significantDigits": 4
                  }
                },
                "example6": {
                  "summary": "Opaque currency: 5 USD/kg × 2.5 kg",
                  "value": {
                    "expression": "5 USD/kg * 2.5 kg"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnitproofResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workflows": {
      "get": {
        "operationId": "listWorkflows",
        "summary": "Multi-tool workflows",
        "responses": {
          "200": {
            "description": "Workflow list.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "SizewiseScaleCompareInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "objects": {
            "title": "Objects (comma or new line between them)",
            "description": "Names from the Sizewise list (for example Blue whale, Earth, Burj Khalifa), Wikidata IDs such as Q243, or your own object as “Name = 9 m”.",
            "type": "string",
            "maxLength": 3000,
            "default": "Statue of Liberty, Eiffel Tower, Burj Khalifa, Me = 1.8 m"
          },
          "sort": {
            "title": "Order",
            "type": "string",
            "enum": [
              "size",
              "input"
            ],
            "default": "size"
          },
          "layout": {
            "title": "Drawing",
            "type": "string",
            "enum": [
              "true-scale",
              "pairs"
            ],
            "default": "true-scale"
          },
          "title": {
            "title": "Title on the drawing",
            "type": "string",
            "maxLength": 80,
            "default": ""
          }
        },
        "required": []
      },
      "SizewiseScaleCompareResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object"
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SizewiseFitCountInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "item": {
            "title": "What to fit",
            "description": "An object from the list, or your own: “Box = 40 × 30 × 20 cm”, “Ball = ⌀ 22 cm” or “Rope = 12 m”.",
            "type": "string",
            "maxLength": 120,
            "default": "Earth"
          },
          "container": {
            "title": "Where to fit it",
            "description": "Same choices as above, for example “Room = 5 × 4 × 2.5 m”.",
            "type": "string",
            "maxLength": 120,
            "default": "Sun"
          },
          "mode": {
            "title": "Count by",
            "type": "string",
            "enum": [
              "volume",
              "area",
              "length",
              "boxes"
            ],
            "default": "volume"
          },
          "packing": {
            "title": "Gaps between round things",
            "type": "string",
            "enum": [
              "none",
              "random",
              "densest"
            ],
            "default": "none"
          },
          "keepUpright": {
            "title": "Keep boxes upright",
            "description": "Whole boxes only: the third dimension stays vertical (pallets, fridges).",
            "type": "boolean",
            "default": false
          }
        },
        "required": []
      },
      "SizewiseFitCountResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object"
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SizewiseBigNumberInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "number": {
            "title": "Number",
            "description": "For example 8 billion, 8117059282, 6.02e23, 3 × 10^8, 2^64, 52! or googol.",
            "type": "string",
            "maxLength": 200,
            "default": "googol"
          },
          "perSecond": {
            "title": "Counting speed",
            "type": "number",
            "minimum": 0.000001,
            "maximum": 1000000000000,
            "default": 1,
            "x-unit": "per second"
          }
        },
        "required": []
      },
      "SizewiseBigNumberResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object"
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SizewiseMoneyStackInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "amount": {
            "title": "Amount",
            "description": "For example 10000, 1 million, 2.5 billion or 1e12.",
            "type": "string",
            "maxLength": 60,
            "default": "1 million"
          },
          "currency": {
            "title": "Notes",
            "type": "string",
            "enum": [
              "usd",
              "eur",
              "custom"
            ],
            "default": "usd"
          },
          "denomination": {
            "title": "Value of one note",
            "type": "number",
            "minimum": 0.01,
            "maximum": 1000000000,
            "default": 100
          },
          "thicknessMm": {
            "title": "Thickness of one note (euro and own notes)",
            "type": "number",
            "minimum": 0.03,
            "maximum": 1,
            "default": 0.11,
            "x-unit": "mm"
          },
          "massG": {
            "title": "Mass of one note (own notes, optional)",
            "type": "number",
            "minimum": 0,
            "maximum": 100,
            "default": 0,
            "x-unit": "g"
          },
          "noteLengthMm": {
            "title": "Note length (own notes)",
            "type": "number",
            "minimum": 10,
            "maximum": 400,
            "default": 150,
            "x-unit": "mm"
          },
          "noteWidthMm": {
            "title": "Note width (own notes)",
            "type": "number",
            "minimum": 10,
            "maximum": 400,
            "default": 70,
            "x-unit": "mm"
          },
          "loadHeightM": {
            "title": "Load height on a pallet",
            "type": "number",
            "minimum": 0.1,
            "maximum": 2.5,
            "default": 1,
            "x-unit": "m"
          }
        },
        "required": []
      },
      "SizewiseMoneyStackResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object"
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SizewiseLifeWeeksInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "birthDate": {
            "title": "Birth date",
            "type": "string",
            "format": "date",
            "default": "1990-06-15"
          },
          "today": {
            "title": "Count up to (empty = today)",
            "type": "string",
            "format": "date"
          },
          "years": {
            "title": "Years in the grid",
            "type": "integer",
            "minimum": 1,
            "maximum": 120,
            "default": 90
          },
          "milestones": {
            "title": "Milestones (one per line: date, then a label)",
            "description": "For example “2012-09-01 First job”.",
            "type": "string",
            "maxLength": 4000,
            "default": ""
          }
        },
        "required": []
      },
      "SizewiseLifeWeeksResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object"
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "SizewiseRateCounterInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "label": {
            "title": "What is counted",
            "type": "string",
            "maxLength": 80,
            "default": "Light travels"
          },
          "amount": {
            "title": "Amount",
            "type": "number",
            "minimum": 1e-12,
            "maximum": 1e+30,
            "default": 299792.458
          },
          "per": {
            "title": "Per",
            "type": "string",
            "enum": [
              "second",
              "minute",
              "hour",
              "day",
              "week",
              "month",
              "year"
            ],
            "default": "second"
          },
          "unit": {
            "title": "Unit of the amount",
            "type": "string",
            "maxLength": 30,
            "default": "km"
          },
          "elapsedSeconds": {
            "title": "Elapsed time",
            "type": "number",
            "minimum": 0,
            "maximum": 1000000000000,
            "default": 60,
            "x-unit": "s"
          },
          "target": {
            "title": "Target (optional)",
            "type": "number",
            "minimum": 0,
            "maximum": 1e+30,
            "default": 0
          },
          "decimals": {
            "title": "Decimals in the counter",
            "type": "integer",
            "minimum": 0,
            "maximum": 6,
            "default": 0
          }
        },
        "required": []
      },
      "SizewiseRateCounterResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object"
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "UnitproofInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "expression": {
            "title": "Expression",
            "description": "Numbers, units with SI prefixes, ^ powers, * / + − and parentheses; optional \"to\"/\"in\" target. Juxtaposition (e.g. \"2 h\") binds tighter than * and /. Bare C/F mean °C/°F.",
            "type": "string",
            "maxLength": 300
          },
          "significantDigits": {
            "title": "Significant digits (rounded value)",
            "type": "integer",
            "minimum": 1,
            "maximum": 15,
            "default": 6
          }
        },
        "required": [
          "expression"
        ]
      },
      "UnitproofResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "expression",
              "value",
              "valueRounded",
              "significantDigits",
              "unit",
              "target",
              "valueSI",
              "unitSI",
              "dimension",
              "quantity",
              "dimensionCheck",
              "temperature",
              "alternatives",
              "derivation",
              "unitsUsed"
            ],
            "properties": {
              "expression": {
                "type": "string"
              },
              "value": {
                "type": "number",
                "description": "Unrounded IEEE-754 double result in the output unit."
              },
              "valueRounded": {
                "type": "number"
              },
              "significantDigits": {
                "type": "integer",
                "minimum": 1,
                "maximum": 15
              },
              "unit": {
                "type": "string"
              },
              "target": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "valueSI": {
                "type": "number",
                "description": "Value in coherent SI units (kelvin for temperatures)."
              },
              "unitSI": {
                "type": "string"
              },
              "dimension": {
                "type": "string"
              },
              "quantity": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "dimensionCheck": {
                "type": "string",
                "enum": [
                  "ok"
                ]
              },
              "temperature": {
                "type": "string",
                "enum": [
                  "absolute",
                  "interval",
                  "none"
                ]
              },
              "alternatives": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "unit",
                    "value"
                  ],
                  "properties": {
                    "unit": {
                      "type": "string"
                    },
                    "value": {
                      "type": "number"
                    }
                  }
                }
              },
              "derivation": {
                "type": "array",
                "minItems": 2,
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "id",
                    "kind",
                    "label",
                    "value",
                    "unit",
                    "dimension",
                    "children",
                    "note"
                  ],
                  "properties": {
                    "id": {
                      "type": "integer",
                      "minimum": 0
                    },
                    "kind": {
                      "type": "string",
                      "enum": [
                        "literal",
                        "unit",
                        "operation",
                        "conversion",
                        "result"
                      ]
                    },
                    "label": {
                      "type": "string"
                    },
                    "value": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "unit": {
                      "type": "string"
                    },
                    "dimension": {
                      "type": "string"
                    },
                    "children": {
                      "type": "array",
                      "items": {
                        "type": "integer",
                        "minimum": 0
                      }
                    },
                    "note": {
                      "type": "string"
                    }
                  }
                }
              },
              "unitsUsed": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "symbol",
                    "name",
                    "definition",
                    "exact",
                    "source"
                  ],
                  "properties": {
                    "symbol": {
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "definition": {
                      "type": "string"
                    },
                    "exact": {
                      "type": "boolean"
                    },
                    "source": {
                      "type": "string",
                      "enum": [
                        "SI",
                        "NIST811",
                        "definition"
                      ]
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      }
    }
  }
}