{ "$schema" : "http://json-schema.org/draft-07/schema#",
"$id" : "http://csrc.nist.gov/ns/oscal/1.0-schema.json",
"$comment" : "OSCAL Profile Metaschema: JSON Schema",
"type" : "object",
"definitions" :
{ "metadata" :
{ "title" : "Publication metadata",
"description" : "Provides information about the publication and availability of the containing document.",
"$id" : "#/definitions/metadata",
"type" : "object",
"properties" :
{ "title" :
{ "$ref" : "#/definitions/title" },
"published" :
{ "$ref" : "#/definitions/published" },
"last-modified" :
{ "$ref" : "#/definitions/last-modified" },
"version" :
{ "$ref" : "#/definitions/version" },
"oscal-version" :
{ "$ref" : "#/definitions/oscal-version" },
"revision-history" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/revision" } },
"document-ids" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/doc-id" } },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"roles" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/role" } },
"locations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/location" } },
"parties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/party" } },
"responsible-parties" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/responsible-party" },
{ "not" :
{ "type" : "string" } } ] } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "title",
"last-modified",
"version",
"oscal-version" ],
"additionalProperties" : false },
"back-matter" :
{ "title" : "Back matter",
"description" : "A collection of citations and resource references.",
"$id" : "#/definitions/back-matter",
"type" : "object",
"properties" :
{ "resources" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/resource" } } },
"additionalProperties" : false },
"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).",
"$id" : "#/definitions/revision",
"type" : "object",
"properties" :
{ "title" :
{ "$ref" : "#/definitions/title" },
"published" :
{ "$ref" : "#/definitions/published" },
"last-modified" :
{ "$ref" : "#/definitions/last-modified" },
"version" :
{ "$ref" : "#/definitions/version" },
"oscal-version" :
{ "$ref" : "#/definitions/oscal-version" },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"additionalProperties" : false },
"link" :
{ "title" : "Link",
"description" : "A reference to a local or remote resource",
"$id" : "#/definitions/link",
"type" : "object",
"properties" :
{ "href" :
{ "title" : "hypertext reference",
"description" : "A link to a document or document fragment (actual, nominal or projected)",
"type" : "string",
"format" : "uri-reference" },
"rel" :
{ "title" : "Relation",
"description" : "Describes the type of relationship provided by the link. This can be an indicator of the link's purpose.",
"type" : "string" },
"media-type" :
{ "title" : "Media type",
"description" : "Describes the media type of the linked resource",
"type" : "string" },
"text" :
{ "type" : "string" } },
"required" :
[ "text",
"href" ],
"additionalProperties" : false },
"published" :
{ "title" : "Publication Timestamp",
"description" : "The date and time this document was published.",
"$id" : "#/definitions/published",
"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-9]{2}:[0-9]{2})$" },
"last-modified" :
{ "title" : "Last modified timestamp",
"description" : "Date and time of last modification.",
"$id" : "#/definitions/last-modified",
"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-9]{2}:[0-9]{2})$" },
"version" :
{ "title" : "Document version",
"description" : "The version of the document content.",
"$id" : "#/definitions/version",
"type" : "string" },
"oscal-version" :
{ "title" : "OSCAL version",
"description" : "OSCAL model version.",
"$id" : "#/definitions/oscal-version",
"type" : "string" },
"doc-id" :
{ "title" : "Document Identifier",
"description" : "A document identifier qualified by an identifier type.",
"$id" : "#/definitions/doc-id",
"type" : "object",
"properties" :
{ "type" :
{ "description" : "Qualifies the kind of document identifier.",
"type" : "string" },
"identifier" :
{ "type" : "string" } },
"required" :
[ "identifier",
"type" ],
"additionalProperties" : false },
"prop" :
{ "title" : "Property",
"description" : "A value with a name, attributed to the containing control, part, or group.",
"$id" : "#/definitions/prop",
"type" : "object",
"properties" :
{ "name" :
{ "title" : "Name",
"description" : "Identifying the purpose and intended use of the property, part or other object.",
"type" : "string" },
"id" :
{ "title" : "Identifier",
"description" : "Unique identifier of the containing object",
"type" : "string" },
"ns" :
{ "title" : "Namespace",
"description" : "A namespace qualifying the name.",
"type" : "string" },
"class" :
{ "title" : "Class",
"description" : "Indicating the type or classification of the containing object",
"type" : "string" },
"value" :
{ "type" : "string" } },
"required" :
[ "value",
"name" ],
"additionalProperties" : false },
"annotation" :
{ "title" : "Annotation",
"description" : "A name/value pair with optional explanatory remarks.",
"$id" : "#/definitions/annotation",
"type" : "object",
"properties" :
{ "name" :
{ "title" : "Name",
"description" : "Identifying the purpose and intended use of the property, part or other object.",
"type" : "string" },
"id" :
{ "title" : "Identifier",
"description" : "Unique identifier of the containing object",
"type" : "string" },
"ns" :
{ "title" : "Namespace",
"description" : "A namespace qualifying the name.",
"type" : "string" },
"value" :
{ "title" : "Value",
"description" : "Indicates the value of the characteristic.",
"type" : "string" },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "name" ],
"additionalProperties" : false },
"location" :
{ "title" : "Location",
"description" : "A location, with associated metadata that can be referenced.",
"$id" : "#/definitions/location",
"type" : "object",
"properties" :
{ "uuid" :
{ "title" : "Universally Unique Identifier",
"description" : "A RFC 4122 version 4 Universally Unique Identifier (UUID) for the containing object.",
"type" : "string",
"pattern" : "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$" },
"title" :
{ "$ref" : "#/definitions/title" },
"address" :
{ "$ref" : "#/definitions/address" },
"email-addresses" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/email" } },
"telephone-numbers" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/phone" } },
"URLs" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/url" } },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"annotations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/annotation" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "uuid",
"address" ],
"additionalProperties" : false },
"location-uuid" :
{ "title" : "Location Reference",
"description" : "References a location defined in metadata.",
"$id" : "#/definitions/location-uuid",
"type" : "string",
"pattern" : "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$" },
"party" :
{ "title" : "Party (organization or person)",
"description" : "A responsible entity, either singular (an organization or person) or collective (multiple persons)",
"$id" : "#/definitions/party",
"type" : "object",
"properties" :
{ "uuid" :
{ "title" : "Universally Unique Identifier",
"description" : "A RFC 4122 version 4 Universally Unique Identifier (UUID) for the containing object.",
"type" : "string",
"pattern" : "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$" },
"type" :
{ "title" : "Party Type",
"description" : "A category describing the kind of party the object describes.",
"type" : "string",
"enum" :
[ "person",
"organization" ] },
"party-name" :
{ "$ref" : "#/definitions/party-name" },
"short-name" :
{ "$ref" : "#/definitions/short-name" },
"external-ids" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/external-id" } },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"annotations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/annotation" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"addresses" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/address" } },
"email-addresses" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/email" } },
"telephone-numbers" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/phone" } },
"member-of-organizations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/member-of-organization" } },
"location-uuids" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/location-uuid" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "uuid",
"type",
"party-name" ],
"additionalProperties" : false },
"party-uuid" :
{ "title" : "Party Reference",
"description" : "References a party defined in metadata.",
"$id" : "#/definitions/party-uuid",
"type" : "string",
"pattern" : "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$" },
"external-id" :
{ "title" : "Personal Identifier",
"description" : "An identifier for a person (such as an ORCID) using a designated scheme.",
"$id" : "#/definitions/external-id",
"type" : "object",
"properties" :
{ "type" :
{ "title" : "Type",
"description" : "Indicating the type of identifier, address, email or other data item.",
"type" : "string" },
"id" :
{ "type" : "string" } },
"required" :
[ "id",
"type" ],
"additionalProperties" : false },
"member-of-organization" :
{ "title" : "Organizational Affiliation",
"description" : "Identifies that the containing object is a member of the organization associated with the provided UUID.",
"$id" : "#/definitions/member-of-organization",
"type" : "string",
"pattern" : "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$" },
"rlink" :
{ "title" : "Resource link",
"description" : "A pointer to an external copy of a document with optional hash for verification",
"$id" : "#/definitions/rlink",
"type" : "object",
"properties" :
{ "href" :
{ "title" : "hypertext reference",
"description" : "A link to a document or document fragment (actual, nominal or projected)",
"type" : "string",
"format" : "uri-reference" },
"media-type" :
{ "title" : "Media type",
"description" : "Describes the media type of the linked resource",
"type" : "string" },
"hashes" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/hash" } } },
"required" :
[ "href" ],
"additionalProperties" : false },
"party-name" :
{ "title" : "Party Name",
"description" : "The full (legal) name of the party.",
"$id" : "#/definitions/party-name",
"type" : "string" },
"short-name" :
{ "title" : "short-name",
"description" : "A common name, short name or acronym",
"$id" : "#/definitions/short-name",
"type" : "string" },
"address" :
{ "title" : "Address",
"description" : "A postal address.",
"$id" : "#/definitions/address",
"type" : "object",
"properties" :
{ "type" :
{ "description" : "Indicates the type of address.",
"type" : "string" },
"postal-address" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/addr-line" } },
"city" :
{ "$ref" : "#/definitions/city" },
"state" :
{ "$ref" : "#/definitions/state" },
"postal-code" :
{ "$ref" : "#/definitions/postal-code" },
"country" :
{ "$ref" : "#/definitions/country" } },
"additionalProperties" : false },
"addr-line" :
{ "title" : "Address line",
"description" : "A single line of an address.",
"$id" : "#/definitions/addr-line",
"type" : "string" },
"city" :
{ "title" : "City",
"description" : "City, town or geographical region for mailing address",
"$id" : "#/definitions/city",
"type" : "string" },
"state" :
{ "title" : "State",
"description" : "State, province or analogous geographical region for mailing address",
"$id" : "#/definitions/state",
"type" : "string" },
"postal-code" :
{ "title" : "Postal Code",
"description" : "Postal or ZIP code for mailing address",
"$id" : "#/definitions/postal-code",
"type" : "string" },
"country" :
{ "title" : "Country",
"description" : "Country for mailing address",
"$id" : "#/definitions/country",
"type" : "string" },
"email" :
{ "title" : "Email",
"description" : "Email address",
"$id" : "#/definitions/email",
"type" : "string",
"format" : "email",
"pattern" : "^.+@.+" },
"phone" :
{ "title" : "Telephone",
"description" : "Contact number by telephone",
"$id" : "#/definitions/phone",
"type" : "object",
"properties" :
{ "type" :
{ "description" : "Indicates the type of phone number.",
"type" : "string" },
"number" :
{ "type" : "string" } },
"required" :
[ "number" ],
"additionalProperties" : false },
"url" :
{ "title" : "URL",
"description" : "URL for web site or Internet presence",
"$id" : "#/definitions/url",
"type" : "string",
"format" : "uri" },
"desc" :
{ "title" : "Description",
"description" : "A short textual description",
"$id" : "#/definitions/desc",
"type" : "string" },
"text" :
{ "title" : "Text",
"description" : "A line of textual content whose semantic is determined by the context of use.",
"$id" : "#/definitions/text",
"type" : "string" },
"biblio" :
{ "title" : "Bibliographic Definition",
"description" : "A container in which a set of bibliographic information can included. The model of this information is undefined by OSCAL.",
"$id" : "#/definitions/biblio",
"type" : "object",
"additionalProperties" : false },
"resource" :
{ "title" : "Resource",
"description" : "A resource associated with the present document, which may be a pointer to other data or a citation.",
"$id" : "#/definitions/resource",
"type" : "object",
"properties" :
{ "uuid" :
{ "title" : "Universally Unique Identifier",
"description" : "A RFC 4122 version 4 Universally Unique Identifier (UUID) for the containing object.",
"type" : "string",
"pattern" : "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$" },
"title" :
{ "$ref" : "#/definitions/title" },
"desc" :
{ "$ref" : "#/definitions/desc" },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"document-ids" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/doc-id" } },
"citation" :
{ "$ref" : "#/definitions/citation" },
"rlinks" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/rlink" } },
"attachments" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/base64" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "uuid" ],
"additionalProperties" : false },
"citation" :
{ "title" : "Citation",
"description" : "A citation consisting of end note text and optional structured bibliographic data.",
"$id" : "#/definitions/citation",
"type" : "object",
"properties" :
{ "text" :
{ "$ref" : "#/definitions/text" },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"biblio" :
{ "$ref" : "#/definitions/biblio" } },
"required" :
[ "text" ],
"additionalProperties" : false },
"hash" :
{ "title" : "Hash",
"description" : "A representation of a cryptographic digest generated over a resource using a hash algorithm.",
"$id" : "#/definitions/hash",
"type" : "object",
"properties" :
{ "algorithm" :
{ "title" : "Hash algorithm",
"description" : "Method by which a hash is derived",
"type" : "string" },
"value" :
{ "type" : "string" } },
"required" :
[ "value",
"algorithm" ],
"additionalProperties" : false },
"role" :
{ "title" : "Role",
"description" : "Defining a role to be assigned to a party",
"$id" : "#/definitions/role",
"type" : "object",
"properties" :
{ "id" :
{ "title" : "Identifier",
"description" : "Unique identifier of the containing object",
"type" : "string" },
"title" :
{ "$ref" : "#/definitions/title" },
"short-name" :
{ "$ref" : "#/definitions/short-name" },
"desc" :
{ "$ref" : "#/definitions/desc" },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"annotations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/annotation" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "id",
"title" ],
"additionalProperties" : false },
"responsible-party" :
{ "title" : "Responsible Party",
"description" : "A reference to a set of organizations or persons that have responsibility for performing a referenced role relative to the parent context.",
"$id" : "#/definitions/responsible-party",
"type" : "object",
"properties" :
{ "party-uuids" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/party-uuid" } },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"annotations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/annotation" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "party-uuids" ],
"additionalProperties" : false },
"title" :
{ "title" : "Title",
"description" : "A title for display and navigation",
"$id" : "#/definitions/title",
"type" : "string" },
"base64" :
{ "title" : "Base64",
"description" : "",
"$id" : "#/definitions/base64",
"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.",
"type" : "string",
"format" : "uri-reference" },
"media-type" :
{ "title" : "Media type",
"description" : "Describes the media type of the linked resource",
"type" : "string" },
"value" :
{ "type" : "string" } },
"required" :
[ "value" ],
"additionalProperties" : false },
"remarks" :
{ "title" : "Remarks",
"description" : "Additional commentary on the parent item.",
"$id" : "#/definitions/remarks",
"type" : "string" },
"param" :
{ "title" : "Parameter",
"description" : "Parameters provide a mechanism for the dynamic assignment of value(s) in a control.",
"$id" : "#/definitions/param",
"type" : "object",
"properties" :
{ "id" :
{ "title" : "Identifier",
"description" : "Unique identifier of the containing object",
"type" : "string" },
"class" :
{ "title" : "Class",
"description" : "Indicating the type or classification of the containing object",
"type" : "string" },
"depends-on" :
{ "title" : "Depends on",
"description" : "Another parameter invoking this one",
"type" : "string" },
"label" :
{ "$ref" : "#/definitions/label" },
"descriptions" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/usage" } },
"constraints" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/constraint" } },
"guidance" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/guideline" } },
"value" :
{ "$ref" : "#/definitions/value" },
"select" :
{ "$ref" : "#/definitions/select" },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } } },
"required" :
[ "id" ],
"additionalProperties" : false },
"label" :
{ "title" : "Parameter label",
"description" : "A placeholder for a missing value, in display.",
"$id" : "#/definitions/label",
"type" : "string" },
"usage" :
{ "title" : "Parameter description",
"description" : "Indicates and explains the purpose and use of a parameter",
"$id" : "#/definitions/usage",
"type" : "object",
"properties" :
{ "id" :
{ "title" : "Identifier",
"description" : "Unique identifier of the containing object",
"type" : "string" },
"summary" :
{ "type" : "string" } },
"required" :
[ "summary" ],
"additionalProperties" : false },
"constraint" :
{ "title" : "Constraint",
"description" : "A formal or informal expression of a constraint or test",
"$id" : "#/definitions/constraint",
"type" : "object",
"properties" :
{ "test" :
{ "title" : "Constraint test",
"description" : "A formal (executable) expression of a constraint",
"type" : "string" },
"detail" :
{ "type" : "string" } },
"required" :
[ "detail" ],
"additionalProperties" : false },
"guideline" :
{ "title" : "Guideline",
"description" : "A prose statement that provides a recommendation for the use of a parameter.",
"$id" : "#/definitions/guideline",
"type" : "object",
"properties" :
{ "prose" :
{ "$ref" : "#/definitions/prose" } },
"additionalProperties" : false },
"value" :
{ "title" : "Value constraint",
"description" : "Indicates a permissible value for a parameter or property",
"$id" : "#/definitions/value",
"type" : "string" },
"select" :
{ "title" : "Selection",
"description" : "Presenting a choice among alternatives",
"$id" : "#/definitions/select",
"type" : "object",
"properties" :
{ "how-many" :
{ "title" : "Cardinality",
"description" : "When selecting, a requirement such as one or more",
"type" : "string" },
"alternatives" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/choice" } } },
"additionalProperties" : false },
"choice" :
{ "title" : "Choice",
"description" : "A value selection among several such options",
"$id" : "#/definitions/choice",
"type" : "string" },
"part" :
{ "title" : "Part",
"description" : "A partition or component of a control or part",
"$id" : "#/definitions/part",
"type" : "object",
"properties" :
{ "id" :
{ "title" : "Identifier",
"description" : "Unique identifier of the containing object",
"type" : "string" },
"name" :
{ "title" : "Name",
"description" : "Identifying the purpose and intended use of the property, part or other object.",
"type" : "string" },
"ns" :
{ "title" : "Namespace",
"description" : "A namespace qualifying the name.",
"type" : "string" },
"class" :
{ "title" : "Class",
"description" : "Indicating the type or classification of the containing object",
"type" : "string" },
"title" :
{ "$ref" : "#/definitions/title" },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"prose" :
{ "$ref" : "#/definitions/prose" },
"parts" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/part" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } } },
"required" :
[ "name" ],
"additionalProperties" : false },
"prose" :
{ "title" : "Prose",
"description" : "Prose permits multiple paragraphs, lists, tables etc.",
"$id" : "#/definitions/prose",
"type" : "string" },
"profile" :
{ "title" : "Profile",
"description" : "Each OSCAL profile is defined by a Profile element",
"$id" : "#/definitions/profile",
"type" : "object",
"properties" :
{ "uuid" :
{ "title" : "Universally Unique Identifier",
"description" : "A RFC 4122 version 4 Universally Unique Identifier (UUID) for the containing object.",
"type" : "string",
"pattern" : "^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$" },
"metadata" :
{ "$ref" : "#/definitions/metadata" },
"imports" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/import" } },
"merge" :
{ "$ref" : "#/definitions/merge" },
"modify" :
{ "$ref" : "#/definitions/modify" },
"back-matter" :
{ "$ref" : "#/definitions/back-matter" } },
"required" :
[ "uuid",
"metadata",
"imports" ],
"additionalProperties" : false },
"import" :
{ "title" : "Import resource",
"description" : "An Import element designates a catalog, profile, or other resource to be included (referenced and potentially modified) by this profile.",
"$id" : "#/definitions/import",
"type" : "object",
"properties" :
{ "href" :
{ "title" : "hypertext reference",
"description" : "A link to a document or document fragment (actual, nominal or projected)",
"type" : "string",
"format" : "uri-reference" },
"include" :
{ "$ref" : "#/definitions/include" },
"exclude" :
{ "$ref" : "#/definitions/exclude" } },
"required" :
[ "href" ],
"additionalProperties" : false },
"merge" :
{ "title" : "Merge controls",
"description" : "A Merge element merges controls in resolution.",
"$id" : "#/definitions/merge",
"type" : "object",
"properties" :
{ "combine" :
{ "$ref" : "#/definitions/combine" },
"as-is" :
{ "$ref" : "#/definitions/as-is" },
"custom" :
{ "$ref" : "#/definitions/custom" } },
"additionalProperties" : false },
"combine" :
{ "title" : "Combination rule",
"description" : "A Combine element defines whether and how to combine multiple (competing) versions of the same control",
"$id" : "#/definitions/combine",
"type" : "object",
"properties" :
{ "method" :
{ "title" : "Combination method",
"description" : "How clashing controls should be handled",
"type" : "string",
"enum" :
[ "use-first",
"merge",
"keep" ] } },
"additionalProperties" : false },
"as-is" :
{ "title" : "As is",
"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.",
"$id" : "#/definitions/as-is",
"type" : "boolean" },
"custom" :
{ "title" : "Custom grouping",
"description" : "A Custom element frames a structure for embedding represented controls in resolution.",
"$id" : "#/definitions/custom",
"type" : "object",
"properties" :
{ "groups" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/group" } },
"id-selectors" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/call" } },
"pattern-selectors" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/match" } } },
"additionalProperties" : false },
"group" :
{ "title" : "Control group",
"description" : "As in catalogs, a group of (selected) controls or of groups of controls",
"$id" : "#/definitions/group",
"type" : "object",
"properties" :
{ "id" :
{ "title" : "Identifier",
"description" : "Unique identifier of the containing object",
"type" : "string" },
"class" :
{ "title" : "Class",
"description" : "Indicating the type or classification of the containing object",
"type" : "string" },
"title" :
{ "$ref" : "#/definitions/title" },
"parameters" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/param" } },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"parts" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/part" } },
"groups" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/group" } },
"id-selectors" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/call" } },
"pattern-selectors" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/match" } } },
"additionalProperties" : false },
"modify" :
{ "title" : "Modify controls",
"description" : "Set parameters or amend controls in resolution",
"$id" : "#/definitions/modify",
"type" : "object",
"properties" :
{ "parameter-settings" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/set-parameter" },
{ "not" :
{ "type" : "string" } } ] } },
"alterations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/alter" } } },
"additionalProperties" : false },
"include" :
{ "title" : "Include controls",
"description" : "Specifies which controls to include from the resource (source catalog) being imported",
"$id" : "#/definitions/include",
"type" : "object",
"properties" :
{ "all" :
{ "$ref" : "#/definitions/all" },
"id-selectors" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/call" } },
"pattern-selectors" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/match" } } },
"additionalProperties" : false },
"all" :
{ "title" : "Include all",
"description" : "Include all controls from the imported resource (catalog)",
"$id" : "#/definitions/all",
"type" : "object",
"properties" :
{ "with-child-controls" :
{ "title" : "Include contained controls with control",
"description" : "When a control is included, whether its child (dependent) controls are also included.",
"type" : "string",
"enum" :
[ "yes",
"no" ] } },
"additionalProperties" : false },
"call" :
{ "title" : "Call",
"description" : "Call a control by its ID",
"$id" : "#/definitions/call",
"type" : "object",
"properties" :
{ "control-id" :
{ "title" : "Control ID",
"description" : "Value of the 'id' flag on a target control",
"type" : "string" },
"with-child-controls" :
{ "title" : "Include contained controls with control",
"description" : "When a control is included, whether its child (dependent) controls are also included.",
"type" : "string",
"enum" :
[ "yes",
"no" ] } },
"required" :
[ "control-id" ],
"additionalProperties" : false },
"match" :
{ "title" : "Match controls by identifier",
"description" : "Select controls by (regular expression) match on ID",
"$id" : "#/definitions/match",
"type" : "object",
"properties" :
{ "pattern" :
{ "title" : "Pattern",
"description" : "A regular expression matching the IDs of one or more controls to be selected",
"type" : "string" },
"order" :
{ "title" : "Order",
"description" : "A designation of how a selection of controls in a profile is to be ordered.",
"type" : "string",
"enum" :
[ "keep",
"ascending",
"descending" ] },
"with-child-controls" :
{ "title" : "Include contained controls with control",
"description" : "When a control is included, whether its child (dependent) controls are also included.",
"type" : "string",
"enum" :
[ "yes",
"no" ] } },
"additionalProperties" : false },
"exclude" :
{ "title" : "Exclude controls",
"description" : "Which controls to exclude from the resource (source catalog) being imported",
"$id" : "#/definitions/exclude",
"type" : "object",
"properties" :
{ "id-selectors" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/call" } },
"pattern-selectors" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/match" } } },
"additionalProperties" : false },
"set-parameter" :
{ "title" : "Parameter Setting",
"description" : "A parameter setting, to be propagated to points of insertion",
"$id" : "#/definitions/set-parameter",
"type" : "object",
"properties" :
{ "class" :
{ "title" : "Class",
"description" : "Indicating the type or classification of the containing object",
"type" : "string" },
"depends-on" :
{ "title" : "Depends on",
"description" : "Another parameter invoking this one",
"type" : "string" },
"label" :
{ "$ref" : "#/definitions/label" },
"descriptions" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/usage" } },
"constraints" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/constraint" } },
"guidance" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/guideline" } },
"value" :
{ "$ref" : "#/definitions/value" },
"select" :
{ "$ref" : "#/definitions/select" },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } } },
"additionalProperties" : false },
"alter" :
{ "title" : "Alteration",
"description" : "An Alter element specifies changes to be made to an included control when a profile is resolved.",
"$id" : "#/definitions/alter",
"type" : "object",
"properties" :
{ "control-id" :
{ "title" : "Control ID",
"description" : "Value of the 'id' flag on a target control",
"type" : "string" },
"removals" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/remove" } },
"additions" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/add" } } },
"additionalProperties" : false },
"remove" :
{ "title" : "Removal",
"description" : "Specifies elements to be removed from a control, in resolution",
"$id" : "#/definitions/remove",
"type" : "object",
"properties" :
{ "name-ref" :
{ "title" : "Reference by (assigned) name",
"description" : "Items to remove, by assigned name",
"type" : "string" },
"class-ref" :
{ "title" : "Reference by class",
"description" : "Items to remove, by class. A token match.",
"type" : "string" },
"id-ref" :
{ "title" : "Reference by ID",
"description" : "Items to remove, indicated by their IDs",
"type" : "string" },
"item-name" :
{ "title" : "References by item name or generic identifier",
"description" : "Items to remove, by the name of the item's type, or generic identifier, e.g. title or prop",
"type" : "string" } },
"additionalProperties" : false },
"add" :
{ "title" : "Addition",
"description" : "Specifies contents to be added into controls, in resolution",
"$id" : "#/definitions/add",
"type" : "object",
"properties" :
{ "position" :
{ "title" : "Position",
"description" : "Where to add the new content with respect to the targeted element (beside it or inside it)",
"type" : "string",
"enum" :
[ "before",
"after",
"starting",
"ending" ] },
"id-ref" :
{ "title" : "Reference by ID",
"description" : "Target location of the addition.",
"type" : "string" },
"title" :
{ "$ref" : "#/definitions/title" },
"parameters" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/param" } },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"annotations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/annotation" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"parts" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/part" } } },
"additionalProperties" : false } },
"properties" :
{ "profile" :
{ "$ref" : "#/definitions/profile" } },
"required" :
[ "profile" ] }