{
  "type": "object",
  "additionalProperties": false,
  "required": [
    "quote",
    "hours",
    "loaded_hourly_cost",
    "external_costs",
    "target_margin"
  ],
  "properties": {
    "quote": {
      "type": "number",
      "description": "Quoted revenue, in the run's currency.",
      "exclusiveMinimum": 0,
      "maximum": 10000000,
      "multipleOf": 0.01
    },
    "hours": {
      "type": "number",
      "description": "Delivery hours; include all delivery time.",
      "minimum": 0,
      "maximum": 10000,
      "multipleOf": 0.01
    },
    "loaded_hourly_cost": {
      "type": "number",
      "description": "Loaded labor cost per hour, in the run's currency.",
      "minimum": 0,
      "maximum": 10000000,
      "multipleOf": 0.01
    },
    "external_costs": {
      "type": "number",
      "description": "External costs, in the run's currency.",
      "minimum": 0,
      "maximum": 10000000,
      "multipleOf": 0.01
    },
    "target_margin": {
      "type": "number",
      "description": "Target margin as a fraction: 0.30 means 30%.",
      "minimum": 0,
      "maximum": 0.99
    }
  }
}
