Required Fields

Required Fields is a Schema Constraint that checks if a field is required, and confirms that required fields are defined.

Usage Example

  fields:
    - name: name
      type: string
      description: |
        The name of the type.
      is_required: true
    - name: package
      type: string
      description: |
        The 'dot notation' package name for the type.  All type names must be unique within an assigned type.
        The package will also define the directory structure produced by gen-plugin.
      is_required: true
    - name: description
      type: string
      description: |
        A brief description of the type.
      is_required: true

In the above example, the fields name, package, and description are required. If any of these fields are not defined in a definition, it will fail the Required Fields constraint.

NOTE: This constraint does not check for required fields of parent definitions.

schema:
  name: AacType
  package: aac.lang
  modifiers:
    - abstract
  description: |
    The base type for any data item defined in AaC.
  fields:
    - name: name
      type: string
      description: |
        The name of the type.
      is_required: true
    - name: package
      type: string
      description: |
        The 'dot notation' package name for the type.  All type names must be unique within an assigned type.
        The package will also define the directory structure produced by gen-plugin.
      is_required: true
    - name: description
      type: string
      description: |
        A brief description of the type.
      is_required: true
schema:
  name: Schema
  extends:
    - package: aac.lang
      name: AacType
  package: aac.lang
  root: schema
  description: |
    A definition that defines the schema/structure of data.
  fields:
    - name: extends
      type: SchemaExtension[]
      description: |
        A list of Schema definition names that this definition inherits from.
    - name: modifiers
      type: dataref(modifier.name)[]
      description:
        A means of further defining the schema and how it can be used within the model.
    - name: root
      type: string
      description: |
        The root key to use when declaring an instance of the type in yaml/aac files.
    - name: fields
      type: Field[]
      description: |
        A list of fields that make up the definition.
      is_required: true
    - name: requirements
      type: dataref(req.id)[]
      description: |
        A list of requirements associated with this schema.
    - name: constraints
      type: SchemaConstraintAssignment[]

In the above example, Schema is an extension of AaCType. So while a Schema definition can use the name, description, and package fields from AaCType, the is_required field does not carry over. If you want an extension’s field to be required, you will have to redefine the field.