001package gov.nist.secauto.oscal.lib.model;
002
003import gov.nist.secauto.metaschema.binding.IBindingContext;
004import gov.nist.secauto.metaschema.binding.model.AbstractBoundMetaschema;
005import gov.nist.secauto.metaschema.binding.model.annotations.Metaschema;
006import gov.nist.secauto.metaschema.model.common.IMetaschema;
007import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupLine;
008import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline;
009import java.lang.Override;
010import java.lang.String;
011import java.net.URI;
012import java.util.List;
013
014@Metaschema(
015    assemblies = {
016        SystemSecurityPlan.class,
017        ImportProfile.class,
018        SystemCharacteristics.class,
019        SystemInformation.class,
020        Impact.class,
021        SecurityImpactLevel.class,
022        Status.class,
023        AuthorizationBoundary.class,
024        Diagram.class,
025        NetworkArchitecture.class,
026        DataFlow.class,
027        SystemImplementation.class,
028        ControlImplementation.class,
029        ImplementedRequirement.class,
030        Statement.class,
031        ByComponent.class
032    },
033    imports = {
034        OscalMetadataMetaschema.class,
035        OscalImplementationCommonMetaschema.class
036    },
037    remarks = "The OSCAL Control SSP format can be used to describe the information typically specified in a system security plan, such as those defined in NIST SP 800-18.\n"
038            + "\n"
039            + "The root of the OSCAL System Security Plan (SSP) format is `system-security-plan`."
040)
041public final class OscalSspMetaschema extends AbstractBoundMetaschema {
042  private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL System Security Plan (SSP) Model");
043
044  private static final String SHORT_NAME = "oscal-ssp";
045
046  private static final String VERSION = "1.1.2";
047
048  private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0");
049
050  private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal");
051
052  private static final MarkupMultiline REMARKS = MarkupMultiline.fromMarkdown("The OSCAL Control SSP format can be used to describe the information typically specified in a system security plan, such as those defined in NIST SP 800-18.\n"
053      + "\n"
054      + "The root of the OSCAL System Security Plan (SSP) format is `system-security-plan`.");
055
056  public OscalSspMetaschema(List<? extends IMetaschema> importedMetaschema,
057      IBindingContext bindingContext) {
058    super(importedMetaschema, bindingContext);
059  }
060
061  @Override
062  public MarkupLine getName() {
063    return NAME;
064  }
065
066  @Override
067  public String getShortName() {
068    return SHORT_NAME;
069  }
070
071  @Override
072  public String getVersion() {
073    return VERSION;
074  }
075
076  @Override
077  public URI getXmlNamespace() {
078    return XML_NAMESPACE;
079  }
080
081  @Override
082  public URI getJsonBaseUri() {
083    return JSON_BASE_URI;
084  }
085
086  @Override
087  public MarkupMultiline getRemarks() {
088    return REMARKS;
089  }
090}