GRC Schema

componentDefinition.schema.json

A collection of component descriptions, which may optionally be grouped by capability.

type · thingNIST vocabularystatus · draftv1
{
  "ComponentDefinition": {
    "@type": "ComponentDefinition",
    "schemaVersion": 1,
    "uuid": "String",
    "metadata": {
      "@type": "Metadata",
      "title": "String",
      "published": "Datetime",
      "last-modified": "Datetime",
      "version": "String",
      "oscal-version": "String",
      "revisions": [
        {
          "revisions(item)": {
            "@type": "Revisions(item)",
            "props": [
              {
                "props(item)": {
                  "@type": "Props(item)",
                  "name": "String",
                  "ns": "URI",
                  "value": "String",
                  "class": "String",
                  "group": "String",
                  "remarks": "String"
                }
              }
            ],
            "links": [
              {
                "links(item)": {
                  "@type": "Links(item)",
                  "href": "URI",
                  "rel": "String",
                  "media-type": "String",
                  "resource-fragment": "String",
                  "text": "String"
                }
              }
            ]
          }
        }
      ],
      "document-ids": [
        {
          "document-ids(item)": {
            "@type": "Document-ids(item)",
            "scheme": "URI",
            "identifier": "String"
          }
        }
      ],
      "roles": [
        {
          "roles(item)": {
            "@type": "Roles(item)",
            "description": "String",
            "id": "String",
            "short-name": "String"
          }
        }
      ],
      "locations": [
        {
          "locations(item)": {
            "@type": "Locations(item)",
            "address": {
              "@type": "Address",
              "type": "String",
              "addr-lines": [
                {
                  "addr-lines(item)": "String"
                }
              ],
              "city": "String",
              "state": "String",
              "postal-code": "String",
              "country": "String"
            },
            "email-addresses": [
              {
                "email-addresses(item)": "String"
              }
            ],
            "telephone-numbers": [
              {
                "telephone-numbers(item)": "TelephoneNumber"
              }
            ],
            "urls": [
              {
                "urls(item)": "URI"
              }
            ]
          }
        }
      ],
      "parties": [
        {
          "parties(item)": {
            "@type": "Parties(item)",
            "external-ids": [
              {
                "external-ids(item)": {
                  "@type": "External-ids(item)"
                }
              }
            ],
            "addresses": [
              {
                "addresses(item)": {
                  "@type": "Addresses(item)"
                }
              }
            ],
            "member-of-organizations": [
              {
                "member-of-organizations(item)": "String"
              }
            ],
            "location-uuids": [
              {
                "location-uuids(item)": "String"
              }
            ]
          }
        }
      ],
      "responsible-parties": [
        {
          "responsible-parties(item)": {
            "@type": "Responsible-parties(item)",
            "role-id": "String",
            "party-uuids": [
              {
                "party-uuids(item)": "String"
              }
            ]
          }
        }
      ],
      "actions": [
        {
          "actions(item)": {
            "@type": "Actions(item)",
            "date": "Datetime",
            "system": "URI"
          }
        }
      ]
    },
    "import-component-definitions": [
      {
        "import-component-definitions(item)": {
          "@type": "Import-component-definitions(item)"
        }
      }
    ],
    "components": [
      {
        "components(item)": {
          "@type": "Components(item)",
          "purpose": "String",
          "responsible-roles": [
            {
              "responsible-roles(item)": {
                "@type": "Responsible-roles(item)"
              }
            }
          ],
          "status": "String",
          "protocols": [
            {
              "protocols(item)": {
                "@type": "Protocols(item)",
                "port-ranges": [
                  {
                    "port-ranges(item)": {
                      "@type": "Port-ranges(item)",
                      "start": "Integer",
                      "end": "Integer",
                      "transport": "String"
                    }
                  }
                ]
              }
            }
          ],
          "control-implementations": [
            {
              "control-implementations(item)": {
                "@type": "Control-implementations(item)",
                "source": "URI",
                "set-parameters": [
                  {
                    "set-parameters(item)": {
                      "@type": "Set-parameters(item)",
                      "param-id": "String",
                      "depends-on": "String",
                      "label": "String",
                      "usage": "String",
                      "constraints": [
                        {
                          "constraints(item)": {
                            "@type": "Constraints(item)",
                            "tests": [
                              {
                                "tests(item)": {
                                  "@type": "Tests(item)",
                                  "expression": "String"
                                }
                              }
                            ]
                          }
                        }
                      ],
                      "guidelines": [
                        {
                          "guidelines(item)": {
                            "@type": "Guidelines(item)",
                            "prose": "String"
                          }
                        }
                      ],
                      "values": [
                        {
                          "values(item)": "String"
                        }
                      ],
                      "select": {
                        "@type": "Select",
                        "how-many": "String",
                        "choice": [
                          {
                            "choice(item)": "String"
                          }
                        ]
                      }
                    }
                  }
                ],
                "implemented-requirements": [
                  {
                    "implemented-requirements(item)": {
                      "@type": "Implemented-requirements(item)",
                      "control-id": "String",
                      "statements": [
                        {
                          "statements(item)": {
                            "@type": "Statements(item)",
                            "statement-id": "String",
                            "by-components": [
                              {
                                "by-components(item)": {
                                  "@type": "By-components(item)",
                                  "component-uuid": "String",
                                  "implementation-status": {
                                    "@type": "Implementation-status"
                                  },
                                  "export": {
                                    "@type": "Export",
                                    "provided": [
                                      {
                                        "provided(item)": {
                                          "@type": "Provided(item)"
                                        }
                                      }
                                    ],
                                    "responsibilities": [
                                      {
                                        "responsibilities(item)": {
                                          "@type": "Responsibilities(item)",
                                          "provided-uuid": "String"
                                        }
                                      }
                                    ]
                                  },
                                  "inherited": [
                                    {
                                      "inherited(item)": {
                                        "@type": "Inherited(item)"
                                      }
                                    }
                                  ],
                                  "satisfied": [
                                    {
                                      "satisfied(item)": {
                                        "@type": "Satisfied(item)",
                                        "responsibility-uuid": "String"
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    ],
    "capabilities": [
      {
        "capabilities(item)": {
          "@type": "Capabilities(item)",
          "incorporates-components": [
            {
              "incorporates-components(item)": {
                "@type": "Incorporates-components(item)"
              }
            }
          ]
        }
      }
    ],
    "back-matter": {
      "@type": "Back-matter",
      "resources": [
        {
          "resources(item)": {
            "@type": "Resources(item)",
            "citation": {
              "@type": "Citation"
            },
            "rlinks": [
              {
                "rlinks(item)": {
                  "@type": "Rlinks(item)",
                  "hashes": [
                    {
                      "hashes(item)": {
                        "@type": "Hashes(item)",
                        "algorithm": "String"
                      }
                    }
                  ]
                }
              }
            ],
            "base64": {
              "@type": "Base64",
              "filename": "String"
            }
          }
        }
      ]
    }
  }
}