{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/oscal-catalog/versions/1.1.1.json",
  "x-lintel": {
    "source": "https://github.com/usnistgov/OSCAL/releases/download/v1.1.1/oscal_catalog_schema.json",
    "sourceSha256": "90fb059843026fcc99d38dfd1102ea4bc12d0f43a443ba79aa7d6ce3df6a9100",
    "fileMatch": [
      "oscal*catalog.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "type": "object",
  "properties": {
    "$schema": {
      "$ref": "#json-schema-directive"
    },
    "catalog": {
      "$ref": "#assembly_oscal-catalog_catalog"
    }
  },
  "required": [
    "catalog"
  ],
  "additionalProperties": false,
  "$comment": "OSCAL Control Catalog Model: JSON Schema",
  "$defs": {
    "json-schema-directive": {
      "title": "Schema Directive",
      "description": "A JSON Schema directive to bind a specific schema to its document instance.",
      "$ref": "#/$defs/URIReferenceDatatype"
    },
    "oscal-catalog-oscal-catalog:catalog": {
      "title": "Catalog",
      "description": "A structured, organized collection of control information.",
      "required": [
        "uuid",
        "metadata"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Catalog Universally Unique Identifier",
          "description": "Provides a globally unique means to identify a given catalog instance.",
          "$ref": "#/$defs/UUIDDatatype"
        },
        "metadata": {
          "$ref": "#assembly_oscal-metadata_metadata"
        },
        "params": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-control-common_parameter"
          }
        },
        "controls": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-catalog_control"
          }
        },
        "groups": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-catalog_group"
          }
        },
        "back-matter": {
          "$ref": "#assembly_oscal-metadata_back-matter"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-catalog:group": {
      "title": "Control Group",
      "description": "A group of controls, or of groups of controls.",
      "required": [
        "title"
      ],
      "type": "object",
      "properties": {
        "id": {
          "title": "Group Identifier",
          "description": "Identifies the group for the purpose of cross-linking within the defining instance or from other instances that reference the catalog.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "class": {
          "title": "Group Class",
          "description": "A textual label that provides a sub-type or characterization of the group.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "title": {
          "title": "Group Title",
          "description": "A name given to the group, which may be used by a tool for display and navigation.",
          "type": "string"
        },
        "params": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-control-common_parameter"
          }
        },
        "props": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_property"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        },
        "parts": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-control-common_part"
          }
        },
        "groups": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-catalog_group"
          }
        },
        "controls": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-catalog_control"
          }
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-catalog:control": {
      "title": "Control",
      "description": "A structured object representing a requirement or guideline, which when implemented will reduce an aspect of risk related to an information system and its information.",
      "required": [
        "id",
        "title"
      ],
      "type": "object",
      "properties": {
        "id": {
          "title": "Control Identifier",
          "description": "Identifies a control such that it can be referenced in the defining catalog and other OSCAL instances (e.g., profiles).",
          "$ref": "#/$defs/TokenDatatype"
        },
        "class": {
          "title": "Control Class",
          "description": "A textual label that provides a sub-type or characterization of the control.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "title": {
          "title": "Control Title",
          "description": "A name given to the control, which may be used by a tool for display and navigation.",
          "type": "string"
        },
        "params": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-control-common_parameter"
          }
        },
        "props": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_property"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        },
        "parts": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-control-common_part"
          }
        },
        "controls": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-catalog_control"
          }
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-control-common:part": {
      "title": "Part",
      "description": "An annotated, markup-based textual element of a control's or catalog group's definition, or a child of another part.",
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "id": {
          "title": "Part Identifier",
          "description": "A unique identifier for the part.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "name": {
          "title": "Part Name",
          "description": "A textual label that uniquely identifies the part's semantic type, which exists in a value space qualified by the ns.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "ns": {
          "title": "Part Namespace",
          "description": "An optional namespace qualifying the part's name. This allows different organizations to associate distinct semantics with the same name.",
          "$ref": "#/$defs/URIDatatype"
        },
        "class": {
          "title": "Part Class",
          "description": "An optional textual providing a sub-type or characterization of the part's name, or a category to which the part belongs.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "title": {
          "title": "Part Title",
          "description": "An optional name given to the part, which may be used by a tool for display and navigation.",
          "type": "string"
        },
        "props": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_property"
          }
        },
        "prose": {
          "title": "Part Text",
          "description": "Permits multiple paragraphs, lists, tables etc.",
          "type": "string"
        },
        "parts": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-control-common_part"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-control-common:parameter": {
      "title": "Parameter",
      "description": "Parameters provide a mechanism for the dynamic assignment of value(s) in a control.",
      "required": [
        "id"
      ],
      "type": "object",
      "properties": {
        "id": {
          "title": "Parameter Identifier",
          "description": "A unique identifier for the parameter.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "class": {
          "title": "Parameter Class",
          "description": "A textual label that provides a characterization of the type, purpose, use or scope of the parameter.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "depends-on": {
          "title": "Depends on",
          "description": "(deprecated) Another parameter invoking this one. This construct has been deprecated and should not be used.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "props": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_property"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        },
        "label": {
          "title": "Parameter Label",
          "description": "A short, placeholder name for the parameter, which can be used as a substitute for a value if no value is assigned.",
          "type": "string"
        },
        "usage": {
          "title": "Parameter Usage Description",
          "description": "Describes the purpose and use of a parameter.",
          "type": "string"
        },
        "constraints": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-control-common_parameter-constraint"
          }
        },
        "guidelines": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-control-common_parameter-guideline"
          }
        },
        "values": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#field_oscal-control-common_parameter-value"
          }
        },
        "select": {
          "$ref": "#assembly_oscal-control-common_parameter-selection"
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-control-common:parameter-constraint": {
      "title": "Constraint",
      "description": "A formal or informal expression of a constraint or test.",
      "properties": {
        "description": {
          "title": "Constraint Description",
          "description": "A textual summary of the constraint to be applied.",
          "type": "string"
        },
        "tests": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Constraint Test",
            "description": "A test expression which is expected to be evaluated by a tool.",
            "type": "object",
            "properties": {
              "expression": {
                "title": "Constraint test",
                "description": "A formal (executable) expression of a constraint.",
                "$ref": "#/$defs/StringDatatype"
              },
              "remarks": {
                "$ref": "#field_oscal-metadata_remarks"
              }
            },
            "required": [
              "expression"
            ],
            "additionalProperties": false
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-catalog-oscal-control-common:parameter-guideline": {
      "title": "Guideline",
      "description": "A prose statement that provides a recommendation for the use of a parameter.",
      "required": [
        "prose"
      ],
      "type": "object",
      "properties": {
        "prose": {
          "title": "Guideline Text",
          "description": "Prose permits multiple paragraphs, lists, tables etc.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-control-common:parameter-value": {
      "title": "Parameter Value",
      "description": "A parameter value or set of values.",
      "$ref": "#/$defs/StringDatatype"
    },
    "oscal-catalog-oscal-control-common:parameter-selection": {
      "title": "Selection",
      "description": "Presenting a choice among alternatives.",
      "properties": {
        "how-many": {
          "title": "Parameter Cardinality",
          "description": "Describes the number of selections that must occur. Without this setting, only one value should be assumed to be permitted.",
          "allOf": [
            {
              "$ref": "#/$defs/TokenDatatype"
            },
            {
              "enum": [
                "one",
                "one-or-more"
              ]
            }
          ]
        },
        "choice": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Choice",
            "description": "A value selection among several such options.",
            "type": "string"
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-catalog-oscal-control-common:include-all": {
      "title": "Include All",
      "description": "Include all controls from the imported catalog or profile resources.",
      "type": "object",
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:metadata": {
      "title": "Document Metadata",
      "description": "Provides information about the containing document, and defines concepts that are shared across the document.",
      "required": [
        "title",
        "last-modified",
        "version",
        "oscal-version"
      ],
      "type": "object",
      "properties": {
        "title": {
          "title": "Document Title",
          "description": "A name given to the document, which may be used by a tool for display and navigation.",
          "type": "string"
        },
        "published": {
          "$ref": "#field_oscal-metadata_published"
        },
        "last-modified": {
          "$ref": "#field_oscal-metadata_last-modified"
        },
        "version": {
          "$ref": "#field_oscal-metadata_version"
        },
        "oscal-version": {
          "$ref": "#field_oscal-metadata_oscal-version"
        },
        "revisions": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Revision History Entry",
            "description": "An entry in a sequential list of revisions to the containing document, expected to be in reverse chronological order (i.e. latest first).",
            "type": "object",
            "properties": {
              "title": {
                "title": "Document Title",
                "description": "A name given to the document revision, which may be used by a tool for display and navigation.",
                "type": "string"
              },
              "published": {
                "$ref": "#field_oscal-metadata_published"
              },
              "last-modified": {
                "$ref": "#field_oscal-metadata_last-modified"
              },
              "version": {
                "$ref": "#field_oscal-metadata_version"
              },
              "oscal-version": {
                "$ref": "#field_oscal-metadata_oscal-version"
              },
              "props": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_property"
                }
              },
              "links": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_link"
                }
              },
              "remarks": {
                "$ref": "#field_oscal-metadata_remarks"
              }
            },
            "required": [
              "version"
            ],
            "additionalProperties": false
          }
        },
        "document-ids": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#field_oscal-metadata_document-id"
          }
        },
        "props": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_property"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        },
        "roles": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Role",
            "description": "Defines a function, which might be assigned to a party in a specific situation.",
            "type": "object",
            "properties": {
              "id": {
                "title": "Role Identifier",
                "description": "A unique identifier for the role.",
                "$ref": "#/$defs/TokenDatatype"
              },
              "title": {
                "title": "Role Title",
                "description": "A name given to the role, which may be used by a tool for display and navigation.",
                "type": "string"
              },
              "short-name": {
                "title": "Role Short Name",
                "description": "A short common name, abbreviation, or acronym for the role.",
                "$ref": "#/$defs/StringDatatype"
              },
              "description": {
                "title": "Role Description",
                "description": "A summary of the role's purpose and associated responsibilities.",
                "type": "string"
              },
              "props": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_property"
                }
              },
              "links": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_link"
                }
              },
              "remarks": {
                "$ref": "#field_oscal-metadata_remarks"
              }
            },
            "required": [
              "id",
              "title"
            ],
            "additionalProperties": false
          }
        },
        "locations": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Location",
            "description": "A physical point of presence, which may be associated with people, organizations, or other concepts within the current or linked OSCAL document.",
            "type": "object",
            "properties": {
              "uuid": {
                "title": "Location Universally Unique Identifier",
                "description": "A unique ID for the location, for reference.",
                "$ref": "#/$defs/UUIDDatatype"
              },
              "title": {
                "title": "Location Title",
                "description": "A name given to the location, which may be used by a tool for display and navigation.",
                "type": "string"
              },
              "address": {
                "$ref": "#assembly_oscal-metadata_address"
              },
              "email-addresses": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#field_oscal-metadata_email-address"
                }
              },
              "telephone-numbers": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#field_oscal-metadata_telephone-number"
                }
              },
              "urls": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "title": "Location URL",
                  "description": "The uniform resource locator (URL) for a web site or other resource associated with the location.",
                  "$ref": "#/$defs/URIDatatype"
                }
              },
              "props": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_property"
                }
              },
              "links": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_link"
                }
              },
              "remarks": {
                "$ref": "#field_oscal-metadata_remarks"
              }
            },
            "required": [
              "uuid"
            ],
            "additionalProperties": false
          }
        },
        "parties": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Party",
            "description": "An organization or person, which may be associated with roles or other concepts within the current or linked OSCAL document.",
            "type": "object",
            "properties": {
              "uuid": {
                "title": "Party Universally Unique Identifier",
                "description": "A unique identifier for the party.",
                "$ref": "#/$defs/UUIDDatatype"
              },
              "type": {
                "title": "Party Type",
                "description": "A category describing the kind of party the object describes.",
                "allOf": [
                  {
                    "$ref": "#/$defs/StringDatatype"
                  },
                  {
                    "enum": [
                      "person",
                      "organization"
                    ]
                  }
                ]
              },
              "name": {
                "title": "Party Name",
                "description": "The full name of the party. This is typically the legal name associated with the party.",
                "$ref": "#/$defs/StringDatatype"
              },
              "short-name": {
                "title": "Party Short Name",
                "description": "A short common name, abbreviation, or acronym for the party.",
                "$ref": "#/$defs/StringDatatype"
              },
              "external-ids": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "title": "Party External Identifier",
                  "description": "An identifier for a person or organization using a designated scheme. e.g. an Open Researcher and Contributor ID (ORCID).",
                  "type": "object",
                  "properties": {
                    "scheme": {
                      "title": "External Identifier Schema",
                      "description": "Indicates the type of external identifier.",
                      "anyOf": [
                        {
                          "$ref": "#/$defs/URIDatatype"
                        },
                        {
                          "enum": [
                            "http://orcid.org/"
                          ]
                        }
                      ]
                    },
                    "id": {
                      "$ref": "#/$defs/StringDatatype"
                    }
                  },
                  "required": [
                    "id",
                    "scheme"
                  ],
                  "additionalProperties": false
                }
              },
              "props": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_property"
                }
              },
              "links": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_link"
                }
              },
              "email-addresses": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#field_oscal-metadata_email-address"
                }
              },
              "telephone-numbers": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#field_oscal-metadata_telephone-number"
                }
              },
              "addresses": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_address"
                }
              },
              "location-uuids": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#field_oscal-metadata_location-uuid"
                }
              },
              "member-of-organizations": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "title": "Organizational Affiliation",
                  "description": "A reference to another party by UUID, typically an organization, that this subject is associated with.",
                  "$ref": "#/$defs/UUIDDatatype"
                }
              },
              "remarks": {
                "$ref": "#field_oscal-metadata_remarks"
              }
            },
            "required": [
              "uuid",
              "type"
            ],
            "additionalProperties": false
          }
        },
        "responsible-parties": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_responsible-party"
          }
        },
        "actions": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_action"
          }
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:location-uuid": {
      "title": "Location Universally Unique Identifier Reference",
      "description": "Reference to a location by UUID.",
      "$ref": "#/$defs/UUIDDatatype"
    },
    "oscal-catalog-oscal-metadata:party-uuid": {
      "title": "Party Universally Unique Identifier Reference",
      "description": "Reference to a party by UUID.",
      "$ref": "#/$defs/UUIDDatatype"
    },
    "oscal-catalog-oscal-metadata:role-id": {
      "title": "Role Identifier Reference",
      "description": "Reference to a role by UUID.",
      "$ref": "#/$defs/TokenDatatype"
    },
    "oscal-catalog-oscal-metadata:back-matter": {
      "title": "Back matter",
      "description": "A collection of resources that may be referenced from within the OSCAL document instance.",
      "properties": {
        "resources": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Resource",
            "description": "A resource associated with content in the containing document instance. A resource may be directly included in the document using base64 encoding or may point to one or more equivalent internet resources.",
            "type": "object",
            "properties": {
              "uuid": {
                "title": "Resource Universally Unique Identifier",
                "description": "A unique identifier for a resource.",
                "$ref": "#/$defs/UUIDDatatype"
              },
              "title": {
                "title": "Resource Title",
                "description": "An optional name given to the resource, which may be used by a tool for display and navigation.",
                "type": "string"
              },
              "description": {
                "title": "Resource Description",
                "description": "An optional short summary of the resource used to indicate the purpose of the resource.",
                "type": "string"
              },
              "props": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-metadata_property"
                }
              },
              "document-ids": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#field_oscal-metadata_document-id"
                }
              },
              "citation": {
                "title": "Citation",
                "description": "An optional citation consisting of end note text using structured markup.",
                "type": "object",
                "properties": {
                  "text": {
                    "title": "Citation Text",
                    "description": "A line of citation text.",
                    "type": "string"
                  },
                  "props": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "$ref": "#assembly_oscal-metadata_property"
                    }
                  },
                  "links": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "$ref": "#assembly_oscal-metadata_link"
                    }
                  }
                },
                "required": [
                  "text"
                ],
                "additionalProperties": false
              },
              "rlinks": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "title": "Resource link",
                  "description": "A URL-based pointer to an external resource with an optional hash for verification and change detection.",
                  "type": "object",
                  "properties": {
                    "href": {
                      "title": "Hypertext Reference",
                      "description": "A resolvable URL pointing to the referenced resource.",
                      "$ref": "#/$defs/URIReferenceDatatype"
                    },
                    "media-type": {
                      "title": "Media Type",
                      "description": "A label that indicates the nature of a resource, as a data serialization or format.",
                      "$ref": "#/$defs/StringDatatype"
                    },
                    "hashes": {
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "$ref": "#field_oscal-metadata_hash"
                      }
                    }
                  },
                  "required": [
                    "href"
                  ],
                  "additionalProperties": false
                }
              },
              "base64": {
                "title": "Base64",
                "description": "A resource encoded using the Base64 alphabet defined by RFC 2045.",
                "type": "object",
                "properties": {
                  "filename": {
                    "title": "File Name",
                    "description": "Name of the file before it was encoded as Base64 to be embedded in a resource. This is the name that will be assigned to the file when the file is decoded.",
                    "$ref": "#/$defs/TokenDatatype"
                  },
                  "media-type": {
                    "title": "Media Type",
                    "description": "A label that indicates the nature of a resource, as a data serialization or format.",
                    "$ref": "#/$defs/StringDatatype"
                  },
                  "value": {
                    "$ref": "#/$defs/Base64Datatype"
                  }
                },
                "required": [
                  "value"
                ],
                "additionalProperties": false
              },
              "remarks": {
                "$ref": "#field_oscal-metadata_remarks"
              }
            },
            "required": [
              "uuid"
            ],
            "additionalProperties": false
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:property": {
      "title": "Property",
      "description": "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair.",
      "required": [
        "name",
        "value"
      ],
      "type": "object",
      "properties": {
        "name": {
          "title": "Property Name",
          "description": "A textual label, within a namespace, that uniquely identifies a specific attribute, characteristic, or quality of the property's containing object.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "uuid": {
          "title": "Property Universally Unique Identifier",
          "description": "A unique identifier for a property.",
          "$ref": "#/$defs/UUIDDatatype"
        },
        "ns": {
          "title": "Property Namespace",
          "description": "A namespace qualifying the property's name. This allows different organizations to associate distinct semantics with the same name.",
          "$ref": "#/$defs/URIDatatype"
        },
        "value": {
          "title": "Property Value",
          "description": "Indicates the value of the attribute, characteristic, or quality.",
          "$ref": "#/$defs/StringDatatype"
        },
        "class": {
          "title": "Property Class",
          "description": "A textual label that provides a sub-type or characterization of the property's name.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "group": {
          "title": "Property Group",
          "description": "An identifier for relating distinct sets of properties.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:link": {
      "title": "Link",
      "description": "A reference to a local or remote resource, that has a specific relation to the containing object.",
      "required": [
        "href"
      ],
      "type": "object",
      "properties": {
        "href": {
          "title": "Hypertext Reference",
          "description": "A resolvable URL reference to a resource.",
          "$ref": "#/$defs/URIReferenceDatatype"
        },
        "rel": {
          "title": "Link Relation Type",
          "description": "Describes the type of relationship provided by the link's hypertext reference. This can be an indicator of the link's purpose.",
          "anyOf": [
            {
              "$ref": "#/$defs/TokenDatatype"
            },
            {
              "enum": [
                "reference"
              ]
            }
          ]
        },
        "media-type": {
          "title": "Media Type",
          "description": "A label that indicates the nature of a resource, as a data serialization or format.",
          "$ref": "#/$defs/StringDatatype"
        },
        "resource-fragment": {
          "title": "Resource Fragment",
          "description": "In case where the href points to a back-matter/resource, this value will indicate the URI fragment to append to any rlink associated with the resource. This value MUST be URI encoded.",
          "$ref": "#/$defs/StringDatatype"
        },
        "text": {
          "title": "Link Text",
          "description": "A textual label to associate with the link, which may be used for presentation in a tool.",
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:responsible-party": {
      "title": "Responsible Party",
      "description": "A reference to a set of persons and/or organizations that have responsibility for performing the referenced role in the context of the containing object.",
      "required": [
        "role-id",
        "party-uuids"
      ],
      "type": "object",
      "properties": {
        "role-id": {
          "title": "Responsible Role",
          "description": "A reference to a role performed by a party.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "party-uuids": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#field_oscal-metadata_party-uuid"
          }
        },
        "props": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_property"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:action": {
      "title": "Action",
      "description": "An action applied by a role within a given party to the content.",
      "required": [
        "uuid",
        "type",
        "system"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Action Universally Unique Identifier",
          "description": "A unique identifier that can be used to reference this defined action elsewhere in an OSCAL document. A UUID should be consistently used for a given location across revisions of the document.",
          "$ref": "#/$defs/UUIDDatatype"
        },
        "date": {
          "title": "Action Occurrence Date",
          "description": "The date and time when the action occurred.",
          "$ref": "#/$defs/DateTimeWithTimezoneDatatype"
        },
        "type": {
          "title": "Action Type",
          "description": "The type of action documented by the assembly, such as an approval.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "system": {
          "title": "Action Type System",
          "description": "Specifies the action type system used.",
          "$ref": "#/$defs/URIDatatype"
        },
        "props": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_property"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        },
        "responsible-parties": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_responsible-party"
          }
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:responsible-role": {
      "title": "Responsible Role",
      "description": "A reference to a role with responsibility for performing a function relative to the containing object, optionally associated with a set of persons and/or organizations that perform that role.",
      "required": [
        "role-id"
      ],
      "type": "object",
      "properties": {
        "role-id": {
          "title": "Responsible Role ID",
          "description": "A human-oriented identifier reference to a role performed.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "props": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_property"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        },
        "party-uuids": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#field_oscal-metadata_party-uuid"
          }
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:hash": {
      "title": "Hash",
      "description": "A representation of a cryptographic digest generated over a resource using a specified hash algorithm.",
      "required": [
        "value",
        "algorithm"
      ],
      "type": "object",
      "properties": {
        "algorithm": {
          "title": "Hash algorithm",
          "description": "The digest method by which a hash is derived.",
          "anyOf": [
            {
              "$ref": "#/$defs/StringDatatype"
            },
            {
              "enum": [
                "SHA-224",
                "SHA-256",
                "SHA-384",
                "SHA-512",
                "SHA3-224",
                "SHA3-256",
                "SHA3-384",
                "SHA3-512"
              ]
            }
          ]
        },
        "value": {
          "$ref": "#/$defs/StringDatatype"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:remarks": {
      "title": "Remarks",
      "description": "Additional commentary about the containing object.",
      "type": "string"
    },
    "oscal-catalog-oscal-metadata:published": {
      "title": "Publication Timestamp",
      "description": "The date and time the document was last made available.",
      "$ref": "#/$defs/DateTimeWithTimezoneDatatype"
    },
    "oscal-catalog-oscal-metadata:last-modified": {
      "title": "Last Modified Timestamp",
      "description": "The date and time the document was last stored for later retrieval.",
      "$ref": "#/$defs/DateTimeWithTimezoneDatatype"
    },
    "oscal-catalog-oscal-metadata:version": {
      "title": "Document Version",
      "description": "Used to distinguish a specific revision of an OSCAL document from other previous and future versions.",
      "$ref": "#/$defs/StringDatatype"
    },
    "oscal-catalog-oscal-metadata:oscal-version": {
      "title": "OSCAL Version",
      "description": "The OSCAL model version the document was authored against and will conform to as valid.",
      "$ref": "#/$defs/StringDatatype"
    },
    "oscal-catalog-oscal-metadata:email-address": {
      "title": "Email Address",
      "description": "An email address as defined by RFC 5322 Section 3.4.1.",
      "$ref": "#/$defs/EmailAddressDatatype"
    },
    "oscal-catalog-oscal-metadata:telephone-number": {
      "title": "Telephone Number",
      "description": "A telephone service number as defined by ITU-T E.164.",
      "required": [
        "number"
      ],
      "type": "object",
      "properties": {
        "type": {
          "title": "type flag",
          "description": "Indicates the type of phone number.",
          "anyOf": [
            {
              "$ref": "#/$defs/StringDatatype"
            },
            {
              "enum": [
                "home",
                "office",
                "mobile"
              ]
            }
          ]
        },
        "number": {
          "$ref": "#/$defs/StringDatatype"
        }
      },
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:address": {
      "title": "Address",
      "description": "A postal address for the location.",
      "properties": {
        "type": {
          "title": "Address Type",
          "description": "Indicates the type of address.",
          "anyOf": [
            {
              "$ref": "#/$defs/TokenDatatype"
            },
            {
              "enum": [
                "home",
                "work"
              ]
            }
          ]
        },
        "addr-lines": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#field_oscal-metadata_addr-line"
          }
        },
        "city": {
          "title": "City",
          "description": "City, town or geographical region for the mailing address.",
          "$ref": "#/$defs/StringDatatype"
        },
        "state": {
          "title": "State",
          "description": "State, province or analogous geographical region for a mailing address.",
          "$ref": "#/$defs/StringDatatype"
        },
        "postal-code": {
          "title": "Postal Code",
          "description": "Postal or ZIP code for mailing address.",
          "$ref": "#/$defs/StringDatatype"
        },
        "country": {
          "title": "Country Code",
          "description": "The ISO 3166-1 alpha-2 country code for the mailing address.",
          "$ref": "#/$defs/StringDatatype"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-catalog-oscal-metadata:addr-line": {
      "title": "Address line",
      "description": "A single line of an address.",
      "$ref": "#/$defs/StringDatatype"
    },
    "oscal-catalog-oscal-metadata:document-id": {
      "title": "Document Identifier",
      "description": "A document identifier qualified by an identifier scheme.",
      "required": [
        "identifier"
      ],
      "type": "object",
      "properties": {
        "scheme": {
          "title": "Document Identification Scheme",
          "description": "Qualifies the kind of document identifier using a URI. If the scheme is not provided the value of the element will be interpreted as a string of characters.",
          "anyOf": [
            {
              "$ref": "#/$defs/URIDatatype"
            },
            {
              "enum": [
                "http://www.doi.org/"
              ]
            }
          ]
        },
        "identifier": {
          "$ref": "#/$defs/StringDatatype"
        }
      },
      "additionalProperties": false
    },
    "Base64Datatype": {
      "description": "Binary data encoded using the Base 64 encoding algorithm as defined by RFC4648.",
      "type": "string",
      "pattern": "^[0-9A-Za-z+/]+={0,2}$",
      "contentEncoding": "base64"
    },
    "DateTimeWithTimezoneDatatype": {
      "description": "A string representing a point in time with a required timezone.",
      "type": "string",
      "format": "date-time",
      "pattern": "^(((2000|2400|2800|(19|2[0-9](0[48]|[2468][048]|[13579][26])))-02-29)|(((19|2[0-9])[0-9]{2})-02-(0[1-9]|1[0-9]|2[0-8]))|(((19|2[0-9])[0-9]{2})-(0[13578]|10|12)-(0[1-9]|[12][0-9]|3[01]))|(((19|2[0-9])[0-9]{2})-(0[469]|11)-(0[1-9]|[12][0-9]|30)))T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(\\.[0-9]+)?(Z|(-((0[0-9]|1[0-2]):00|0[39]:30)|\\+((0[0-9]|1[0-4]):00|(0[34569]|10):30|(0[58]|12):45)))$"
    },
    "EmailAddressDatatype": {
      "description": "An email address string formatted according to RFC 6531.",
      "allOf": [
        {
          "$ref": "#/$defs/StringDatatype"
        },
        {
          "type": "string",
          "format": "email",
          "pattern": "^.+@.+$"
        }
      ]
    },
    "StringDatatype": {
      "description": "A non-empty string with leading and trailing whitespace disallowed. Whitespace is: U+9, U+10, U+32 or [ \n\t]+",
      "type": "string",
      "pattern": "^\\S(.*\\S)?$"
    },
    "TokenDatatype": {
      "description": "A non-colonized name as defined by XML Schema Part 2: Datatypes Second Edition. <https://www.w3.org/TR/xmlschema11-2/#NCName>.",
      "type": "string",
      "pattern": "^(\\p{L}|_)(\\p{L}|\\p{N}|[.\\-_])*$"
    },
    "URIDatatype": {
      "description": "A universal resource identifier (URI) formatted according to RFC3986.",
      "type": "string",
      "format": "uri",
      "pattern": "^[a-zA-Z][a-zA-Z0-9+\\-.]+:.+$"
    },
    "URIReferenceDatatype": {
      "description": "A URI Reference, either a URI or a relative-reference, formatted according to section 4.1 of RFC3986.",
      "type": "string",
      "format": "uri-reference"
    },
    "UUIDDatatype": {
      "description": "A type 4 ('random' or 'pseudorandom') or type 5 UUID per RFC 4122.",
      "type": "string",
      "pattern": "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[45][0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$"
    }
  }
}
