{
  "$defs": {
    "Evaluated": {
      "additionalProperties": false,
      "properties": {
        "status": {
          "const": "evaluated",
          "title": "Status",
          "type": "string"
        },
        "evaluated_for": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Evaluated For",
          "type": "string"
        },
        "evaluated_at": {
          "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$",
          "title": "Evaluated At",
          "type": "string"
        },
        "allowed_operations": {
          "items": {
            "enum": [
              "read",
              "export",
              "use-as-input"
            ],
            "type": "string"
          },
          "maxItems": 3,
          "title": "Allowed Operations",
          "type": "array"
        }
      },
      "required": [
        "status",
        "evaluated_for",
        "evaluated_at",
        "allowed_operations"
      ],
      "title": "Evaluated",
      "type": "object"
    },
    "Interpretation": {
      "additionalProperties": false,
      "properties": {
        "reader": {
          "const": "asset_connectors.las_reader/1",
          "title": "Reader",
          "type": "string"
        },
        "lasio_version": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Lasio Version",
          "type": "string"
        },
        "mapping": {
          "const": "application-curve/1",
          "title": "Mapping",
          "type": "string"
        },
        "null_policy": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Null Policy",
          "type": "string"
        }
      },
      "required": [
        "reader",
        "lasio_version",
        "mapping",
        "null_policy"
      ],
      "title": "Interpretation",
      "type": "object"
    },
    "NotEvaluated": {
      "additionalProperties": false,
      "properties": {
        "status": {
          "const": "not-evaluated",
          "title": "Status",
          "type": "string"
        }
      },
      "required": [
        "status"
      ],
      "title": "NotEvaluated",
      "type": "object"
    },
    "Provenance": {
      "additionalProperties": false,
      "properties": {
        "evidence": {
          "enum": [
            "source-declared",
            "script-declared"
          ],
          "title": "Evidence",
          "type": "string"
        },
        "method": {
          "anyOf": [
            {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Method"
        },
        "code_reference": {
          "anyOf": [
            {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Code Reference"
        },
        "environment_reference": {
          "anyOf": [
            {
              "maxLength": 512,
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Environment Reference"
        },
        "omissions": {
          "items": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 32,
          "title": "Omissions",
          "type": "array"
        }
      },
      "required": [
        "evidence",
        "method",
        "code_reference",
        "environment_reference",
        "omissions"
      ],
      "title": "Provenance",
      "type": "object"
    },
    "Reference": {
      "additionalProperties": false,
      "properties": {
        "authority": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Authority",
          "type": "string"
        },
        "key": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Key",
          "type": "string"
        },
        "revision": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Revision",
          "type": "string"
        },
        "profile": {
          "const": "las2/1",
          "title": "Profile",
          "type": "string"
        }
      },
      "required": [
        "authority",
        "key",
        "revision",
        "profile"
      ],
      "title": "Reference",
      "type": "object"
    },
    "Representation": {
      "additionalProperties": false,
      "properties": {
        "id": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Id",
          "type": "string"
        },
        "kind": {
          "enum": [
            "original",
            "captured-result",
            "derived-artifact",
            "normalized"
          ],
          "title": "Kind",
          "type": "string"
        },
        "media_type": {
          "enum": [
            "application/x-las",
            "application/json"
          ],
          "title": "Media Type",
          "type": "string"
        },
        "profile": {
          "enum": [
            "las2/1",
            "ophiolite.application-curve/1"
          ],
          "title": "Profile",
          "type": "string"
        },
        "bytes": {
          "maximum": 33554432,
          "minimum": 0,
          "title": "Bytes",
          "type": "integer"
        },
        "sha256": {
          "pattern": "^[0-9a-f]{64}$",
          "title": "Sha256",
          "type": "string"
        },
        "available": {
          "title": "Available",
          "type": "boolean"
        },
        "losses": {
          "items": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string"
          },
          "maxItems": 32,
          "title": "Losses",
          "type": "array"
        }
      },
      "required": [
        "id",
        "kind",
        "media_type",
        "profile",
        "bytes",
        "sha256",
        "available",
        "losses"
      ],
      "title": "Representation",
      "type": "object"
    },
    "Retention": {
      "additionalProperties": false,
      "properties": {
        "mode": {
          "enum": [
            "upstream-only",
            "retained"
          ],
          "title": "Mode",
          "type": "string"
        },
        "policy": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Policy",
          "type": "string"
        },
        "historical_reads": {
          "enum": [
            "not-guaranteed",
            "while-retained-and-authorized"
          ],
          "title": "Historical Reads",
          "type": "string"
        }
      },
      "required": [
        "mode",
        "policy",
        "historical_reads"
      ],
      "title": "Retention",
      "type": "object"
    },
    "ScientificContext": {
      "additionalProperties": false,
      "properties": {
        "curve": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Curve",
          "type": "string"
        },
        "unit": {
          "maxLength": 128,
          "title": "Unit",
          "type": "string"
        },
        "unit_status": {
          "enum": [
            "declared",
            "unknown"
          ],
          "title": "Unit Status",
          "type": "string"
        },
        "axis_unit": {
          "maxLength": 128,
          "title": "Axis Unit",
          "type": "string"
        },
        "axis_unit_status": {
          "enum": [
            "declared",
            "unknown"
          ],
          "title": "Axis Unit Status",
          "type": "string"
        },
        "depth_reference": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Depth Reference",
          "type": "string"
        },
        "sample_count": {
          "maximum": 100000,
          "minimum": 0,
          "title": "Sample Count",
          "type": "integer"
        },
        "axis_order": {
          "enum": [
            "increasing",
            "decreasing",
            "unordered",
            "insufficient"
          ],
          "title": "Axis Order",
          "type": "string"
        },
        "axis_duplicates": {
          "title": "Axis Duplicates",
          "type": "boolean"
        },
        "missing_count": {
          "maximum": 100000,
          "minimum": 0,
          "title": "Missing Count",
          "type": "integer"
        },
        "missing_value_marker": {
          "maxLength": 512,
          "minLength": 1,
          "title": "Missing Value Marker",
          "type": "string"
        }
      },
      "required": [
        "curve",
        "unit",
        "unit_status",
        "axis_unit",
        "axis_unit_status",
        "depth_reference",
        "sample_count",
        "axis_order",
        "axis_duplicates",
        "missing_count",
        "missing_value_marker"
      ],
      "title": "ScientificContext",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "schema": {
      "const": "ophiolite.scientific-asset/1",
      "title": "Schema",
      "type": "string"
    },
    "asset_id": {
      "maxLength": 512,
      "minLength": 1,
      "title": "Asset Id",
      "type": "string"
    },
    "revision": {
      "maxLength": 512,
      "minLength": 1,
      "title": "Revision",
      "type": "string"
    },
    "project_id": {
      "maxLength": 512,
      "minLength": 1,
      "title": "Project Id",
      "type": "string"
    },
    "authority": {
      "maxLength": 512,
      "minLength": 1,
      "title": "Authority",
      "type": "string"
    },
    "origin": {
      "enum": [
        "source-reference",
        "retained-capture",
        "managed-derived"
      ],
      "title": "Origin",
      "type": "string"
    },
    "custodian": {
      "anyOf": [
        {
          "maxLength": 512,
          "minLength": 1,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Custodian"
    },
    "source_reference": {
      "anyOf": [
        {
          "$ref": "#/$defs/Reference"
        },
        {
          "type": "null"
        }
      ]
    },
    "profile": {
      "const": "las2/1",
      "title": "Profile",
      "type": "string"
    },
    "scientific": {
      "$ref": "#/$defs/ScientificContext"
    },
    "interpretation": {
      "$ref": "#/$defs/Interpretation"
    },
    "representations": {
      "items": {
        "$ref": "#/$defs/Representation"
      },
      "maxItems": 8,
      "minItems": 2,
      "title": "Representations",
      "type": "array"
    },
    "retention": {
      "$ref": "#/$defs/Retention"
    },
    "parents": {
      "items": {
        "$ref": "#/$defs/Reference"
      },
      "maxItems": 8,
      "title": "Parents",
      "type": "array"
    },
    "parent_visibility": {
      "default": "complete",
      "enum": [
        "complete",
        "restricted"
      ],
      "title": "Parent Visibility",
      "type": "string"
    },
    "provenance": {
      "$ref": "#/$defs/Provenance"
    },
    "supported_operations": {
      "items": {
        "enum": [
          "read",
          "export",
          "use-as-input"
        ],
        "type": "string"
      },
      "maxItems": 3,
      "title": "Supported Operations",
      "type": "array"
    },
    "authorization": {
      "discriminator": {
        "mapping": {
          "evaluated": "#/$defs/Evaluated",
          "not-evaluated": "#/$defs/NotEvaluated"
        },
        "propertyName": "status"
      },
      "oneOf": [
        {
          "$ref": "#/$defs/NotEvaluated"
        },
        {
          "$ref": "#/$defs/Evaluated"
        }
      ],
      "title": "Authorization"
    }
  },
  "required": [
    "schema",
    "asset_id",
    "revision",
    "project_id",
    "authority",
    "origin",
    "custodian",
    "source_reference",
    "profile",
    "scientific",
    "interpretation",
    "representations",
    "retention",
    "parents",
    "provenance",
    "supported_operations",
    "authorization"
  ],
  "title": "Asset",
  "type": "object"
}
