{ "$schema" : "http://json-schema.org/draft-07/schema#",
"$id" : "http://csrc.nist.gov/ns/oscal/1.0-schema.json",
"$comment" : "OSCAL Implementation Component Format: 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 },
"description" :
{ "title" : "Description",
"description" : "A description supporting the parent item.",
"$id" : "#/definitions/description",
"type" : "string" },
"remarks" :
{ "title" : "Remarks",
"description" : "Additional commentary on the parent item.",
"$id" : "#/definitions/remarks",
"type" : "string" },
"incorporates-component" :
{ "title" : "Incorporates Component",
"description" : "TBD",
"$id" : "#/definitions/incorporates-component",
"type" : "object",
"properties" :
{ "description" :
{ "$ref" : "#/definitions/description" } },
"required" :
[ "description" ],
"additionalProperties" : false },
"responsible-role" :
{ "title" : "Responsible Role",
"description" : "A reference to one or more roles with responsibility for performing a function relative to the control.",
"$id" : "#/definitions/responsible-role",
"type" : "object",
"properties" :
{ "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" } },
"party-ids" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/party-uuid" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"additionalProperties" : false },
"set-parameter" :
{ "title" : "Set Parameter Value",
"description" : "Identifies the parameter that will be filled in by the enclosed value element.",
"$id" : "#/definitions/set-parameter",
"type" : "object",
"properties" :
{ "value" :
{ "$ref" : "#/definitions/value" } },
"required" :
[ "value" ],
"additionalProperties" : false },
"value" :
{ "title" : "Value",
"description" : "The phrase or string that fills-in the parameter and completes the requirement statement.",
"$id" : "#/definitions/value",
"type" : "string" },
"component-definition" :
{ "title" : "Component Definition",
"description" : "A collection of component descriptions, which may optionally be grouped by capability.",
"$id" : "#/definitions/component-definition",
"type" : "object",
"properties" :
{ "metadata" :
{ "$ref" : "#/definitions/metadata" },
"import-component-definitions" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/import-component-definition" } },
"components" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/component" },
{ "not" :
{ "type" : "string" } } ] } },
"capabilities" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/capability" },
{ "not" :
{ "type" : "string" } } ] } },
"back-matter" :
{ "$ref" : "#/definitions/back-matter" } },
"required" :
[ "metadata" ],
"additionalProperties" : false },
"import-component-definition" :
{ "title" : "Import Component Definition",
"description" : "Loads a component definition from another resource.",
"$id" : "#/definitions/import-component-definition",
"type" : "object",
"properties" :
{ "href" :
{ "title" : "Hyperlink Reference",
"description" : "A link to a resource that defines a set of components and/or capabilities to import into this collection.",
"type" : "string",
"format" : "uri-reference" } },
"required" :
[ "href" ],
"additionalProperties" : false },
"component" :
{ "title" : "Component",
"description" : "A defined component that can be part of an implemented system.",
"$id" : "#/definitions/component",
"type" : "object",
"properties" :
{ "name" :
{ "title" : "Component Name",
"description" : "The component's short, human-readable name.",
"type" : "string" },
"component-type" :
{ "title" : "Component Type",
"description" : "A category describing the purpose of the component.",
"type" : "string" },
"title" :
{ "$ref" : "#/definitions/title" },
"description" :
{ "$ref" : "#/definitions/description" },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"responsible-parties" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/responsible-party" },
{ "not" :
{ "type" : "string" } } ] } },
"control-implementations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/control-implementation" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "name",
"component-type",
"title",
"description" ],
"additionalProperties" : false },
"capability" :
{ "title" : "Capability",
"description" : "A grouping of other components and/or capabilities.",
"$id" : "#/definitions/capability",
"type" : "object",
"properties" :
{ "name" :
{ "title" : "Capability Name",
"description" : "The capability's human-readable name.",
"type" : "string" },
"description" :
{ "$ref" : "#/definitions/description" },
"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" } },
"incorporates-components" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/incorporates-component" },
{ "not" :
{ "type" : "string" } } ] } },
"control-implementations" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/control-implementation" } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "name",
"description" ],
"additionalProperties" : false },
"control-implementation" :
{ "title" : "Control Implementation",
"description" : "Defines how the component or capability supports a set of controls.",
"$id" : "#/definitions/control-implementation",
"type" : "object",
"properties" :
{ "uuid" :
{ "title" : "Control Implementation Set Identifier",
"description" : "A unique identifier for the set of implemented controls.",
"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}$" },
"source" :
{ "description" : "A URL reference to the source catalog or profile for which this component is implementing controls for.",
"type" : "string",
"format" : "uri-reference" },
"description" :
{ "$ref" : "#/definitions/description" },
"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" } },
"implemented-requirements" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/implemented-requirement" } } },
"required" :
[ "uuid",
"source",
"description",
"implemented-requirements" ],
"additionalProperties" : false },
"implemented-requirement" :
{ "title" : "Control-based Requirement",
"description" : "Describes how the component implements an individual control.",
"$id" : "#/definitions/implemented-requirement",
"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}$" },
"control-id" :
{ "title" : "Control Identifier Reference",
"description" : "A reference to a control identifier.",
"type" : "string" },
"description" :
{ "$ref" : "#/definitions/description" },
"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" } },
"responsible-roles" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/responsible-role" },
{ "not" :
{ "type" : "string" } } ] } },
"set-parameters" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/set-parameter" },
{ "not" :
{ "type" : "string" } } ] } },
"statements" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/statement" },
{ "not" :
{ "type" : "string" } } ] } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "uuid" ],
"additionalProperties" : false },
"statement" :
{ "title" : "Specific Statement",
"description" : "Identifies which statements within a control are addressed.",
"$id" : "#/definitions/statement",
"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}$" },
"description" :
{ "$ref" : "#/definitions/description" },
"properties" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/prop" } },
"annotations" :
{ "anyOf" :
[
{ "$ref" : "#/definitions/annotation" },
{ "type" : "array",
"items" :
{ "$ref" : "#/definitions/annotation" },
"minItems" : 2 } ] },
"links" :
{ "type" : "array",
"minItems" : 1,
"items" :
{ "$ref" : "#/definitions/link" } },
"responsible-roles" :
{ "type" : "object",
"minProperties" : 1,
"additionalProperties" :
{ "allOf" :
[
{ "type" : "object",
"$ref" : "#/definitions/responsible-role" },
{ "not" :
{ "type" : "string" } } ] } },
"remarks" :
{ "$ref" : "#/definitions/remarks" } },
"required" :
[ "uuid" ],
"additionalProperties" : false } },
"properties" :
{ "component-definition" :
{ "$ref" : "#/definitions/component-definition" } },
"required" :
[ "component-definition" ] }