{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://wetwareworld.com/schema/wwd/0.1/design.schema.json",
  "title": "WWD 0.1 design document",
  "description": "Binding layer for an engineered living component. Geometry, images, arrays, recordings and solver decks are delegated to established payload formats; this document binds them together with identity, units, frames, causal role and provenance.",
  "type": "object",
  "required": [
    "wwd",
    "root_component",
    "components"
  ],
  "properties": {
    "wwd": {
      "const": "0.1"
    },
    "root_component": {
      "$ref": "#/$defs/ref"
    },
    "revision": {
      "type": "string"
    },
    "components": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/component"
      }
    },
    "acceptance_criteria": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/criterion"
      }
    },
    "mode": {
      "not": {},
      "$comment": "As-built mode is DERIVED from the presence of measured results. A stored flag can lie; a derived one cannot. Declaring it is an error by construction."
    }
  },
  "$defs": {
    "ref": {
      "type": "string",
      "minLength": 1
    },
    "uuid": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
    },
    "curie": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "pattern": "^[A-Za-z][A-Za-z0-9_.]*:[A-Za-z0-9_.\\-]+$",
          "$comment": "CL, NCBITaxon, UBERON, ChEBI, CVCL. WWD mints no biological vocabulary of its own."
        },
        "label": {
          "type": "string"
        }
      }
    },
    "quantity": {
      "type": "string",
      "pattern": "^\\s*[+-]?([0-9]+\\.?[0-9]*|\\.[0-9]+)([eE][+-]?[0-9]+)?\\s+\\S.*$",
      "$comment": "number, whitespace, UDUNITS-2 unit. A bare number is invalid: units are never optional and never implied by a property name."
    },
    "causal_role": {
      "enum": [
        "control",
        "response",
        "context",
        "derived"
      ],
      "$comment": "Decision A8. control = you set it (an intervention). response = the tissue produces it. context = observed covariate. derived = computed. This is what makes an accumulated corpus interventional rather than observational."
    },
    "provenance": {
      "enum": [
        "designed",
        "simulated",
        "measured",
        "inferred",
        "assumed"
      ]
    },
    "scalar_or_field": {
      "title": "Scalar-or-field slot",
      "description": "Exactly two spellings of one semantic type. Upgrading from a quantity string to a field object never restructures the document.",
      "if": {
        "type": "string"
      },
      "then": {
        "$ref": "#/$defs/quantity"
      },
      "else": {
        "type": "object",
        "required": [
          "backing"
        ],
        "properties": {
          "backing": {
            "type": "string"
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "backing": {
                  "enum": [
                    "constant",
                    "expression",
                    "mesh_attribute",
                    "image_volume",
                    "table"
                  ]
                }
              },
              "required": [
                "backing"
              ]
            },
            "then": {
              "$ref": "#/$defs/core_field"
            },
            "else": {
              "properties": {
                "backing": {
                  "pattern": "^[A-Za-z][A-Za-z0-9_.]*[./][A-Za-z0-9_./\\-]+$",
                  "$comment": "Namespaced extension backing; must be declared in extensionsUsed."
                }
              }
            }
          }
        ]
      }
    },
    "core_field": {
      "type": "object",
      "required": [
        "backing",
        "unit"
      ],
      "properties": {
        "backing": {
          "enum": [
            "constant",
            "expression",
            "mesh_attribute",
            "image_volume",
            "table"
          ]
        },
        "unit": {
          "type": "string"
        },
        "value": {},
        "expression": {
          "type": "string",
          "maxLength": 4096
        },
        "store": {
          "type": "string"
        },
        "array": {
          "type": "string"
        },
        "channel": {
          "type": "string"
        },
        "association": {
          "enum": [
            "node",
            "cell",
            "face",
            "edge",
            "quadrature"
          ]
        },
        "rows": {
          "type": "array"
        },
        "interpolation": {
          "enum": [
            "nearest",
            "linear",
            "cubic",
            "shape_function",
            "linear_in_simplex",
            "inverse_distance",
            "kriging",
            "none",
            "analytic",
            "constant"
          ]
        },
        "domain": {
          "$ref": "#/$defs/domain"
        },
        "out_of_domain": {
          "$ref": "#/$defs/out_of_domain"
        },
        "frame": {
          "type": "string"
        },
        "transform": {
          "type": "array",
          "minItems": 16,
          "maxItems": 16,
          "items": {
            "type": "number"
          }
        },
        "uncertainty": {
          "$ref": "#/$defs/uncertainty"
        },
        "resolution_hint": {
          "$ref": "#/$defs/quantity"
        },
        "required": {
          "type": "boolean"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "backing": {
                "const": "expression"
              }
            },
            "required": [
              "backing"
            ]
          },
          "then": {
            "required": [
              "expression"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "backing": {
                "const": "mesh_attribute"
              }
            },
            "required": [
              "backing"
            ]
          },
          "then": {
            "required": [
              "store",
              "association"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "backing": {
                "const": "image_volume"
              }
            },
            "required": [
              "backing"
            ]
          },
          "then": {
            "required": [
              "store",
              "interpolation"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "backing": {
                "const": "table"
              }
            },
            "required": [
              "backing"
            ]
          },
          "then": {
            "required": [
              "interpolation"
            ]
          }
        }
      ]
    },
    "domain": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "unbounded",
            "box",
            "sphere",
            "region",
            "mesh"
          ]
        },
        "min": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "type": "number"
          }
        },
        "max": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "type": "number"
          }
        },
        "center": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "type": "number"
          }
        },
        "radius": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "region": {
          "$ref": "#/$defs/ref"
        }
      }
    },
    "out_of_domain": {
      "type": "object",
      "required": [
        "policy"
      ],
      "properties": {
        "policy": {
          "enum": [
            "error",
            "undefined",
            "fallback",
            "clamp",
            "wrap",
            "mirror",
            "nearest"
          ],
          "default": "error",
          "$comment": "Default is error. A silent 0 for 'cell density outside the construct' is indistinguishable from a real measurement of zero, which is a safety problem in this domain."
        },
        "value": {}
      },
      "if": {
        "properties": {
          "policy": {
            "const": "fallback"
          }
        },
        "required": [
          "policy"
        ]
      },
      "then": {
        "required": [
          "value"
        ]
      }
    },
    "uncertainty": {
      "type": "object",
      "required": [
        "kind"
      ],
      "properties": {
        "kind": {
          "enum": [
            "none",
            "stddev",
            "standard_uncertainty",
            "relative",
            "confidence_interval",
            "tolerance_interval",
            "field_ref"
          ]
        },
        "value": {
          "type": "number"
        },
        "low": {
          "type": "number"
        },
        "high": {
          "type": "number"
        },
        "coverage": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 1
        },
        "field": {
          "$ref": "#/$defs/ref"
        }
      }
    },
    "property_binding": {
      "type": "object",
      "required": [
        "property",
        "provenance",
        "causal_role",
        "value"
      ],
      "properties": {
        "property": {
          "type": "string",
          "pattern": "^[A-Za-z][A-Za-z0-9_.]*:[A-Za-z0-9_.\\-]+$",
          "$comment": "Registered WWD term or namespace-qualified external term."
        },
        "quantity_kind": {
          "type": "string"
        },
        "provenance": {
          "$ref": "#/$defs/provenance"
        },
        "causal_role": {
          "$ref": "#/$defs/causal_role"
        },
        "imposed_by": {
          "type": "string",
          "$comment": "Required for controls: the protocol step or apparatus that actually sets this. A variable nobody can set is not a control."
        },
        "value": {
          "$ref": "#/$defs/scalar_or_field"
        },
        "target": {
          "$ref": "#/$defs/ref"
        },
        "structure": {
          "type": "string"
        },
        "director": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "type": "number"
          },
          "$comment": "Nematic: d and -d are exactly equivalent."
        },
        "secondary_director": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "type": "number"
          }
        },
        "order_basis": {
          "enum": [
            "S3D",
            "S2D"
          ]
        },
        "measurement_plane": {
          "type": "string"
        },
        "note": {
          "type": "string"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "causal_role": {
                "const": "control"
              }
            },
            "required": [
              "causal_role"
            ]
          },
          "then": {
            "required": [
              "imposed_by"
            ],
            "$comment": "An intervention must name the means that imposes it."
          }
        },
        {
          "if": {
            "properties": {
              "causal_role": {
                "const": "response"
              }
            },
            "required": [
              "causal_role"
            ]
          },
          "then": {
            "not": {
              "required": [
                "imposed_by"
              ]
            },
            "$comment": "You cannot pipette alignment. A response is targeted and measured, never imposed."
          }
        },
        {
          "if": {
            "properties": {
              "order_basis": {
                "const": "S2D"
              }
            },
            "required": [
              "order_basis"
            ]
          },
          "then": {
            "required": [
              "measurement_plane"
            ],
            "$comment": "A planar order parameter is meaningless without its measurement plane."
          }
        }
      ]
    },
    "frame": {
      "type": "object",
      "required": [
        "handedness",
        "axes",
        "axis_units"
      ],
      "properties": {
        "handedness": {
          "enum": [
            "right",
            "left"
          ]
        },
        "axes": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "type": "string"
          }
        },
        "axis_units": {
          "type": "string"
        },
        "origin": {
          "type": "string"
        }
      }
    },
    "validity_window": {
      "type": "object",
      "required": [
        "origin",
        "from",
        "to"
      ],
      "properties": {
        "origin": {
          "type": "string"
        },
        "from": {
          "type": "number",
          "minimum": 0
        },
        "to": {
          "type": "number",
          "exclusiveMinimum": 0
        }
      },
      "$comment": "A living component is only the specified article during a stated developmental interval."
    },
    "region": {
      "type": "object",
      "required": [
        "id",
        "kind"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/ref"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "enum": [
            "whole_component",
            "geometry_subset",
            "mesh_volume",
            "mesh_element_set",
            "image_label",
            "analytic_predicate",
            "union",
            "intersection",
            "complement"
          ]
        },
        "feature": {
          "type": "string"
        },
        "mesh": {
          "type": "string"
        },
        "label": {},
        "predicate": {
          "type": "string"
        },
        "members": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ref"
          }
        },
        "frame": {
          "type": "string"
        }
      }
    },
    "biology": {
      "type": "object",
      "required": [
        "role",
        "species",
        "cell_type",
        "causal_role",
        "provenance"
      ],
      "properties": {
        "custody": {
          "enum": [
            "producer_supplied",
            "customer_supplied",
            "third_party_supplied"
          ],
          "default": "producer_supplied",
          "$comment": "Who owns the input cells. customer_supplied means the producer never takes title: the transaction is a service on the customer's material, not a sale of a derivative. This distinction decides whether a licence permits the work at all."
        },
        "custody_ref": {
          "type": "string",
          "$comment": "The customer's own licence, MTA or consignment reference. Required when custody is customer_supplied, because the producer relies on it."
        },
        "role": {
          "enum": [
            "primary",
            "support",
            "structural",
            "innervating",
            "endothelial",
            "immune",
            "other"
          ]
        },
        "species": {
          "$ref": "#/$defs/curie"
        },
        "cell_type": {
          "$ref": "#/$defs/curie"
        },
        "anatomical_origin": {
          "$ref": "#/$defs/curie"
        },
        "cell_line": {
          "type": "object",
          "properties": {
            "accession": {
              "type": "string",
              "pattern": "^CVCL_[A-Z0-9]{4,}$"
            },
            "rrid": {
              "type": "string",
              "pattern": "^RRID:CVCL_[A-Z0-9]{4,}$"
            },
            "cellosaurus_release": {
              "type": "string"
            }
          }
        },
        "derivation": {
          "enum": [
            "primary",
            "ipsc_derived",
            "esc_derived",
            "immortalized_line",
            "direct_reprogrammed",
            "explant"
          ]
        },
        "differentiation": {
          "type": "object",
          "properties": {
            "method": {
              "enum": [
                "small_molecule",
                "transcription_factor",
                "growth_factor",
                "co_culture",
                "spontaneous",
                "proprietary"
              ]
            },
            "driver_genes": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "protocol_ref": {
              "type": "string"
            },
            "sbol_ref": {
              "type": "string"
            }
          }
        },
        "passage_number": {
          "$ref": "#/$defs/quantity"
        },
        "fraction": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "causal_role": {
          "$ref": "#/$defs/causal_role"
        },
        "provenance": {
          "$ref": "#/$defs/provenance"
        },
        "licensing": {
          "type": "object",
          "properties": {
            "commercial_derivative_rights": {
              "enum": [
                "permitted",
                "prohibited",
                "service_only",
                "requires_license",
                "unknown"
              ]
            },
            "use_restriction": {
              "enum": [
                "research_use_only",
                "commercial",
                "clinical",
                "unspecified"
              ]
            },
            "agreement_ref": {
              "type": "string"
            }
          },
          "$comment": "Identity in Cellosaurus does not imply commercial rights."
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "custody": {
                "const": "customer_supplied"
              }
            },
            "required": [
              "custody"
            ]
          },
          "then": {
            "required": [
              "custody_ref"
            ]
          }
        }
      ]
    },
    "interface": {
      "type": "object",
      "required": [
        "id",
        "modality"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/ref"
        },
        "modality": {
          "enum": [
            "mechanical",
            "electrical",
            "fluidic",
            "optical",
            "multimodal"
          ]
        },
        "role": {
          "type": "string"
        },
        "region": {
          "$ref": "#/$defs/ref"
        },
        "frame": {
          "type": "string"
        },
        "clear_opening": {
          "$ref": "#/$defs/quantity"
        },
        "allowable_axial_force": {
          "$ref": "#/$defs/quantity"
        },
        "electrode_count": {
          "type": "integer",
          "minimum": 1
        },
        "pitch": {
          "$ref": "#/$defs/quantity"
        },
        "electrode_diameter": {
          "$ref": "#/$defs/quantity"
        },
        "material": {
          "type": "string"
        },
        "impedance_conditions": {
          "type": "object"
        },
        "safe_charge_density": {
          "$ref": "#/$defs/quantity"
        },
        "waveform": {
          "enum": [
            "biphasic",
            "monophasic",
            "sinusoidal",
            "custom"
          ]
        },
        "channel_map": {
          "type": "string"
        },
        "wavelength_range": {
          "type": "string"
        },
        "working_distance": {
          "$ref": "#/$defs/quantity"
        },
        "intervening_materials": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "flow_direction": {
          "enum": [
            "inlet",
            "outlet",
            "bidirectional"
          ]
        },
        "bore": {
          "$ref": "#/$defs/quantity"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "modality": {
                "const": "electrical"
              }
            },
            "required": [
              "modality"
            ]
          },
          "then": {
            "required": [
              "role"
            ]
          }
        }
      ]
    },
    "component": {
      "type": "object",
      "required": [
        "id",
        "kind"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/ref"
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "enum": [
            "cell_preparation",
            "contractile_tissue",
            "neural_culture",
            "tissue_construct",
            "organoid",
            "natural_tissue",
            "assembly"
          ]
        },
        "frame": {
          "$ref": "#/$defs/frame"
        },
        "validity_window": {
          "$ref": "#/$defs/validity_window"
        },
        "dimensions": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/quantity"
          }
        },
        "geometry": {
          "type": "object",
          "required": [
            "asset",
            "format"
          ],
          "properties": {
            "asset": {
              "type": "string"
            },
            "format": {
              "enum": [
                "3mf",
                "step",
                "stl",
                "gltf",
                "glb",
                "vtu",
                "svg",
                "dxf"
              ]
            },
            "authoritative": {
              "type": "boolean",
              "default": true
            }
          }
        },
        "regions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/region"
          }
        },
        "fabrication": {
          "type": "object",
          "required": [
            "method"
          ],
          "properties": {
            "method": {
              "type": "string"
            },
            "protocol_ref": {
              "type": "string"
            },
            "protocol_format": {
              "enum": [
                "wwd",
                "3mf",
                "3mfbio",
                "gcode",
                "markdown",
                "pdf",
                "protocols_io",
                "vendor"
              ],
              "$comment": "WWD delegates process description. A bioprinted component's deck belongs in a 3MF/3MFBio part carried with integrity, not duplicated here."
            },
            "note": {
              "type": "string"
            }
          }
        },
        "biology": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/biology"
          }
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/property_binding"
          }
        },
        "interfaces": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/interface"
          }
        },
        "shipping": {
          "type": "object",
          "properties": {
            "state": {
              "enum": [
                "cryopreserved_ln2",
                "dry_ice",
                "live_ambient",
                "live_refrigerated",
                "live_perfused",
                "fixed"
              ]
            },
            "temperature_c": {
              "type": "object",
              "properties": {
                "min": {
                  "type": "number"
                },
                "max": {
                  "type": "number"
                }
              }
            },
            "transit_max_hours": {
              "type": "number",
              "exclusiveMinimum": 0
            },
            "recovery_hours": {
              "type": "number",
              "minimum": 0
            },
            "orientation": {
              "type": "string"
            }
          }
        },
        "children": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "component",
              "transform"
            ],
            "properties": {
              "component": {
                "$ref": "#/$defs/ref"
              },
              "transform": {
                "type": "array",
                "minItems": 16,
                "maxItems": 16,
                "items": {
                  "type": "number"
                }
              }
            }
          }
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "kind": {
                "enum": [
                  "contractile_tissue",
                  "neural_culture",
                  "tissue_construct",
                  "organoid"
                ]
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "required": [
              "frame"
            ],
            "$comment": "A spatial component must declare its canonical frame."
          }
        }
      ]
    },
    "criterion": {
      "type": "object",
      "required": [
        "id",
        "measurand",
        "statistic",
        "comparator",
        "criticality",
        "method",
        "tests_axis"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/uuid"
        },
        "tag": {
          "type": "string",
          "$comment": "Human-readable and freely renumberable. The id is not."
        },
        "title": {
          "type": "string"
        },
        "target": {
          "$ref": "#/$defs/ref"
        },
        "measurand": {
          "type": "object",
          "required": [
            "quantity",
            "unit"
          ],
          "properties": {
            "quantity": {
              "type": "string"
            },
            "unit": {
              "type": "string"
            }
          }
        },
        "statistic": {
          "enum": [
            "value",
            "mean",
            "median",
            "sd",
            "cv",
            "proportion",
            "count",
            "min",
            "max",
            "yield"
          ]
        },
        "comparator": {
          "enum": [
            ">=",
            "<=",
            "range",
            "equals",
            "negative",
            "pass"
          ]
        },
        "limit": {
          "oneOf": [
            {
              "type": "number"
            },
            {
              "type": "object",
              "required": [
                "low",
                "high"
              ],
              "properties": {
                "low": {
                  "type": "number"
                },
                "high": {
                  "type": "number"
                },
                "inclusive": {
                  "type": "boolean",
                  "default": true
                }
              }
            }
          ]
        },
        "criticality": {
          "enum": [
            "critical",
            "major",
            "minor"
          ]
        },
        "tests_axis": {
          "enum": [
            "control",
            "response"
          ],
          "$comment": "control asks 'did we execute the protocol?'; response asks 'did the biology deliver?'. Different failures, different remedies."
        },
        "method": {
          "type": "object",
          "required": [
            "id"
          ],
          "properties": {
            "id": {
              "type": "string"
            },
            "protocol_ref": {
              "type": "string"
            },
            "standard_ref": {
              "type": "string"
            },
            "tool": {
              "type": "string"
            },
            "software": {
              "type": "string"
            },
            "conditions": {
              "type": "object"
            },
            "reference": {
              "type": "string"
            },
            "note": {
              "type": "string"
            }
          },
          "$comment": "A functional value without its assay method is uncomparable between two suppliers."
        },
        "sampling": {
          "type": "object",
          "properties": {
            "n": {
              "type": "integer",
              "minimum": 1
            },
            "selection": {
              "enum": [
                "random",
                "systematic",
                "stratified",
                "convenience"
              ]
            },
            "destructive": {
              "type": "boolean"
            },
            "same_specimens_as": {
              "$ref": "#/$defs/uuid"
            },
            "standard": {
              "type": "string"
            },
            "n_fields": {
              "type": "integer",
              "minimum": 1
            },
            "area_mm2": {
              "type": "number",
              "exclusiveMinimum": 0
            }
          }
        },
        "decision_rule": {
          "type": "object",
          "required": [
            "kind"
          ],
          "properties": {
            "kind": {
              "enum": [
                "point_estimate",
                "test",
                "confidence_bound",
                "tolerance_interval"
              ]
            },
            "alpha": {
              "type": "number",
              "exclusiveMinimum": 0,
              "exclusiveMaximum": 1
            },
            "sided": {
              "enum": [
                "one",
                "two"
              ]
            },
            "coverage": {
              "type": "number",
              "exclusiveMinimum": 0,
              "exclusiveMaximum": 1
            },
            "confidence": {
              "type": "number",
              "exclusiveMinimum": 0,
              "exclusiveMaximum": 1
            },
            "method": {
              "type": "string"
            },
            "note": {
              "type": "string"
            }
          },
          "allOf": [
            {
              "if": {
                "properties": {
                  "kind": {
                    "const": "test"
                  }
                },
                "required": [
                  "kind"
                ]
              },
              "then": {
                "required": [
                  "alpha"
                ]
              }
            }
          ]
        },
        "rationale": {
          "type": "string"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "comparator": {
                "enum": [
                  ">=",
                  "<=",
                  "range"
                ]
              }
            },
            "required": [
              "comparator"
            ]
          },
          "then": {
            "required": [
              "limit"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "comparator": {
                "const": "range"
              }
            },
            "required": [
              "comparator"
            ]
          },
          "then": {
            "properties": {
              "limit": {
                "type": "object"
              }
            }
          }
        }
      ]
    }
  }
}
