From fd66c86cfe140771ee5b52afe4da117f7497c857 Mon Sep 17 00:00:00 2001 From: Easy Dynamics Automation <noreply@easydynamics.com> Date: Wed, 6 Dec 2023 12:22:31 +0000 Subject: [PATCH] chore(deps): update OSCAL types to v1.1.1 --- packages/oscal-types/src/oscal.ts | 635 ++++++++++++++---------------- 1 file changed, 299 insertions(+), 336 deletions(-) diff --git a/packages/oscal-types/src/oscal.ts b/packages/oscal-types/src/oscal.ts index 2e48f744b..d55ec0377 100644 --- a/packages/oscal-types/src/oscal.ts +++ b/packages/oscal-types/src/oscal.ts @@ -8,6 +8,7 @@ // match the expected interface, even if the JSON is valid. export interface Oscal { + readonly $schema?: string; readonly catalog?: Catalog; readonly profile?: Profile; readonly 'component-definition'?: ComponentDefinition; @@ -30,7 +31,7 @@ export interface SecurityAssessmentPlanSAP { * the referenced SSP. */ readonly 'local-definitions'?: AssessmentPlanLocalDefinitions; - readonly metadata: PublicationMetadata; + readonly metadata: DocumentMetadata; readonly 'reviewed-controls': ReviewedControlsAndControlObjectives; readonly tasks?: Task[]; /** @@ -82,7 +83,8 @@ export interface AssessmentPlatform { } /** - * A reference to a local or remote resource + * A reference to a local or remote resource, that has a specific relation to the containing + * object. */ export interface Link { /** @@ -90,15 +92,20 @@ export interface Link { */ readonly href: string; /** - * Specifies a media type as defined by the Internet Assigned Numbers Authority (IANA) Media - * Types Registry. + * A label that indicates the nature of a resource, as a data serialization or format. */ readonly 'media-type'?: string; /** - * Describes the type of relationship provided by the link. This can be an indicator of the - * link's purpose. + * Describes the type of relationship provided by the link's hypertext reference. This can + * be an indicator of the link's purpose. */ readonly rel?: string; + /** + * In case where the href points to a back-matter/resource, this value will indicate the URI + * fragment to append to any rlink associated with the resource. This value MUST be URI + * encoded. + */ + readonly 'resource-fragment'?: string; /** * A textual label to associate with the link, which may be used for presentation in a tool. */ @@ -107,19 +114,20 @@ export interface Link { /** * 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. + * namespace qualified name/value pair. */ export interface Property { /** - * 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. + * A textual label that provides a sub-type or characterization of the property's name. */ readonly class?: string; /** - * A textual label that uniquely identifies a specific attribute, characteristic, or quality - * of the property's containing object. + * An identifier for relating distinct sets of properties. + */ + readonly group?: string; + /** + * A textual label, within a namespace, that uniquely identifies a specific attribute, + * characteristic, or quality of the property's containing object. */ readonly name: string; /** @@ -129,10 +137,7 @@ export interface Property { readonly ns?: string; readonly remarks?: string; /** - * 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. + * A unique identifier for a property. */ readonly uuid?: string; /** @@ -157,8 +162,8 @@ export interface UsesComponent { } /** - * A reference to a set of organizations or persons that have responsibility for performing - * a referenced role in the context of the containing object. + * A reference to a set of persons and/or organizations that have responsibility for + * performing the referenced role in the context of the containing object. */ export interface ResponsibleParty { readonly links?: Link[]; @@ -166,7 +171,7 @@ export interface ResponsibleParty { readonly props?: Property[]; readonly remarks?: string; /** - * A human-oriented identifier reference to roles served by the user. + * A reference to a role performed by a party. */ readonly 'role-id': string; } @@ -260,8 +265,9 @@ export enum Transport { } /** - * A reference to one or more roles with responsibility for performing a function relative - * to the containing object. + * A reference to a role with responsibility for performing a function relative to the + * containing object, optionally associated with a set of persons and/or organizations that + * perform that role. */ export interface ResponsibleRole { readonly links?: Link[]; @@ -269,7 +275,7 @@ export interface ResponsibleRole { readonly props?: Property[]; readonly remarks?: string; /** - * A human-oriented identifier reference to roles responsible for the business function. + * A human-oriented identifier reference to a role performed. */ readonly 'role-id': string; } @@ -343,28 +349,28 @@ export interface IncludeAll { } /** - * A collection of resources, which may be included directly or by reference. + * A collection of resources that may be referenced from within the OSCAL document instance. */ export interface BackMatter { readonly resources?: Resource[]; } /** - * 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. + * A resource associated with content in the containing document instance. A resource may be + * directly included in the document using base64 encoding or may point to one or more + * equivalent internet resources. */ export interface Resource { /** - * The Base64 alphabet in RFC 2045 - aligned with XSD. + * A resource encoded using the Base64 alphabet defined by RFC 2045. */ readonly base64?: Base64; /** - * A citation consisting of end note text and optional structured bibliographic data. + * An optional citation consisting of end note text using structured markup. */ readonly citation?: Citation; /** - * A short summary of the resource used to indicate the purpose of the resource. + * An optional short summary of the resource used to indicate the purpose of the resource. */ readonly description?: string; readonly 'document-ids'?: DocumentIdentifier[]; @@ -372,20 +378,18 @@ export interface Resource { readonly remarks?: string; readonly rlinks?: ResourceLink[]; /** - * A name given to the resource, which may be used by a tool for display and navigation. + * An optional name given to the resource, which may be used by a tool for display and + * navigation. */ readonly title?: string; /** - * 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. + * A unique identifier for a resource. */ readonly uuid: string; } /** - * The Base64 alphabet in RFC 2045 - aligned with XSD. + * A resource encoded using the Base64 alphabet defined by RFC 2045. */ export interface Base64 { /** @@ -394,15 +398,14 @@ export interface Base64 { */ readonly filename?: string; /** - * Specifies a media type as defined by the Internet Assigned Numbers Authority (IANA) Media - * Types Registry. + * A label that indicates the nature of a resource, as a data serialization or format. */ readonly 'media-type'?: string; readonly value: string; } /** - * A citation consisting of end note text and optional structured bibliographic data. + * An optional citation consisting of end note text using structured markup. */ export interface Citation { readonly links?: Link[]; @@ -414,11 +417,7 @@ export interface Citation { } /** - * 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. + * A document identifier qualified by an identifier scheme. */ export interface DocumentIdentifier { readonly identifier: string; @@ -430,18 +429,17 @@ export interface DocumentIdentifier { } /** - * A pointer to an external resource with an optional hash for verification and change - * detection. + * A URL-based pointer to an external resource with an optional hash for verification and + * change detection. */ export interface ResourceLink { readonly hashes?: Hash[]; /** - * A resolvable URI reference to a resource. + * A resolvable URL pointing to the referenced resource. */ readonly href: string; /** - * Specifies a media type as defined by the Internet Assigned Numbers Authority (IANA) Media - * Types Registry. + * A label that indicates the nature of a resource, as a data serialization or format. */ readonly 'media-type'?: string; } @@ -452,7 +450,7 @@ export interface ResourceLink { */ export interface Hash { /** - * Method by which a hash is derived + * The digest method by which a hash is derived. */ readonly algorithm: string; readonly value: string; @@ -568,9 +566,9 @@ export interface AssessedControls { * A human-readable description of in-scope controls specified for assessment. */ readonly description?: string; - readonly 'exclude-controls'?: SelectControl[]; + readonly 'exclude-controls'?: ControlSelectionExcludeControl[]; readonly 'include-all'?: IncludeAll; - readonly 'include-controls'?: SelectControl[]; + readonly 'include-controls'?: ControlSelectionExcludeControl[]; readonly links?: Link[]; readonly props?: Property[]; readonly remarks?: string; @@ -582,11 +580,11 @@ export interface AssessedControls { * to only specific control statements providing more granularity over the specific * statements that are within the asessment scope. */ -export interface SelectControl { +export interface ControlSelectionExcludeControl { /** - * 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). + * A 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). */ readonly 'control-id': string; readonly 'statement-ids'?: string[]; @@ -666,9 +664,9 @@ export interface ImplementedComponent { */ export interface AssessmentSpecificControlObjective { /** - * 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). + * A 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). */ readonly 'control-id': string; /** @@ -682,32 +680,28 @@ export interface AssessmentSpecificControlObjective { } /** - * A partition of a control's definition or a child of another part. + * An annotated, markup-based textual element of a control's or catalog group's definition, + * or a child of another part. */ export interface Part { /** - * 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. + * An optional textual providing a sub-type or characterization of the part's name, or a + * category to which the part belongs. */ readonly class?: string; /** - * 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. + * A unique identifier for the part. */ readonly id?: string; readonly links?: Link[]; /** - * A textual label that uniquely identifies the part's semantic type. + * A textual label that uniquely identifies the part's semantic type, which exists in a + * value space qualified by the ns. */ readonly name: string; /** - * A namespace qualifying the part's name. This allows different organizations to associate - * distinct semantics with the same name. + * An optional namespace qualifying the part's name. This allows different organizations to + * associate distinct semantics with the same name. */ readonly ns?: string; readonly parts?: Part[]; @@ -717,7 +711,8 @@ export interface Part { */ readonly prose?: string; /** - * A name given to the part, which may be used by a tool for display and navigation. + * An optional name given to the part, which may be used by a tool for display and + * navigation. */ readonly title?: string; } @@ -771,15 +766,17 @@ export interface Privilege { } /** - * Provides information about the publication and availability of the containing document. + * Provides information about the containing document, and defines concepts that are shared + * across the document. */ -export interface PublicationMetadata { +export interface DocumentMetadata { + readonly actions?: Action[]; readonly 'document-ids'?: DocumentIdentifier[]; readonly 'last-modified': Date; readonly links?: Link[]; readonly locations?: Location[]; readonly 'oscal-version': string; - readonly parties?: PartyOrganizationOrPerson[]; + readonly parties?: Party[]; readonly props?: Property[]; readonly published?: Date; readonly remarks?: string; @@ -794,10 +791,39 @@ export interface PublicationMetadata { } /** - * A location, with associated metadata that can be referenced. + * An action applied by a role within a given party to the content. + */ +export interface Action { + /** + * The date and time when the action occurred. + */ + readonly date?: Date; + readonly links?: Link[]; + readonly props?: Property[]; + readonly remarks?: string; + readonly 'responsible-parties'?: ResponsibleParty[]; + /** + * Specifies the action type system used. + */ + readonly system: string; + /** + * The type of action documented by the assembly, such as an approval. + */ + readonly type: string; + /** + * A unique identifier that can be used to reference this defined action elsewhere in an + * OSCAL document. A UUID should be consistently used for a given location across revisions + * of the document. + */ + readonly uuid: string; +} + +/** + * A physical point of presence, which may be associated with people, organizations, or + * other concepts within the current or linked OSCAL document. */ export interface Location { - readonly address: Address; + readonly address?: Address; readonly 'email-addresses'?: string[]; readonly links?: Link[]; readonly props?: Property[]; @@ -809,12 +835,7 @@ export interface Location { readonly title?: string; readonly urls?: string[]; /** - * 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. + * A unique ID for the location, for reference. */ readonly uuid: string; } @@ -833,11 +854,11 @@ export interface Address { */ readonly country?: string; /** - * Postal or ZIP code for mailing address + * Postal or ZIP code for mailing address. */ readonly 'postal-code'?: string; /** - * State, province or analogous geographical region for mailing address + * State, province or analogous geographical region for a mailing address. */ readonly state?: string; /** @@ -847,7 +868,7 @@ export interface Address { } /** - * Contact number by telephone. + * A telephone service number as defined by ITU-T E.164. */ export interface TelephoneNumber { readonly number: string; @@ -858,9 +879,10 @@ export interface TelephoneNumber { } /** - * A responsible entity which is either a person or an organization. + * An organization or person, which may be associated with roles or other concepts within + * the current or linked OSCAL document. */ -export interface PartyOrganizationOrPerson { +export interface Party { readonly addresses?: Address[]; readonly 'email-addresses'?: string[]; readonly 'external-ids'?: PartyExternalIdentifier[]; @@ -883,19 +905,14 @@ export interface PartyOrganizationOrPerson { */ readonly type: PartyType; /** - * 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. + * A unique identifier for the party. */ readonly uuid: string; } /** * An identifier for a person or organization using a designated scheme. e.g. an Open - * Researcher and Contributor ID (ORCID) + * Researcher and Contributor ID (ORCID). */ export interface PartyExternalIdentifier { readonly id: string; @@ -911,8 +928,8 @@ export enum PartyType { } /** - * An entry in a sequential list of revisions to the containing document in reverse - * chronological order (i.e., most recent previous revision first). + * An entry in a sequential list of revisions to the containing document, expected to be in + * reverse chronological order (i.e. latest first). */ export interface RevisionHistoryEntry { readonly 'last-modified'?: Date; @@ -930,7 +947,7 @@ export interface RevisionHistoryEntry { } /** - * Defines a function assumed or expected to be assumed by a party in a specific situation. + * Defines a function, which might be assigned to a party in a specific situation. */ export interface Role { /** @@ -938,13 +955,7 @@ export interface Role { */ readonly description?: string; /** - * 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. + * A unique identifier for the role. */ readonly id: string; readonly links?: Link[]; @@ -1150,7 +1161,7 @@ export interface SecurityAssessmentResultsSAR { * the referenced SSP. */ readonly 'local-definitions'?: AssessmentResultsLocalDefinitions; - readonly metadata: PublicationMetadata; + readonly metadata: DocumentMetadata; readonly results: AssessmentResult[]; /** * A machine-oriented, globally unique identifier with cross-instance scope that can be used @@ -1847,24 +1858,23 @@ export interface ThreatID { } /** - * A collection of controls. + * A structured, organized collection of control information. */ export interface Catalog { readonly 'back-matter'?: BackMatter; readonly controls?: Control[]; - readonly groups?: ControlGroup[]; - readonly metadata: PublicationMetadata; + readonly groups?: CatalogGroup[]; + readonly metadata: DocumentMetadata; readonly params?: Parameter[]; /** - * A globally unique identifier with cross-instance scope for this catalog instance. This - * UUID should be changed when this document is revised. + * Provides a globally unique means to identify a given catalog instance. */ readonly uuid: string; } /** - * A structured information object representing a security or privacy control. Each security - * or privacy control within the Catalog is defined by a distinct control instance. + * A structured object representing a requirement or guideline, which when implemented will + * reduce an aspect of risk related to an information system and its information. */ export interface Control { /** @@ -1873,10 +1883,8 @@ export interface Control { readonly class?: string; readonly controls?: Control[]; /** - * A human-oriented, locally unique identifier with instance scope that can be used to - * reference this control elsewhere in this and other OSCAL instances (e.g., profiles). This - * id should be assigned per-subject, which means it should be consistently used to identify - * the same control across revisions of the document. + * Identifies a control such that it can be referenced in the defining catalog and other + * OSCAL instances (e.g., profiles). */ readonly id: string; readonly links?: Link[]; @@ -1894,23 +1902,19 @@ export interface Control { */ export interface Parameter { /** - * A textual label that provides a characterization of the parameter. + * A textual label that provides a characterization of the type, purpose, use or scope of + * the parameter. */ readonly class?: string; readonly constraints?: Constraint[]; /** - * **(deprecated)** Another parameter invoking this one. This construct has been deprecated - * and should not be used. + * (deprecated) Another parameter invoking this one. This construct has been deprecated and + * should not be used. */ readonly 'depends-on'?: string; readonly guidelines?: Guideline[]; /** - * 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. + * A unique identifier for the parameter. */ readonly id: string; /** @@ -1923,14 +1927,14 @@ export interface Parameter { readonly remarks?: string; readonly select?: Selection; /** - * Describes the purpose and use of a parameter + * Describes the purpose and use of a parameter. */ readonly usage?: string; readonly values?: string[]; } /** - * A formal or informal expression of a constraint or test + * A formal or informal expression of a constraint or test. */ export interface Constraint { /** @@ -1945,7 +1949,7 @@ export interface Constraint { */ export interface ConstraintTest { /** - * A formal (executable) expression of a constraint + * A formal (executable) expression of a constraint. */ readonly expression: string; readonly remarks?: string; @@ -1962,7 +1966,7 @@ export interface Guideline { } /** - * Presenting a choice among alternatives + * Presenting a choice among alternatives. */ export interface Selection { readonly choice?: string[]; @@ -1981,18 +1985,16 @@ export enum ParameterCardinality { /** * A group of controls, or of groups of controls. */ -export interface ControlGroup { +export interface CatalogGroup { /** * A textual label that provides a sub-type or characterization of the group. */ readonly class?: string; readonly controls?: Control[]; - readonly groups?: ControlGroup[]; + readonly groups?: CatalogGroup[]; /** - * A human-oriented, locally unique identifier with cross-instance scope that can be used to - * reference this defined group elsewhere in in this and other OSCAL instances (e.g., - * profiles). This id should be assigned per-subject, which means it should be consistently - * used to identify the same group across revisions of the document. + * Identifies the group for the purpose of cross-linking within the defining instance or + * from other instances that reference the catalog. */ readonly id?: string; readonly links?: Link[]; @@ -2013,14 +2015,9 @@ export interface ComponentDefinition { readonly capabilities?: Capability[]; readonly components?: ComponentDefinitionComponent[]; readonly 'import-component-definitions'?: ImportComponentDefinition[]; - readonly metadata: PublicationMetadata; + readonly metadata: DocumentMetadata; /** - * A machine-oriented, globally unique identifier with cross-instance scope that can be used - * to reference this component definition elsewhere in this or other OSCAL instances. The - * locally defined UUID of the component definition can be used to reference the data item - * locally or globally (e.g., in an imported 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. + * Provides a globally unique means to identify a given component definition instance. */ readonly uuid: string; } @@ -2043,12 +2040,7 @@ export interface Capability { readonly props?: Property[]; readonly remarks?: string; /** - * A machine-oriented, globally unique identifier with cross-instance scope that can be used - * to reference this capability elsewhere in this or other OSCAL instances. The locally - * defined UUID of the capability can be used to reference the data item locally or globally - * (e.g., in an imported 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. + * Provides a globally unique means to identify a given capability. */ readonly uuid: string; } @@ -2072,12 +2064,8 @@ export interface ControlImplementationSet { */ readonly source: string; /** - * A machine-oriented, globally unique identifier with cross-instance scope that can be used - * to reference a set of implemented controls elsewhere in this or other OSCAL instances. - * The locally defined UUID of the control implementation set can be used to reference the - * data item locally or globally (e.g., in an imported 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. + * Provides a means to identify a set of control implementations that are supported by a + * given component or capability. */ readonly uuid: string; } @@ -2087,14 +2075,15 @@ export interface ControlImplementationSet { */ export interface ImplementedRequirementElement { /** - * 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). + * A 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). */ readonly 'control-id': string; /** - * A suggestion for how the specified control may be implemented if the containing component - * or capability is instantiated in a system security plan. + * A suggestion from the supplier (e.g., component vendor or author) for how the specified + * control may be implemented if the containing component or capability is instantiated in a + * system security plan. */ readonly description: string; readonly links?: Link[]; @@ -2104,12 +2093,8 @@ export interface ImplementedRequirementElement { readonly 'set-parameters'?: SetParameterValue[]; readonly statements?: ControlStatementImplementation[]; /** - * A machine-oriented, globally unique identifier with cross-instance scope that can be used - * to reference a specific control implementation elsewhere in this or other OSCAL - * instances. The locally defined UUID of the control implementation can be used to - * reference the data item locally or globally (e.g., in an imported 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. + * Provides a globally unique means to identify a given control implementation by a + * component. */ readonly uuid: string; } @@ -2154,7 +2139,7 @@ export interface ControlStatementImplementation { } /** - * TBD + * The collection of components comprising this capability. */ export interface IncorporatesComponent { /** @@ -2194,12 +2179,7 @@ export interface ComponentDefinitionComponent { */ readonly type: string; /** - * A machine-oriented, globally unique identifier with cross-instance scope that can be used - * to reference this component elsewhere in this or other OSCAL instances. The locally - * defined UUID of the component can be used to reference the data item locally or globally - * (e.g., in an imported 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. + * Provides a globally unique means to identify a given component. */ readonly uuid: string; } @@ -2221,9 +2201,10 @@ export interface ImportComponentDefinition { */ export interface PlanOfActionAndMilestonesPOAM { readonly 'back-matter'?: BackMatter; + readonly findings?: Finding[]; readonly 'import-ssp'?: ImportSystemSecurityPlan; readonly 'local-definitions'?: PlanOfActionAndMilestonesLocalDefinitions; - readonly metadata: PublicationMetadata; + readonly metadata: DocumentMetadata; readonly observations?: Observation[]; readonly 'poam-items': POAMItem[]; readonly risks?: IdentifiedRisk[]; @@ -2242,6 +2223,7 @@ export interface PlanOfActionAndMilestonesPOAM { * where no OSCAL-based SSP exists, or is not delivered with the POA&M. */ export interface PlanOfActionAndMilestonesLocalDefinitions { + readonly 'assessment-assets'?: AssessmentAssets; readonly components?: AssessmentAssetsComponent[]; readonly 'inventory-items'?: InventoryItem[]; readonly remarks?: string; @@ -2258,6 +2240,7 @@ export interface POAMItem { readonly links?: Link[]; readonly origins?: PoamItemOrigin[]; readonly props?: Property[]; + readonly 'related-findings'?: RelatedFinding[]; readonly 'related-observations'?: PoamItemRelatedObservation[]; readonly 'related-risks'?: PoamItemRelatedRisk[]; readonly remarks?: string; @@ -2281,6 +2264,16 @@ export interface PoamItemOrigin { readonly actors: OriginatingActor[]; } +/** + * Relates the poam-item to referenced finding(s). + */ +export interface RelatedFinding { + /** + * A machine-oriented identifier reference to a finding defined in the list of findings. + */ + readonly 'finding-uuid': string; +} + /** * Relates the poam-item to a set of referenced observations that were used to determine the * finding. @@ -2320,44 +2313,38 @@ export interface SystemIdentification { } /** - * Each OSCAL profile is defined by a Profile element + * Each OSCAL profile is defined by a profile element. */ export interface Profile { readonly 'back-matter'?: BackMatter; readonly imports: ImportResource[]; readonly merge?: MergeControls; - readonly metadata: PublicationMetadata; + readonly metadata: DocumentMetadata; readonly modify?: ModifyControls; /** - * 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. + * Provides a globally unique means to identify a given profile instance. */ readonly uuid: string; } /** - * 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. + * Designates a referenced source catalog or profile that provides a source of control + * information for use in creating a new overlay or baseline. */ export interface ImportResource { - readonly 'exclude-controls'?: Call[]; + readonly 'exclude-controls'?: ImportExcludeControl[]; /** * A resolvable URL reference to the base catalog or profile that this profile is tailoring. */ readonly href: string; readonly 'include-all'?: IncludeAll; - readonly 'include-controls'?: Call[]; + readonly 'include-controls'?: ImportExcludeControl[]; } /** - * Call a control by its ID + * Select a control or controls from an imported control set. */ -export interface Call { +export interface ImportExcludeControl { readonly matching?: MatchControlsByPattern[]; /** * When a control is included, whether its child (dependent) controls are also included. @@ -2367,7 +2354,7 @@ export interface Call { } /** - * Select controls by (regular expression) match on ID + * Selecting a set of controls by matching their IDs with a wildcard pattern. */ export interface MatchControlsByPattern { /** @@ -2382,37 +2369,37 @@ export enum IncludeContainedControlsWithControl { } /** - * A Merge element provides structuring directives that drive how controls are organized - * after resolution. + * Provides structuring directives that instruct how controls are organized after profile + * resolution. */ export interface MergeControls { /** - * 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. + * Indicates that the controls selected should retain their original grouping as defined in + * the import source. */ readonly 'as-is'?: boolean; /** - * A Combine element defines how to combine multiple (competing) versions of the same - * control. + * A Combine element defines how to resolve duplicate instances of the same control (e.g., + * controls with the same ID). */ readonly combine?: CombinationRule; /** - * A Custom element frames a structure for embedding represented controls in resolution. + * Provides an alternate grouping structure that selected controls will be placed in. */ readonly custom?: CustomGrouping; /** - * Use the flat structuring method. + * Directs that controls appear without any grouping structure. */ - readonly flat?: Flat; + readonly flat?: FlatWithoutGrouping; } /** - * A Combine element defines how to combine multiple (competing) versions of the same - * control. + * A Combine element defines how to resolve duplicate instances of the same control (e.g., + * controls with the same ID). */ export interface CombinationRule { /** - * How clashing controls should be handled + * Declare how clashing controls should be handled. */ readonly method?: CombinationMethod; } @@ -2424,15 +2411,15 @@ export enum CombinationMethod { } /** - * A Custom element frames a structure for embedding represented controls in resolution. + * Provides an alternate grouping structure that selected controls will be placed in. */ export interface CustomGrouping { readonly groups?: CustomGroup[]; - readonly 'insert-controls'?: SelectControls[]; + readonly 'insert-controls'?: InsertControls[]; } /** - * A group of (selected) controls or of groups of controls + * A group of (selected) controls or of groups of controls. */ export interface CustomGroup { /** @@ -2441,21 +2428,16 @@ export interface CustomGroup { readonly class?: string; readonly groups?: CustomGroup[]; /** - * 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. + * Identifies the group. */ readonly id?: string; - readonly 'insert-controls'?: SelectControls[]; + readonly 'insert-controls'?: InsertControls[]; readonly links?: Link[]; readonly params?: Parameter[]; readonly parts?: Part[]; readonly props?: Property[]; /** - * A name given to the group, which may be used by a tool for display and navigation. + * A name to be given to the group for use in display. */ readonly title: string; } @@ -2463,10 +2445,10 @@ export interface CustomGroup { /** * Specifies which controls to use in the containing context. */ -export interface SelectControls { - readonly 'exclude-controls'?: Call[]; +export interface InsertControls { + readonly 'exclude-controls'?: ImportExcludeControl[]; readonly 'include-all'?: IncludeAll; - readonly 'include-controls'?: Call[]; + readonly 'include-controls'?: ImportExcludeControl[]; /** * A designation of how a selection of controls in a profile is to be ordered. */ @@ -2480,13 +2462,13 @@ export enum Order { } /** - * Use the flat structuring method. + * Directs that controls appear without any grouping structure. */ -export interface Flat { +export interface FlatWithoutGrouping { } /** - * Set parameters or amend controls in resolution + * Set parameters or amend controls in resolution. */ export interface ModifyControls { readonly alters?: Alteration[]; @@ -2494,22 +2476,21 @@ export interface ModifyControls { } /** - * An Alter element specifies changes to be made to an included control when a profile is - * resolved. + * Specifies changes to be made to an included control when a profile is resolved. */ export interface Alteration { readonly adds?: Addition[]; /** - * 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). + * A 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). */ readonly 'control-id': string; readonly removes?: Removal[]; } /** - * Specifies contents to be added into controls, in resolution + * Specifies contents to be added into controls, in resolution. */ export interface Addition { /** @@ -2520,7 +2501,8 @@ export interface Addition { readonly params?: Parameter[]; readonly parts?: Part[]; /** - * Where to add the new content with respect to the targeted element (beside it or inside it) + * Where to add the new content with respect to the targeted element (beside it or inside + * it). */ readonly position?: Position; readonly props?: Property[]; @@ -2551,12 +2533,12 @@ export interface Removal { */ readonly 'by-id'?: string; /** - * Identify items to remove by the name of the item's information element name, e.g. title - * or prop + * Identify items to remove by the name of the item's information object name, e.g. title or + * prop. */ - readonly 'by-item-name'?: string; + readonly 'by-item-name'?: ItemNameReference; /** - * Identify items to remove by matching their assigned name + * Identify items remove by matching their assigned name. */ readonly 'by-name'?: string; /** @@ -2566,8 +2548,17 @@ export interface Removal { readonly 'by-ns'?: string; } +export enum ItemNameReference { + LINK = 'link', + MAP = 'map', + MAPPING = 'mapping', + PARAM = 'param', + PART = 'part', + PROP = 'prop', +} + /** - * A parameter setting, to be propagated to points of insertion + * A parameter setting, to be propagated to points of insertion. */ export interface ParameterSetting { /** @@ -2588,31 +2579,26 @@ export interface ParameterSetting { readonly label?: string; readonly links?: Link[]; /** - * 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. + * An identifier for the parameter. */ readonly 'param-id': string; readonly props?: Property[]; readonly select?: Selection; /** - * Describes the purpose and use of a parameter + * Describes the purpose and use of a parameter. */ readonly usage?: string; readonly values?: string[]; } /** - * A system security plan, such as those described in NIST SP 800-18 + * A system security plan, such as those described in NIST SP 800-18. */ export interface SystemSecurityPlanSSP { readonly 'back-matter'?: BackMatter; readonly 'control-implementation': ControlImplementationClass; readonly 'import-profile': ImportProfile; - readonly metadata: PublicationMetadata; + readonly metadata: DocumentMetadata; readonly 'system-characteristics': SystemCharacteristics; readonly 'system-implementation': SystemImplementation; /** @@ -2645,9 +2631,9 @@ export interface ControlImplementationClass { export interface ControlBasedRequirement { readonly 'by-components'?: ComponentControlImplementation[]; /** - * 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). + * A 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). */ readonly 'control-id': string; readonly links?: Link[]; @@ -2885,11 +2871,11 @@ export interface SystemCharacteristics { readonly props?: Property[]; readonly remarks?: string; readonly 'responsible-parties'?: ResponsibleParty[]; - readonly 'security-impact-level': SecurityImpactLevel; + readonly 'security-impact-level'?: SecurityImpactLevel; /** * The overall information system sensitivity categorization, such as defined by FIPS-199. */ - readonly 'security-sensitivity-level': string; + readonly 'security-sensitivity-level'?: string; readonly status: SystemCharacteristicsStatus; readonly 'system-ids': SystemIdentification[]; readonly 'system-information': SystemInformation; @@ -3030,26 +3016,14 @@ export interface SystemInformation { * the system, such as privacy information, and those defined in NIST SP 800-60. */ export interface InformationType { - /** - * The expected level of impact resulting from the disruption of access to or use of the - * described information or the information system. - */ - readonly 'availability-impact': AvailabilityImpactLevel; + readonly 'availability-impact'?: ImpactLevel; readonly categorizations?: InformationTypeCategorization[]; - /** - * The expected level of impact resulting from the unauthorized disclosure of the described - * information. - */ - readonly 'confidentiality-impact': ConfidentialityImpactLevel; + readonly 'confidentiality-impact'?: ImpactLevel; /** * A summary of how this information type is used within the system. */ readonly description: string; - /** - * The expected level of impact resulting from the unauthorized modification of the - * described information. - */ - readonly 'integrity-impact': IntegrityImpactLevel; + readonly 'integrity-impact'?: ImpactLevel; readonly links?: Link[]; readonly props?: Property[]; /** @@ -3069,10 +3043,9 @@ export interface InformationType { } /** - * The expected level of impact resulting from the disruption of access to or use of the - * described information or the information system. + * The expected level of impact resulting from the described information. */ -export interface AvailabilityImpactLevel { +export interface ImpactLevel { readonly 'adjustment-justification'?: string; readonly base: string; readonly links?: Link[]; @@ -3092,30 +3065,6 @@ export interface InformationTypeCategorization { readonly system: string; } -/** - * The expected level of impact resulting from the unauthorized disclosure of the described - * information. - */ -export interface ConfidentialityImpactLevel { - readonly 'adjustment-justification'?: string; - readonly base: string; - readonly links?: Link[]; - readonly props?: Property[]; - readonly selected?: string; -} - -/** - * The expected level of impact resulting from the unauthorized modification of the - * described information. - */ -export interface IntegrityImpactLevel { - readonly 'adjustment-justification'?: string; - readonly base: string; - readonly links?: Link[]; - readonly props?: Property[]; - readonly selected?: string; -} - /** * Provides information as to how the system is implemented. */ @@ -3314,6 +3263,7 @@ function r(name: string) { const typeMap: any = { "Oscal": o([ + { json: "$schema", js: "$schema", typ: u(undefined, "") }, { json: "catalog", js: "catalog", typ: u(undefined, r("Catalog")) }, { json: "profile", js: "profile", typ: u(undefined, r("Profile")) }, { json: "component-definition", js: "component-definition", typ: u(undefined, r("ComponentDefinition")) }, @@ -3328,7 +3278,7 @@ const typeMap: any = { { json: "back-matter", js: "back-matter", typ: u(undefined, r("BackMatter")) }, { json: "import-ssp", js: "import-ssp", typ: r("ImportSystemSecurityPlan") }, { json: "local-definitions", js: "local-definitions", typ: u(undefined, r("AssessmentPlanLocalDefinitions")) }, - { json: "metadata", js: "metadata", typ: r("PublicationMetadata") }, + { json: "metadata", js: "metadata", typ: r("DocumentMetadata") }, { json: "reviewed-controls", js: "reviewed-controls", typ: r("ReviewedControlsAndControlObjectives") }, { json: "tasks", js: "tasks", typ: u(undefined, a(r("Task"))) }, { json: "terms-and-conditions", js: "terms-and-conditions", typ: u(undefined, r("AssessmentPlanTermsAndConditions")) }, @@ -3350,10 +3300,12 @@ const typeMap: any = { { json: "href", js: "href", typ: "" }, { json: "media-type", js: "media-type", typ: u(undefined, "") }, { json: "rel", js: "rel", typ: u(undefined, "") }, + { json: "resource-fragment", js: "resource-fragment", typ: u(undefined, "") }, { json: "text", js: "text", typ: u(undefined, "") }, ], false), "Property": o([ { json: "class", js: "class", typ: u(undefined, "") }, + { json: "group", js: "group", typ: u(undefined, "") }, { json: "name", js: "name", typ: "" }, { json: "ns", js: "ns", typ: u(undefined, "") }, { json: "remarks", js: "remarks", typ: u(undefined, "") }, @@ -3510,14 +3462,14 @@ const typeMap: any = { ], false), "AssessedControls": o([ { json: "description", js: "description", typ: u(undefined, "") }, - { json: "exclude-controls", js: "exclude-controls", typ: u(undefined, a(r("SelectControl"))) }, + { json: "exclude-controls", js: "exclude-controls", typ: u(undefined, a(r("ControlSelectionExcludeControl"))) }, { json: "include-all", js: "include-all", typ: u(undefined, r("IncludeAll")) }, - { json: "include-controls", js: "include-controls", typ: u(undefined, a(r("SelectControl"))) }, + { json: "include-controls", js: "include-controls", typ: u(undefined, a(r("ControlSelectionExcludeControl"))) }, { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, { json: "remarks", js: "remarks", typ: u(undefined, "") }, ], false), - "SelectControl": o([ + "ControlSelectionExcludeControl": o([ { json: "control-id", js: "control-id", typ: "" }, { json: "statement-ids", js: "statement-ids", typ: u(undefined, a("")) }, ], false), @@ -3582,13 +3534,14 @@ const typeMap: any = { { json: "functions-performed", js: "functions-performed", typ: a("") }, { json: "title", js: "title", typ: "" }, ], false), - "PublicationMetadata": o([ + "DocumentMetadata": o([ + { json: "actions", js: "actions", typ: u(undefined, a(r("Action"))) }, { json: "document-ids", js: "document-ids", typ: u(undefined, a(r("DocumentIdentifier"))) }, { json: "last-modified", js: "last-modified", typ: Date }, { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, { json: "locations", js: "locations", typ: u(undefined, a(r("Location"))) }, { json: "oscal-version", js: "oscal-version", typ: "" }, - { json: "parties", js: "parties", typ: u(undefined, a(r("PartyOrganizationOrPerson"))) }, + { json: "parties", js: "parties", typ: u(undefined, a(r("Party"))) }, { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, { json: "published", js: "published", typ: u(undefined, Date) }, { json: "remarks", js: "remarks", typ: u(undefined, "") }, @@ -3598,8 +3551,18 @@ const typeMap: any = { { json: "title", js: "title", typ: "" }, { json: "version", js: "version", typ: "" }, ], false), + "Action": o([ + { json: "date", js: "date", typ: u(undefined, Date) }, + { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, + { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, + { json: "remarks", js: "remarks", typ: u(undefined, "") }, + { json: "responsible-parties", js: "responsible-parties", typ: u(undefined, a(r("ResponsibleParty"))) }, + { json: "system", js: "system", typ: "" }, + { json: "type", js: "type", typ: "" }, + { json: "uuid", js: "uuid", typ: "" }, + ], false), "Location": o([ - { json: "address", js: "address", typ: r("Address") }, + { json: "address", js: "address", typ: u(undefined, r("Address")) }, { json: "email-addresses", js: "email-addresses", typ: u(undefined, a("")) }, { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, @@ -3621,7 +3584,7 @@ const typeMap: any = { { json: "number", js: "number", typ: "" }, { json: "type", js: "type", typ: u(undefined, "") }, ], false), - "PartyOrganizationOrPerson": o([ + "Party": o([ { json: "addresses", js: "addresses", typ: u(undefined, a(r("Address"))) }, { json: "email-addresses", js: "email-addresses", typ: u(undefined, a("")) }, { json: "external-ids", js: "external-ids", typ: u(undefined, a(r("PartyExternalIdentifier"))) }, @@ -3720,7 +3683,7 @@ const typeMap: any = { { json: "back-matter", js: "back-matter", typ: u(undefined, r("BackMatter")) }, { json: "import-ap", js: "import-ap", typ: r("ImportAssessmentPlan") }, { json: "local-definitions", js: "local-definitions", typ: u(undefined, r("AssessmentResultsLocalDefinitions")) }, - { json: "metadata", js: "metadata", typ: r("PublicationMetadata") }, + { json: "metadata", js: "metadata", typ: r("DocumentMetadata") }, { json: "results", js: "results", typ: a(r("AssessmentResult")) }, { json: "uuid", js: "uuid", typ: "" }, ], false), @@ -3967,8 +3930,8 @@ const typeMap: any = { "Catalog": o([ { json: "back-matter", js: "back-matter", typ: u(undefined, r("BackMatter")) }, { json: "controls", js: "controls", typ: u(undefined, a(r("Control"))) }, - { json: "groups", js: "groups", typ: u(undefined, a(r("ControlGroup"))) }, - { json: "metadata", js: "metadata", typ: r("PublicationMetadata") }, + { json: "groups", js: "groups", typ: u(undefined, a(r("CatalogGroup"))) }, + { json: "metadata", js: "metadata", typ: r("DocumentMetadata") }, { json: "params", js: "params", typ: u(undefined, a(r("Parameter"))) }, { json: "uuid", js: "uuid", typ: "" }, ], false), @@ -4011,10 +3974,10 @@ const typeMap: any = { { json: "choice", js: "choice", typ: u(undefined, a("")) }, { json: "how-many", js: "how-many", typ: u(undefined, r("ParameterCardinality")) }, ], false), - "ControlGroup": o([ + "CatalogGroup": o([ { json: "class", js: "class", typ: u(undefined, "") }, { json: "controls", js: "controls", typ: u(undefined, a(r("Control"))) }, - { json: "groups", js: "groups", typ: u(undefined, a(r("ControlGroup"))) }, + { json: "groups", js: "groups", typ: u(undefined, a(r("CatalogGroup"))) }, { json: "id", js: "id", typ: u(undefined, "") }, { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, { json: "params", js: "params", typ: u(undefined, a(r("Parameter"))) }, @@ -4027,7 +3990,7 @@ const typeMap: any = { { json: "capabilities", js: "capabilities", typ: u(undefined, a(r("Capability"))) }, { json: "components", js: "components", typ: u(undefined, a(r("ComponentDefinitionComponent"))) }, { json: "import-component-definitions", js: "import-component-definitions", typ: u(undefined, a(r("ImportComponentDefinition"))) }, - { json: "metadata", js: "metadata", typ: r("PublicationMetadata") }, + { json: "metadata", js: "metadata", typ: r("DocumentMetadata") }, { json: "uuid", js: "uuid", typ: "" }, ], false), "Capability": o([ @@ -4096,9 +4059,10 @@ const typeMap: any = { ], false), "PlanOfActionAndMilestonesPOAM": o([ { json: "back-matter", js: "back-matter", typ: u(undefined, r("BackMatter")) }, + { json: "findings", js: "findings", typ: u(undefined, a(r("Finding"))) }, { json: "import-ssp", js: "import-ssp", typ: u(undefined, r("ImportSystemSecurityPlan")) }, { json: "local-definitions", js: "local-definitions", typ: u(undefined, r("PlanOfActionAndMilestonesLocalDefinitions")) }, - { json: "metadata", js: "metadata", typ: r("PublicationMetadata") }, + { json: "metadata", js: "metadata", typ: r("DocumentMetadata") }, { json: "observations", js: "observations", typ: u(undefined, a(r("Observation"))) }, { json: "poam-items", js: "poam-items", typ: a(r("POAMItem")) }, { json: "risks", js: "risks", typ: u(undefined, a(r("IdentifiedRisk"))) }, @@ -4106,6 +4070,7 @@ const typeMap: any = { { json: "uuid", js: "uuid", typ: "" }, ], false), "PlanOfActionAndMilestonesLocalDefinitions": o([ + { json: "assessment-assets", js: "assessment-assets", typ: u(undefined, r("AssessmentAssets")) }, { json: "components", js: "components", typ: u(undefined, a(r("AssessmentAssetsComponent"))) }, { json: "inventory-items", js: "inventory-items", typ: u(undefined, a(r("InventoryItem"))) }, { json: "remarks", js: "remarks", typ: u(undefined, "") }, @@ -4115,6 +4080,7 @@ const typeMap: any = { { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, { json: "origins", js: "origins", typ: u(undefined, a(r("PoamItemOrigin"))) }, { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, + { json: "related-findings", js: "related-findings", typ: u(undefined, a(r("RelatedFinding"))) }, { json: "related-observations", js: "related-observations", typ: u(undefined, a(r("PoamItemRelatedObservation"))) }, { json: "related-risks", js: "related-risks", typ: u(undefined, a(r("PoamItemRelatedRisk"))) }, { json: "remarks", js: "remarks", typ: u(undefined, "") }, @@ -4124,6 +4090,9 @@ const typeMap: any = { "PoamItemOrigin": o([ { json: "actors", js: "actors", typ: a(r("OriginatingActor")) }, ], false), + "RelatedFinding": o([ + { json: "finding-uuid", js: "finding-uuid", typ: "" }, + ], false), "PoamItemRelatedObservation": o([ { json: "observation-uuid", js: "observation-uuid", typ: "" }, ], false), @@ -4138,17 +4107,17 @@ const typeMap: any = { { json: "back-matter", js: "back-matter", typ: u(undefined, r("BackMatter")) }, { json: "imports", js: "imports", typ: a(r("ImportResource")) }, { json: "merge", js: "merge", typ: u(undefined, r("MergeControls")) }, - { json: "metadata", js: "metadata", typ: r("PublicationMetadata") }, + { json: "metadata", js: "metadata", typ: r("DocumentMetadata") }, { json: "modify", js: "modify", typ: u(undefined, r("ModifyControls")) }, { json: "uuid", js: "uuid", typ: "" }, ], false), "ImportResource": o([ - { json: "exclude-controls", js: "exclude-controls", typ: u(undefined, a(r("Call"))) }, + { json: "exclude-controls", js: "exclude-controls", typ: u(undefined, a(r("ImportExcludeControl"))) }, { json: "href", js: "href", typ: "" }, { json: "include-all", js: "include-all", typ: u(undefined, r("IncludeAll")) }, - { json: "include-controls", js: "include-controls", typ: u(undefined, a(r("Call"))) }, + { json: "include-controls", js: "include-controls", typ: u(undefined, a(r("ImportExcludeControl"))) }, ], false), - "Call": o([ + "ImportExcludeControl": o([ { json: "matching", js: "matching", typ: u(undefined, a(r("MatchControlsByPattern"))) }, { json: "with-child-controls", js: "with-child-controls", typ: u(undefined, r("IncludeContainedControlsWithControl")) }, { json: "with-ids", js: "with-ids", typ: u(undefined, a("")) }, @@ -4160,33 +4129,33 @@ const typeMap: any = { { json: "as-is", js: "as-is", typ: u(undefined, true) }, { json: "combine", js: "combine", typ: u(undefined, r("CombinationRule")) }, { json: "custom", js: "custom", typ: u(undefined, r("CustomGrouping")) }, - { json: "flat", js: "flat", typ: u(undefined, r("Flat")) }, + { json: "flat", js: "flat", typ: u(undefined, r("FlatWithoutGrouping")) }, ], false), "CombinationRule": o([ { json: "method", js: "method", typ: u(undefined, r("CombinationMethod")) }, ], false), "CustomGrouping": o([ { json: "groups", js: "groups", typ: u(undefined, a(r("CustomGroup"))) }, - { json: "insert-controls", js: "insert-controls", typ: u(undefined, a(r("SelectControls"))) }, + { json: "insert-controls", js: "insert-controls", typ: u(undefined, a(r("InsertControls"))) }, ], false), "CustomGroup": o([ { json: "class", js: "class", typ: u(undefined, "") }, { json: "groups", js: "groups", typ: u(undefined, a(r("CustomGroup"))) }, { json: "id", js: "id", typ: u(undefined, "") }, - { json: "insert-controls", js: "insert-controls", typ: u(undefined, a(r("SelectControls"))) }, + { json: "insert-controls", js: "insert-controls", typ: u(undefined, a(r("InsertControls"))) }, { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, { json: "params", js: "params", typ: u(undefined, a(r("Parameter"))) }, { json: "parts", js: "parts", typ: u(undefined, a(r("Part"))) }, { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, { json: "title", js: "title", typ: "" }, ], false), - "SelectControls": o([ - { json: "exclude-controls", js: "exclude-controls", typ: u(undefined, a(r("Call"))) }, + "InsertControls": o([ + { json: "exclude-controls", js: "exclude-controls", typ: u(undefined, a(r("ImportExcludeControl"))) }, { json: "include-all", js: "include-all", typ: u(undefined, r("IncludeAll")) }, - { json: "include-controls", js: "include-controls", typ: u(undefined, a(r("Call"))) }, + { json: "include-controls", js: "include-controls", typ: u(undefined, a(r("ImportExcludeControl"))) }, { json: "order", js: "order", typ: u(undefined, r("Order")) }, ], false), - "Flat": o([ + "FlatWithoutGrouping": o([ ], false), "ModifyControls": o([ { json: "alters", js: "alters", typ: u(undefined, a(r("Alteration"))) }, @@ -4209,7 +4178,7 @@ const typeMap: any = { "Removal": o([ { json: "by-class", js: "by-class", typ: u(undefined, "") }, { json: "by-id", js: "by-id", typ: u(undefined, "") }, - { json: "by-item-name", js: "by-item-name", typ: u(undefined, "") }, + { json: "by-item-name", js: "by-item-name", typ: u(undefined, r("ItemNameReference")) }, { json: "by-name", js: "by-name", typ: u(undefined, "") }, { json: "by-ns", js: "by-ns", typ: u(undefined, "") }, ], false), @@ -4230,7 +4199,7 @@ const typeMap: any = { { json: "back-matter", js: "back-matter", typ: u(undefined, r("BackMatter")) }, { json: "control-implementation", js: "control-implementation", typ: r("ControlImplementationClass") }, { json: "import-profile", js: "import-profile", typ: r("ImportProfile") }, - { json: "metadata", js: "metadata", typ: r("PublicationMetadata") }, + { json: "metadata", js: "metadata", typ: r("DocumentMetadata") }, { json: "system-characteristics", js: "system-characteristics", typ: r("SystemCharacteristics") }, { json: "system-implementation", js: "system-implementation", typ: r("SystemImplementation") }, { json: "uuid", js: "uuid", typ: "" }, @@ -4330,8 +4299,8 @@ const typeMap: any = { { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, { json: "remarks", js: "remarks", typ: u(undefined, "") }, { json: "responsible-parties", js: "responsible-parties", typ: u(undefined, a(r("ResponsibleParty"))) }, - { json: "security-impact-level", js: "security-impact-level", typ: r("SecurityImpactLevel") }, - { json: "security-sensitivity-level", js: "security-sensitivity-level", typ: "" }, + { json: "security-impact-level", js: "security-impact-level", typ: u(undefined, r("SecurityImpactLevel")) }, + { json: "security-sensitivity-level", js: "security-sensitivity-level", typ: u(undefined, "") }, { json: "status", js: "status", typ: r("SystemCharacteristicsStatus") }, { json: "system-ids", js: "system-ids", typ: a(r("SystemIdentification")) }, { json: "system-information", js: "system-information", typ: r("SystemInformation") }, @@ -4382,17 +4351,17 @@ const typeMap: any = { { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, ], false), "InformationType": o([ - { json: "availability-impact", js: "availability-impact", typ: r("AvailabilityImpactLevel") }, + { json: "availability-impact", js: "availability-impact", typ: u(undefined, r("ImpactLevel")) }, { json: "categorizations", js: "categorizations", typ: u(undefined, a(r("InformationTypeCategorization"))) }, - { json: "confidentiality-impact", js: "confidentiality-impact", typ: r("ConfidentialityImpactLevel") }, + { json: "confidentiality-impact", js: "confidentiality-impact", typ: u(undefined, r("ImpactLevel")) }, { json: "description", js: "description", typ: "" }, - { json: "integrity-impact", js: "integrity-impact", typ: r("IntegrityImpactLevel") }, + { json: "integrity-impact", js: "integrity-impact", typ: u(undefined, r("ImpactLevel")) }, { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, { json: "title", js: "title", typ: "" }, { json: "uuid", js: "uuid", typ: u(undefined, "") }, ], false), - "AvailabilityImpactLevel": o([ + "ImpactLevel": o([ { json: "adjustment-justification", js: "adjustment-justification", typ: u(undefined, "") }, { json: "base", js: "base", typ: "" }, { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, @@ -4403,20 +4372,6 @@ const typeMap: any = { { json: "information-type-ids", js: "information-type-ids", typ: u(undefined, a("")) }, { json: "system", js: "system", typ: "" }, ], false), - "ConfidentialityImpactLevel": o([ - { json: "adjustment-justification", js: "adjustment-justification", typ: u(undefined, "") }, - { json: "base", js: "base", typ: "" }, - { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, - { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, - { json: "selected", js: "selected", typ: u(undefined, "") }, - ], false), - "IntegrityImpactLevel": o([ - { json: "adjustment-justification", js: "adjustment-justification", typ: u(undefined, "") }, - { json: "base", js: "base", typ: "" }, - { json: "links", js: "links", typ: u(undefined, a(r("Link"))) }, - { json: "props", js: "props", typ: u(undefined, a(r("Property"))) }, - { json: "selected", js: "selected", typ: u(undefined, "") }, - ], false), "SystemImplementation": o([ { json: "components", js: "components", typ: a(r("AssessmentAssetsComponent")) }, { json: "inventory-items", js: "inventory-items", typ: u(undefined, a(r("InventoryItem"))) }, @@ -4494,6 +4449,14 @@ const typeMap: any = { "ending", "starting", ], + "ItemNameReference": [ + "link", + "map", + "mapping", + "param", + "part", + "prop", + ], "FluffyState": [ "disposition", "operational",