{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/oscal-profile/versions/1.0.6.json",
  "x-lintel": {
    "source": "https://github.com/usnistgov/OSCAL/releases/download/v1.0.6/oscal_profile_schema.json",
    "sourceSha256": "0fb18c4c00f8509dbec8847a7d1b7479ddb72b32ddb2f987619d7a179eac8d64",
    "fileMatch": [
      "oscal*profile.json"
    ],
    "parsers": [
      "json"
    ]
  },
  "type": "object",
  "properties": {
    "$schema": {
      "$ref": "#json-schema-directive"
    },
    "profile": {
      "$ref": "#assembly_oscal-profile_profile"
    }
  },
  "required": [
    "profile"
  ],
  "additionalProperties": false,
  "$comment": "OSCAL Profile 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-profile-oscal-profile:profile": {
      "title": "Profile",
      "description": "Each OSCAL profile is defined by a Profile element",
      "required": [
        "uuid",
        "metadata",
        "imports"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Profile Universally Unique Identifier",
          "description": "A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this profile elsewhere in this or other OSCAL instances. The locally defined UUID of the profile can be used to reference the data item locally or globally (e.g., in an imported OSCAL instance).This identifier should be assigned per-subject, which means it should be consistently used to identify the same profile across revisions of the document.",
          "$ref": "#/$defs/UUIDDatatype"
        },
        "metadata": {
          "$ref": "#assembly_oscal-metadata_metadata"
        },
        "imports": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_import"
          }
        },
        "merge": {
          "$ref": "#assembly_oscal-profile_merge"
        },
        "modify": {
          "$ref": "#assembly_oscal-profile_modify"
        },
        "back-matter": {
          "$ref": "#assembly_oscal-metadata_back-matter"
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:import": {
      "title": "Import resource",
      "description": "The import designates a catalog or profile to be included (referenced and potentially modified) by this profile. The import also identifies which controls to select using the include-all, include-controls, and exclude-controls directives.",
      "required": [
        "href"
      ],
      "type": "object",
      "properties": {
        "href": {
          "title": "Catalog or Profile Reference",
          "description": "A resolvable URL reference to the base catalog or profile that this profile is tailoring.",
          "$ref": "#/$defs/URIReferenceDatatype"
        },
        "include-all": {
          "$ref": "#assembly_oscal-catalog-common_include-all"
        },
        "include-controls": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_select-control-by-id"
          }
        },
        "exclude-controls": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_select-control-by-id"
          }
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:merge": {
      "title": "Merge controls",
      "description": "A Merge element provides structuring directives that drive how controls are organized after resolution.",
      "properties": {
        "combine": {
          "title": "Combination rule",
          "description": "A Combine element defines how to combine multiple (competing) versions of the same control.",
          "type": "object",
          "properties": {
            "method": {
              "title": "Combination method",
              "description": "How clashing controls should be handled",
              "allOf": [
                {
                  "$ref": "#/$defs/StringDatatype"
                },
                {
                  "enum": [
                    "use-first",
                    "merge",
                    "keep"
                  ]
                }
              ]
            }
          },
          "additionalProperties": false
        },
        "flat": {
          "title": "Flat",
          "description": "Use the flat structuring method.",
          "type": "object",
          "additionalProperties": false
        },
        "as-is": {
          "title": "As-Is Structuring Directive",
          "description": "An As-is element indicates that the controls should be structured in resolution as they are structured in their source catalogs. It does not contain any elements or attributes.",
          "$ref": "#/$defs/BooleanDatatype"
        },
        "custom": {
          "title": "Custom grouping",
          "description": "A Custom element frames a structure for embedding represented controls in resolution.",
          "type": "object",
          "properties": {
            "groups": {
              "type": "array",
              "minItems": 1,
              "items": {
                "$ref": "#assembly_oscal-profile_group"
              }
            },
            "insert-controls": {
              "type": "array",
              "minItems": 1,
              "items": {
                "$ref": "#assembly_oscal-profile_insert-controls"
              }
            }
          },
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:group": {
      "title": "Control group",
      "description": "A group of (selected) controls or of groups of controls",
      "required": [
        "title"
      ],
      "type": "object",
      "properties": {
        "id": {
          "title": "Group Identifier",
          "description": "A human-oriented, locally unique identifier with cross-instance scope that can be used to reference this defined group elsewhere in this or other OSCAL instances. When referenced from another OSCAL instance, this identifier must be referenced in the context of the containing resource (e.g., import-profile). This id should be assigned per-subject, which means it should be consistently used to identify the same group across revisions of the document.",
          "$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-catalog-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-catalog-common_part"
          }
        },
        "groups": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_group"
          }
        },
        "insert-controls": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_insert-controls"
          }
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:modify": {
      "title": "Modify controls",
      "description": "Set parameters or amend controls in resolution",
      "properties": {
        "set-parameters": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Parameter Setting",
            "description": "A parameter setting, to be propagated to points of insertion",
            "type": "object",
            "properties": {
              "param-id": {
                "title": "Parameter ID",
                "description": "A human-oriented, locally unique identifier with cross-instance scope that can be used to reference this defined parameter elsewhere in this or other OSCAL instances. When referenced from another OSCAL instance, this identifier must be referenced in the context of the containing resource (e.g., import-profile). This id should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.",
                "$ref": "#/$defs/TokenDatatype"
              },
              "class": {
                "title": "Parameter Class",
                "description": "A textual label that provides a characterization 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-catalog-common_parameter-constraint"
                }
              },
              "guidelines": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#assembly_oscal-catalog-common_parameter-guideline"
                }
              },
              "values": {
                "type": "array",
                "minItems": 1,
                "items": {
                  "$ref": "#field_oscal-catalog-common_parameter-value"
                }
              },
              "select": {
                "$ref": "#assembly_oscal-catalog-common_parameter-selection"
              }
            },
            "required": [
              "param-id"
            ],
            "additionalProperties": false
          }
        },
        "alters": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_alter"
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:insert-controls": {
      "title": "Select controls",
      "description": "Specifies which controls to use in the containing context.",
      "properties": {
        "order": {
          "title": "Order",
          "description": "A designation of how a selection of controls in a profile is to be ordered.",
          "allOf": [
            {
              "$ref": "#/$defs/TokenDatatype"
            },
            {
              "enum": [
                "keep",
                "ascending",
                "descending"
              ]
            }
          ]
        },
        "include-all": {
          "$ref": "#assembly_oscal-catalog-common_include-all"
        },
        "include-controls": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_select-control-by-id"
          }
        },
        "exclude-controls": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_select-control-by-id"
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:select-control-by-id": {
      "title": "Call",
      "description": "Call a control by its ID",
      "properties": {
        "with-child-controls": {
          "title": "Include contained controls with control",
          "description": "When a control is included, whether its child (dependent) controls are also included.",
          "allOf": [
            {
              "$ref": "#/$defs/TokenDatatype"
            },
            {
              "enum": [
                "yes",
                "no"
              ]
            }
          ]
        },
        "with-ids": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Match Controls by Identifier",
            "description": "",
            "$ref": "#/$defs/TokenDatatype"
          }
        },
        "matching": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Match Controls by Pattern",
            "description": "Select controls by (regular expression) match on ID",
            "type": "object",
            "properties": {
              "pattern": {
                "title": "Pattern",
                "description": "A glob expression matching the IDs of one or more controls to be selected.",
                "$ref": "#/$defs/StringDatatype"
              }
            },
            "additionalProperties": false
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:alter": {
      "title": "Alteration",
      "description": "An Alter element specifies changes to be made to an included control when a profile is resolved.",
      "required": [
        "control-id"
      ],
      "type": "object",
      "properties": {
        "control-id": {
          "title": "Control Identifier Reference",
          "description": "A human-oriented identifier reference to a control with a corresponding id value. When referencing an externally defined control, the Control Identifier Reference must be used in the context of the external / imported OSCAL instance (e.g., uri-reference).",
          "$ref": "#/$defs/TokenDatatype"
        },
        "removes": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_remove"
          }
        },
        "adds": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-profile_add"
          }
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:remove": {
      "title": "Removal",
      "description": "Specifies objects to be removed from a control based on specific aspects of the object that must all match.",
      "properties": {
        "by-name": {
          "title": "Reference by (assigned) name",
          "description": "Identify items to remove by matching their assigned name",
          "$ref": "#/$defs/TokenDatatype"
        },
        "by-class": {
          "title": "Reference by class",
          "description": "Identify items to remove by matching their class.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "by-id": {
          "title": "Reference by ID",
          "description": "Identify items to remove indicated by their id.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "by-item-name": {
          "title": "Item Name Reference",
          "description": "Identify items to remove by the name of the item's information element name, e.g. title or prop",
          "$ref": "#/$defs/TokenDatatype"
        },
        "by-ns": {
          "title": "Item Namespace Reference",
          "description": "Identify items to remove by the item's ns, which is the namespace associated with a part, or prop.",
          "$ref": "#/$defs/TokenDatatype"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-profile-oscal-profile:add": {
      "title": "Addition",
      "description": "Specifies contents to be added into controls, in resolution",
      "properties": {
        "position": {
          "title": "Position",
          "description": "Where to add the new content with respect to the targeted element (beside it or inside it)",
          "allOf": [
            {
              "$ref": "#/$defs/TokenDatatype"
            },
            {
              "enum": [
                "before",
                "after",
                "starting",
                "ending"
              ]
            }
          ]
        },
        "by-id": {
          "title": "Reference by ID",
          "description": "Target location of the addition.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "title": {
          "title": "Title Change",
          "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-catalog-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-catalog-common_part"
          }
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "oscal-profile-oscal-metadata:metadata": {
      "title": "Publication metadata",
      "description": "Provides information about the publication and availability of the containing 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": {
            "$ref": "#assembly_oscal-metadata_revision"
          }
        },
        "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": {
            "$ref": "#assembly_oscal-metadata_role"
          }
        },
        "locations": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_location"
          }
        },
        "parties": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_party"
          }
        },
        "responsible-parties": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_responsible-party"
          }
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-metadata:revision": {
      "title": "Revision History Entry",
      "description": "An entry in a sequential list of revisions to the containing document in reverse chronological order (i.e., most recent previous revision first).",
      "required": [
        "version"
      ],
      "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"
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-metadata:location": {
      "title": "Location",
      "description": "A location, with associated metadata that can be referenced.",
      "required": [
        "uuid",
        "address"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Location Universally Unique Identifier",
          "description": "A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this defined location elsewhere in this or other OSCAL instances. The locally defined UUID of the location can be used to reference the data item locally or globally (e.g., from an importing OSCAL instance). This UUID should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.",
          "$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 Internet presence 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"
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-metadata:location-uuid": {
      "title": "Location Reference",
      "description": "A machine-oriented identifier reference to a location defined in the metadata section of this or another OSCAL instance. The UUID of the location in the source OSCAL instance is sufficient to reference the data item locally or globally (e.g., in an imported OSCAL instance).",
      "$ref": "#/$defs/UUIDDatatype"
    },
    "oscal-profile-oscal-metadata:party": {
      "title": "Party (organization or person)",
      "description": "A responsible entity which is either a person or an organization.",
      "required": [
        "uuid",
        "type"
      ],
      "type": "object",
      "properties": {
        "uuid": {
          "title": "Party Universally Unique Identifier",
          "description": "A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this defined party elsewhere in this or other OSCAL instances. The locally defined UUID of the party can be used to reference the data item locally or globally (e.g., from an importing OSCAL instance). This UUID should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.",
          "$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 machine-oriented identifier reference to another party (person or organization) that this subject is associated with. The UUID of the party in the source OSCAL instance is sufficient to reference the data item locally or globally (e.g., in an imported OSCAL instance).",
            "$ref": "#/$defs/UUIDDatatype"
          }
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-metadata:party-uuid": {
      "title": "Party Reference",
      "description": "A machine-oriented identifier reference to another party defined in metadata. The UUID of the party in the source OSCAL instance is sufficient to reference the data item locally or globally (e.g., in an imported OSCAL instance).",
      "$ref": "#/$defs/UUIDDatatype"
    },
    "oscal-profile-oscal-metadata:role": {
      "title": "Role",
      "description": "Defines a function assumed or expected to be assumed by a party in a specific situation.",
      "required": [
        "id",
        "title"
      ],
      "type": "object",
      "properties": {
        "id": {
          "title": "Role Identifier",
          "description": "A human-oriented, locally unique identifier with cross-instance scope that can be used to reference this defined role elsewhere in this or other OSCAL instances. When referenced from another OSCAL instance, the locally defined ID of the Role from the imported OSCAL instance must be referenced in the context of the containing resource (e.g., import, import-component-definition, import-profile, import-ssp or import-ap). This ID should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.",
          "$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"
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-metadata:role-id": {
      "title": "Role Identifier Reference",
      "description": "A human-oriented identifier reference to roles served by the user.",
      "$ref": "#/$defs/TokenDatatype"
    },
    "oscal-profile-oscal-metadata:back-matter": {
      "title": "Back matter",
      "description": "A collection of resources, which may be included directly or by reference.",
      "properties": {
        "resources": {
          "type": "array",
          "minItems": 1,
          "items": {
            "title": "Resource",
            "description": "A resource associated with content in the containing document. A resource may be directly included in the document base64 encoded or may point to one or more equivalent internet resources.",
            "type": "object",
            "properties": {
              "uuid": {
                "title": "Resource Universally Unique Identifier",
                "description": "A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this defined resource elsewhere in this or other OSCAL instances. This UUID should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.",
                "$ref": "#/$defs/UUIDDatatype"
              },
              "title": {
                "title": "Resource Title",
                "description": "A name given to the resource, which may be used by a tool for display and navigation.",
                "type": "string"
              },
              "description": {
                "title": "Resource Description",
                "description": "A 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": "A citation consisting of end note text and optional structured bibliographic data.",
                "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 pointer to an external resource with an optional hash for verification and change detection.",
                  "type": "object",
                  "properties": {
                    "href": {
                      "title": "Hypertext Reference",
                      "description": "A resolvable URI reference to a resource.",
                      "$ref": "#/$defs/URIReferenceDatatype"
                    },
                    "media-type": {
                      "title": "Media Type",
                      "description": "Specifies a media type as defined by the Internet Assigned Numbers Authority (IANA) Media Types Registry.",
                      "$ref": "#/$defs/StringDatatype"
                    },
                    "hashes": {
                      "type": "array",
                      "minItems": 1,
                      "items": {
                        "$ref": "#field_oscal-metadata_hash"
                      }
                    }
                  },
                  "required": [
                    "href"
                  ],
                  "additionalProperties": false
                }
              },
              "base64": {
                "title": "Base64",
                "description": "The Base64 alphabet in RFC 2045 - aligned with XSD.",
                "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/URIReferenceDatatype"
                  },
                  "media-type": {
                    "title": "Media Type",
                    "description": "Specifies a media type as defined by the Internet Assigned Numbers Authority (IANA) Media Types Registry.",
                    "$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-profile-oscal-metadata:property": {
      "title": "Property",
      "description": "An attribute, characteristic, or quality of the containing object expressed as a namespace qualified name/value pair. The value of a property is a simple scalar value, which may be expressed as a list of values.",
      "required": [
        "name",
        "value"
      ],
      "type": "object",
      "properties": {
        "name": {
          "title": "Property Name",
          "description": "A textual label that uniquely identifies a specific attribute, characteristic, or quality of the property's containing object.",
          "anyOf": [
            {
              "$ref": "#/$defs/TokenDatatype"
            },
            {
              "enum": [
                "marking"
              ]
            }
          ]
        },
        "uuid": {
          "title": "Property Universally Unique Identifier",
          "description": "A machine-oriented, globally unique identifier with cross-instance scope that can be used to reference this defined property elsewhere in this or other OSCAL instances. This UUID should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.",
          "$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. This can be used to further distinguish or discriminate between the semantics of multiple properties of the same object with the same name and ns.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-metadata:link": {
      "title": "Link",
      "description": "A reference to a local or remote resource",
      "required": [
        "href"
      ],
      "type": "object",
      "properties": {
        "href": {
          "title": "Hypertext Reference",
          "description": "A resolvable URL reference to a resource.",
          "$ref": "#/$defs/URIReferenceDatatype"
        },
        "rel": {
          "title": "Relation",
          "description": "Describes the type of relationship provided by the link. This can be an indicator of the link's purpose.",
          "anyOf": [
            {
              "$ref": "#/$defs/TokenDatatype"
            },
            {
              "enum": [
                "reference"
              ]
            }
          ]
        },
        "media-type": {
          "title": "Media Type",
          "description": "Specifies a media type as defined by the Internet Assigned Numbers Authority (IANA) Media Types Registry.",
          "$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-profile-oscal-metadata:responsible-party": {
      "title": "Responsible Party",
      "description": "A reference to a set of organizations or persons that have responsibility for performing a referenced role in the context of the containing object.",
      "required": [
        "role-id",
        "party-uuids"
      ],
      "type": "object",
      "properties": {
        "role-id": {
          "title": "Responsible Role",
          "description": "A human-oriented identifier reference to roles served by the user.",
          "$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-profile-oscal-metadata:responsible-role": {
      "title": "Responsible Role",
      "description": "A reference to one or more roles with responsibility for performing a function relative to the containing object.",
      "required": [
        "role-id"
      ],
      "type": "object",
      "properties": {
        "role-id": {
          "title": "Responsible Role ID",
          "description": "A human-oriented identifier reference to roles responsible for the business function.",
          "$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-profile-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": "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-profile-oscal-metadata:remarks": {
      "title": "Remarks",
      "description": "Additional commentary on the containing object.",
      "type": "string"
    },
    "oscal-profile-oscal-metadata:published": {
      "title": "Publication Timestamp",
      "description": "The date and time the document was published. The date-time value must be formatted according to RFC 3339 with full time and time zone included.",
      "$ref": "#/$defs/DateTimeWithTimezoneDatatype"
    },
    "oscal-profile-oscal-metadata:last-modified": {
      "title": "Last Modified Timestamp",
      "description": "The date and time the document was last modified. The date-time value must be formatted according to RFC 3339 with full time and time zone included.",
      "$ref": "#/$defs/DateTimeWithTimezoneDatatype"
    },
    "oscal-profile-oscal-metadata:version": {
      "title": "Document Version",
      "description": "A string used to distinguish the current version of the document from other previous (and future) versions.",
      "$ref": "#/$defs/StringDatatype"
    },
    "oscal-profile-oscal-metadata:oscal-version": {
      "title": "OSCAL version",
      "description": "The OSCAL model version the document was authored against.",
      "$ref": "#/$defs/StringDatatype"
    },
    "oscal-profile-oscal-metadata:email-address": {
      "title": "Email Address",
      "description": "An email address as defined by RFC 5322 Section 3.4.1.",
      "$ref": "#/$defs/EmailAddressDatatype"
    },
    "oscal-profile-oscal-metadata:telephone-number": {
      "title": "Telephone Number",
      "description": "Contact number by telephone.",
      "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-profile-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 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-profile-oscal-metadata:addr-line": {
      "title": "Address line",
      "description": "A single line of an address.",
      "$ref": "#/$defs/StringDatatype"
    },
    "oscal-profile-oscal-metadata:document-id": {
      "title": "Document Identifier",
      "description": "A document identifier qualified by an identifier scheme. A document identifier provides a globally unique identifier with a cross-instance scope that is used for a group of documents that are to be treated as different versions of the same document. If this element does not appear, or if the value of this element is empty, the value of \"document-id\" is equal to the value of the \"uuid\" flag of the top-level root element.",
      "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
    },
    "oscal-profile-oscal-catalog-common:part": {
      "title": "Part",
      "description": "A partition of a control's definition or a child of another part.",
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "id": {
          "title": "Part Identifier",
          "description": "A human-oriented, locally unique identifier with cross-instance scope that can be used to reference this defined part elsewhere in this or other OSCAL instances. When referenced from another OSCAL instance, this identifier must be referenced in the context of the containing resource (e.g., import-profile). This id should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "name": {
          "title": "Part Name",
          "description": "A textual label that uniquely identifies the part's semantic type.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "ns": {
          "title": "Part Namespace",
          "description": "A 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": "A textual label that provides a sub-type or characterization of the part's name. This can be used to further distinguish or discriminate between the semantics of multiple parts of the same control with the same name and ns.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "title": {
          "title": "Part Title",
          "description": "A 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-catalog-common_part"
          }
        },
        "links": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-metadata_link"
          }
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-catalog-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 human-oriented, locally unique identifier with cross-instance scope that can be used to reference this defined parameter elsewhere in this or other OSCAL instances. When referenced from another OSCAL instance, this identifier must be referenced in the context of the containing resource (e.g., import-profile). This id should be assigned per-subject, which means it should be consistently used to identify the same subject across revisions of the document.",
          "$ref": "#/$defs/TokenDatatype"
        },
        "class": {
          "title": "Parameter Class",
          "description": "A textual label that provides a characterization 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-catalog-common_parameter-constraint"
          }
        },
        "guidelines": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#assembly_oscal-catalog-common_parameter-guideline"
          }
        },
        "values": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#field_oscal-catalog-common_parameter-value"
          }
        },
        "select": {
          "$ref": "#assembly_oscal-catalog-common_parameter-selection"
        },
        "remarks": {
          "$ref": "#field_oscal-metadata_remarks"
        }
      },
      "additionalProperties": false
    },
    "oscal-profile-oscal-catalog-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-profile-oscal-catalog-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-profile-oscal-catalog-common:parameter-value": {
      "title": "Parameter Value",
      "description": "A parameter value or set of values.",
      "$ref": "#/$defs/StringDatatype"
    },
    "oscal-profile-oscal-catalog-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-profile-oscal-catalog-common:include-all": {
      "title": "Include All",
      "description": "Include all controls from the imported catalog or profile resources.",
      "type": "object",
      "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"
    },
    "BooleanDatatype": {
      "description": "A binary value that is either: true or false.",
      "type": "boolean"
    },
    "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}$"
    }
  }
}
