openapi: 3.0.1
info:
  title: Questionnaires API
  description: >-
    Provides access to the questionnaires that is part of a Hyperproof
    organization.
  version: '1.0'
servers:
  - url: https://api.hyperproof.app/v1/questionnaires
    description: Hyperproof US
  - url: https://api.hyperproofgov.app/v1/questionnaires
    description: Hyperproof Gov
  - url: https://api.hyperproof.eu/v1/questionnaires
    description: Hyperproof EU
security:
  - oauth2: []
paths:
  /:
    get:
      summary: Get Questionnaires
      description: >
        `GET /`


        #### Description


        Retrieves all questionnaires within an organization, including their
        titles, versions, and associated metadata.
      operationId: get-questionnaires
      parameters:
        - name: status
          in: query
          description: Filters results by the provided object status
          schema:
            type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionnaireCollection'
              example:
                - id: d88d505d-5199-11ee-a644-522476618ae8
                  orgId: ce83e3cd-5199-11ee-a644-522476618ae8
                  name: Vendor Questionnaire
                  calculateRisk: true
                  version: 0
                  accessType: invitation
                  targetObjectType: vendor
                  targetObjectId: ''
                  status: active
                  createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  createdOn: '2023-09-12T18:26:10.0053650+00:00'
                  updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  updatedOn: '2023-09-12T18:26:10.0053650+00:00'
                  permissions: []
  /{questionnaireId}/send:
    put:
      summary: Send Questionnaire
      description: >
        `PUT /{questionnaireId}/send`


        #### Description


        Sends a questionnaire to a specified recipient or set of recipients,
        initiating the response process and tracking delivery status.
      operationId: send-questionnaire
      parameters:
        - name: questionnaireId
          in: path
          description: Unique ID of the questionnaire to send
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuestionnaireInvitationRequest'
            example:
              invitedToId: 42310868-81f9-48c3-b68a-6582495c36b7
              objectInfo:
                - objectId: 859c5f4f-734d-4c7f-9673-efa7f30e4da8
                  ownerId: 75c7a61b-0366-48d4-843a-e9ff69292793
                  respondentType: owner
              objectType: vendor
              version: 0
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionnaireInvitationCollection'
              example:
                - id: 5ba459d0-c69a-4ba3-b5d7-572c56838bfe
                  orgId: 5bf47cef-6a4f-4ed1-aa8a-9a9cf6e2b831
                  invitationId: 8a0c64fa-1bff-4741-a332-dc7458f7144a
                  questionnaireId: d297b753-05da-46bb-8558-15177350d244
                  questionaireStatus: sent
                  invitationUserType: owner
                  version: 0
                  latestResponseVersion: 0
                  recipients:
                    - email: john.doe@hyperproof.io
                    - name: John Doe
                  vendorName: Acme
                  status: active
                  createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  createdOn: '2023-09-12T18:26:10.0053650+00:00'
                  updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  updatedOn: '2023-09-12T18:26:10.0053650+00:00'
                  permissions: []
  /invitations/filter:
    put:
      summary: Get Questionnaire Invites Filtered
      description: >
        `PUT /invitations/filter`


        #### Description


        Retrieves a list of questionnaire invitations that match the specified
        filter criteria, such as status, recipient, or questionnaire type.
      operationId: get-questionnaireinvitations-filtered
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuestionnaireInvitationFilter'
            example:
              questionnaireIds:
                - a3f96b88-51a8-4db0-9403-a40b8b6d92e4
                - cf09a1f6-3bcc-4e71-9c56-11bb83bf57d6
              status: active
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionnaireInvitationCollection'
              example:
                - id: 5ba459d0-c69a-4ba3-b5d7-572c56838bfe
                  orgId: 5bf47cef-6a4f-4ed1-aa8a-9a9cf6e2b831
                  invitationId: 8a0c64fa-1bff-4741-a332-dc7458f7144a
                  questionnaireId: d297b753-05da-46bb-8558-15177350d244
                  questionaireStatus: sent
                  invitationUserType: owner
                  version: 0
                  latestResponseVersion: 0
                  recipients:
                    - email: john.doe@hyperproof.io
                    - name: John Doe
                  vendorName: Acme
                  status: active
                  createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  createdOn: '2023-09-12T18:26:10.0053650+00:00'
                  updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                  updatedOn: '2023-09-12T18:26:10.0053650+00:00'
                  permissions: []
  /{questionnaireId}/invitations/{invitationId}/remind:
    put:
      summary: Send Questionnaire Reminder
      description: >
        `PUT /{questionnaireId}/invitations/{invitationId}/remind`


        #### Description


        Sends a reminder notification for a specified questionnaire to prompt
        recipients to complete their responses.
      operationId: send-questionnaire-reminder
      parameters:
        - name: questionnaireId
          in: path
          description: Unique ID of the questionnaire
          required: true
          schema:
            type: string
        - name: invitationId
          in: path
          description: Unique ID of the invitation
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionnaireInvitation'
              example:
                id: 5ba459d0-c69a-4ba3-b5d7-572c56838bfe
                orgId: 5bf47cef-6a4f-4ed1-aa8a-9a9cf6e2b831
                invitationId: 8a0c64fa-1bff-4741-a332-dc7458f7144a
                questionnaireId: d297b753-05da-46bb-8558-15177350d244
                questionaireStatus: sent
                invitationUserType: owner
                version: 0
                latestResponseVersion: 0
                recipients:
                  - email: john.doe@hyperproof.io
                  - name: John Doe
                vendorName: Acme
                status: active
                createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                createdOn: '2023-09-12T18:26:10.0053650+00:00'
                updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                updatedOn: '2023-09-12T18:26:10.0053650+00:00'
                permissions: []
  /{questionnaireId}:
    get:
      summary: Get Questionnaire
      description: >
        `GET /{questionnaireId}`


        #### Description


        Retrieves details of a specific questionnaire in an organization by its
        ID, including its title, version, and associated metadata.
      operationId: get-questionnaire
      parameters:
        - name: questionnaireId
          in: path
          description: Unique ID of the questionnaire to retrieve.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Questionnaire'
              example:
                id: d88d505d-5199-11ee-a644-522476618ae8
                orgId: ce83e3cd-5199-11ee-a644-522476618ae8
                name: Vendor Questionnaire
                calculateRisk: true
                version: 0
                accessType: invitation
                targetObjectType: vendor
                targetObjectId: ''
                status: active
                createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                createdOn: '2023-09-12T18:26:10.0053650+00:00'
                updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
                updatedOn: '2023-09-12T18:26:10.0053650+00:00'
                permissions: []
  /{questionnaireId}/questions:
    get:
      summary: Get Questionnaire Questions
      description: >
        `GET /{questionnaireId}/questions`


        #### Description


        Retrieves all questions from the latest version of a specified
        questionnaire, including their text, type, and configuration details.
      operationId: get-questionnaire-questions
      parameters:
        - name: questionnaireId
          in: path
          description: Unique ID of the questionnaire
          required: true
          schema:
            type: string
        - name: version
          in: query
          description: The version of the questionnaire to retrieve questions from
          schema:
            type: integer
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionCollection'
              example:
                - id: 0f5912e8-760e-11ef-8ae2-92105719a406
                  orgId: 1dbe4d61-d8b2-11e9-9131-83d3f7zez54a
                  questionnaireId: 0f580176-760e-11ef-8ae2-9210571za406
                  questionnaireVersionId: 0f5876a7-760e-11ef-8ae2-9210z719a406
                  questionnaireVersion: 0
                  sectionName: Vendors
                  type: textMultiSelect
                  identifier: Vendor Verification
                  content: Is this vendor verified?
                  isRequired: false,
                  weight: 0
                  ordering: 0
                  isProofRequired: false,
                  sectionIdentifierKey: vendor-verified
                  questionOrder: 0
                  options:
                    - Verified
                    - Unverified
                  scores:
                    - 1
                    - 0
                  status: active
                  createdBy: af5b547d-1f47-11ec-8eae-868cca974f0b
                  updatedBy: af5b547d-1f47-11ec-8eae-868cca974f0b
                  createdOn: '2024-09-18T22:33:43.0893590+00:00'
                  updatedOn: '2024-09-18T22:33:43.0893590+00:00'
components:
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://accounts.hyperproof.app/oauth/token
          scopes:
            questionnaire.read: Grants read access to questionnaires
            questionnaire.update: Grants update access to questionnaires
  schemas:
    QuestionCollection:
      type: array
      description: Collection of questions
      items:
        $ref: '#/components/schemas/Question'
    QuestionnaireRespondentType:
      type: string
      description: The type of respondent for the questionnaire invitation.
      enum:
        - owner
        - contact
        - ownerAndContact
    QuestionnaireInvitationUserType:
      type: string
      description: >-
        The type of user the questionnaire was sent to (i.e. Owner or External
        Contact).
      enum:
        - owner
        - externalObjectContact
    QuestionnaireStatus:
      type: string
      description: The completion status of the questionnaire.
      enum:
        - sent
        - inProgress
        - completed
        - unlocked
        - closed
    QuestionnaireInvitationObjectInfo:
      type: object
      properties:
        objectId:
          type: string
          format: uuid
          description: >-
            The unique identifier of the object to send the questionnaire to,
            e.g. vendor id.
        ownerId:
          type: string
          format: uuid
          description: >-
            The unique identifier of the owner of the object when respondentType
            is owner or ownerAndContact.
        contactIds:
          type: array
          items:
            type: string
            format: uuid
          description: >-
            The unique identifiers of the contacts to send the questionnaire to
            when respondentType is contact or ownerAndContact.
        respondentType:
          $ref: '#/components/schemas/QuestionnaireRespondentType'
          description: Type of respondent to send the questionnaire to.
      required:
        - objectId
        - ownerId
        - respondentType
      example:
        objectId: 859c5f4f-734d-4c7f-9673-efa7f30e4da8
        ownerId: 75c7a61b-0366-48d4-843a-e9ff69292793
        contactIds:
          - f5a7ad1b-0366-48dc-842a-e9ff6zb92a45
        respondentType: owner
    ObjectStatus:
      type: string
      description: The status of the object
      enum:
        - active
        - archived
    ObjectType:
      type: string
      description: The type of the object.
      enum:
        - audit
        - connection
        - control
        - controlScope
        - domain
        - freshnessHistory
        - exportFile
        - label
        - organization
        - organizationUser
        - policy
        - program
        - proof
        - request
        - requirement
        - risk
        - riskRegister
        - section
        - task
        - scope
        - template
        - user
    Question:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the question.
        orgId:
          type: string
          description: The unique identifier for the organization.
        options:
          type: string
          description: >-
            The list of options if the question is of type single select or
            multi-select.
        scores:
          type: string
          description: >-
            The list of scores relative to the list of options. Relevant for the
            overall scoring of the questionnaire.
        questionnaireId:
          type: string
          description: The unique identifier for the questionnaire the question belongs to.
        questionnaireVersionId:
          type: string
          description: >-
            The unique identifier for the questionnaire version the question
            belongs to.
        questionnaireVersion:
          type: integer
          description: >-
            The version number for the questionnaire version the question
            belongs to.
        sectionName:
          type: string
          description: >-
            The name of the section in the questionnaire the question belongs
            to.
        questionType:
          $ref: '#/components/schemas/QuestionType'
        identifier:
          type: string
          description: >-
            Represents a question number or other identifier. This value is
            unique within a questionnaire section.
        content:
          type: string
          description: The content of the question (i.e. what is being asked).
        isRequired:
          type: boolean
          description: Whether the question is required to be answered.
        weight:
          type: integer
          description: >-
            The weight of the question to relate the level of importance of a
            question in impacting the overall score of the questionnaire.
        ordering:
          type: integer
          description: The ordering of the question within the questionnaire.
        isProofRequired:
          type: boolean
          description: Whether the question requires an attachment.
        isSystemProtected:
          type: boolean
          description: >-
            Indicates whether this question is managed by Hyperproof. This is
            typically only true for questionnaires that come pre-packaged by the
            system and related to questions needed to generate core object
            properties
          readOnly: true
        objectPropertyMappingKey:
          description: Specifies which object and property this question's response maps to
          readOnly: true
          $ref: '#/components/schemas/ObjectPropertyMapping'
        conditions:
          type: array
          description: The list of conditions used for displaying conditional questions.
          items:
            $ref: '#/components/schemas/QuestionConditionCollection'
        status:
          $ref: '#/components/schemas/ObjectStatus'
        createdBy:
          type: string
          description: The unique identifier of the user who created the question.
        createdOn:
          type: string
          description: The date the question was created (ISO-8601 format).
        updatedBy:
          type: string
          description: The unique identifier of the user who last updated the question.
        updatedOn:
          type: string
          description: The date the question was updated (ISO-8601 format).
        permissions:
          type: array
          description: List of permissions the API user has on the question.
          items:
            type: string
      example:
        id: 0f5912e8-760e-11ef-8ae2-92105719a406
        orgId: 1dbe4d61-d8b2-11e9-9131-83d3f7zez54a
        questionnaireId: 0f580176-760e-11ef-8ae2-9210571za406
        questionnaireVersionId: 0f5876a7-760e-11ef-8ae2-9210z719a406
        questionnaireVersion: 0
        sectionName: Vendors
        type: textMultiSelect
        identifier: Vendor Verification
        content: Is this vendor verified?
        isRequired: false,
        weight: 0
        ordering: 0
        isProofRequired: false
        isSystemProtected: false
        sectionIdentifierKey: vendor-verified
        questionOrder: 0
        options:
          - Verified
          - Unverified
        scores:
          - 1
          - 0
        status: active
        createdBy: af5b547d-1f47-11ec-8eae-868cca974f0b
        updatedBy: af5b547d-1f47-11ec-8eae-868cca974f0b
        createdOn: '2024-09-18T22:33:43.089359Z'
        updatedOn: '2024-09-18T22:33:43.089359Z'
    Questionnaire:
      type: object
      properties:
        id:
          type: string
          description: The unique identifier for the questionnaire
        name:
          type: string
          description: The name of the questionnaire
        version:
          type: integer
          description: The version of the questionnaire
        calculateRisk:
          type: boolean
          description: Whether to calculate risk for this questionnaire
        accessType:
          type: string
          description: The method in which the questionnaire is accessed by the recipient
          enum:
            - invitation
            - sharedLink
        targetObjectType:
          type: string
          description: The type of object the questionnaire is associated with
          enum:
            - vendor
            - riskRegister
            - assessment
        targetObjectId:
          type: string
          format: uuid
          description: >-
            Optional unique identifier of an object the questionnaire is
            directly associated too
        createdObjectType:
          type: string
          description: >-
            The type of object created when a questionnaire is submitted (i.e.
            risk intake survey)
          enum:
            - risk
        status:
          $ref: '#/components/schemas/ObjectStatus'
        createdBy:
          type: string
          description: The unique identifier of the user who created the questionnaire
        createdOn:
          type: string
          description: The date the questionnaire was created (ISO-8601 format)
        updatedBy:
          type: string
          description: The unique identifier of the user who last updated the questionnaire
        updatedOn:
          type: string
          description: The date the questionnaire was updated (ISO-8601 format)
        permissions:
          type: array
          description: List of permissions the API user has on the questionnaire
          items:
            type: string
      example:
        id: d88d505d-5199-11ee-a644-522476618ae8
        orgId: ce83e3cd-5199-11ee-a644-522476618ae8
        name: Vendor Questionnaire
        calculateRisk: true
        version: 0
        accessType: invitation
        targetObjectType: vendor
        targetObjectId: ''
        status: active
        createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        createdOn: '2023-09-12T18:26:10.005365Z'
        updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        updatedOn: '2023-09-12T18:26:10.005365Z'
        permissions: []
    QuestionnaireCollection:
      type: array
      description: Collection of questionnaires
      items:
        $ref: '#/components/schemas/Questionnaire'
    QuestionCondition:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: The unique identifier for the question condition.
        orgId:
          type: string
          format: uuid
          description: The unique identifier for the organization.
        gatingQuestionId:
          type: string
          format: uuid
          description: >-
            The unique identifier for the question that is gating the
            conditional question.
        conditionalQuestionId:
          type: string
          format: uuid
          description: The unique identifier for the question that is being gated.
        trigger:
          type: string
          description: The question option the condition is triggered on.
        status:
          $ref: '#/components/schemas/ObjectStatus'
        createdBy:
          type: string
          format: uuid
          description: >-
            The unique identifier of the user who created the question
            condition.
        createdOn:
          type: string
          format: date-time
          description: The date the question was created (ISO-8601 format).
        updatedBy:
          type: string
          format: uuid
          description: >-
            The unique identifier of the user who last updated the question
            condition.
        updatedOn:
          type: string
          format: date-time
          description: The date the question condition was updated (ISO-8601 format).
        permissions:
          type: array
          description: List of permissions the API user has on the question.
          items:
            type: string
      example:
        id: d88d505d-5199-11ee-a644-522476618ae8
        orgId: ce83e3cd-5199-11ee-a644-522476618ae8
        gatingQuestionId: 88940b8d-7263-438d-97ae-ea69ff9799ef
        conditionalQuestionId: 4d3ebff6-6890-435d-9e8d-8842e8593d51
        trigger: 'yes'
        status: active
        createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        createdOn: '2023-09-12T18:26:10.005365Z'
        updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        updatedOn: '2023-09-12T18:26:10.005365Z'
        permissions: []
    QuestionConditionCollection:
      type: array
      description: Collection of questionnaire conditions
      items:
        $ref: '#/components/schemas/QuestionCondition'
    QuestionnaireInvitationRequest:
      type: object
      properties:
        objectType:
          $ref: '#/components/schemas/ObjectType'
          description: >-
            Type of object to send the questionnaire to (Only vendor is
            supported).
        invitedToId:
          type: string
          format: uuid
          description: The unique identifier of the questionnaire to send.
        version:
          type: integer
          description: The version of the questionnaire to send.
        objectInfo:
          type: array
          items:
            $ref: '#/components/schemas/QuestionnaireInvitationObjectInfo'
          description: >-
            Information about who the questionnaire invitation is being sent to
            and for what vendor.
      required:
        - invitedToId
        - objectInfo
        - objectType
        - version
      example:
        invitedToId: 42310868-81f9-48c3-b68a-6582495c36b7
        objectInfo:
          - objectId: 859c5f4f-734d-4c7f-9673-efa7f30e4da8
            ownerId: 75c7a61b-0366-48d4-843a-e9ff69292793
            respondentType: owner
        objectType: vendor
        version: 0
    QuestionnaireInvitation:
      type: object
      properties:
        questionnaireId:
          type: string
          format: uuid
          description: The unique identifier for the questionnaire.
        invitationId:
          type: string
          format: uuid
          description: The unique identifier for the questionnaire invitation.
        version:
          type: integer
          description: The version of the questionnaire.
        vendorId:
          type: string
          format: uuid
          description: The unique identifier for the vendor.
        vendorName:
          type: string
          description: The name of the vendor.
        contactGivenName:
          type: string
          description: The given name of the person the questionnaire was sent to.
        contactSurname:
          type: string
          description: The surname of the person the questionniare was sent to.
        contactEmail:
          type: string
          description: The email address of the person the questionnaire was sent to.
        QuestionnaireStatus:
          $ref: '#/components/schemas/QuestionnaireStatus'
        QuestionnaireInvitationUserType:
          $ref: '#/components/schemas/QuestionnaireInvitationUserType'
        latestResponseVersion:
          type: integer
          description: The latest version of the responses.
        recipients:
          $ref: '#/components/schemas/QuestionnaireInvitationRecipientCollection'
        reminderCount:
          type: integer
          description: >-
            The count of reminders that have been sent for this questionnaire
            invitation.
        dateLastSent:
          type: string
          description: >-
            The date the questionnaire invitation was last sent (ISO-8601
            format).
        status:
          $ref: '#/components/schemas/ObjectStatus'
        createdBy:
          type: string
          description: >-
            The unique identifier of the user who created the questionnaire
            invitation.
        createdOn:
          type: string
          format: date-time
          description: The date the questionnaire invitation was created (ISO-8601 format).
        updatedBy:
          type: string
          description: >-
            The unique identifier of the user who last updated the questionnaire
            invitation.
        updatedOn:
          type: string
          format: date-time
          description: The date the questionnaire invitation was updated (ISO-8601 format).
        permissions:
          type: array
          description: List of permissions the API user has on the question condition.
          items:
            type: string
      example:
        id: 5ba459d0-c69a-4ba3-b5d7-572c56838bfe
        orgId: 5bf47cef-6a4f-4ed1-aa8a-9a9cf6e2b831
        invitationId: 8a0c64fa-1bff-4741-a332-dc7458f7144a
        questionnaireId: d297b753-05da-46bb-8558-15177350d244
        questionaireStatus: sent
        invitationUserType: owner
        version: 0
        latestResponseVersion: 0
        recipients:
          - email: john.doe@hyperproof.io
          - name: John Doe
        vendorName: Acme
        status: active
        createdBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        createdOn: '2023-09-12T18:26:10.005365Z'
        updatedBy: 82d7c228-8bcd-11e9-a94b-ab3de8494987
        updatedOn: '2023-09-12T18:26:10.005365Z'
        permissions: []
    QuestionnaireInvitationFilter:
      type: object
      properties:
        questionnaireIds:
          type: array
          items:
            type: string
          description: >-
            The unique identifiers of the questionnaires to filter the
            questionnaire invitations.
        status:
          $ref: '#/components/schemas/ObjectStatus'
      example:
        questionnaireIds:
          - a3f96b88-51a8-4db0-9403-a40b8b6d92e4
          - cf09a1f6-3bcc-4e71-9c56-11bb83bf57d6
        status: active
    QuestionnaireInvitationCollection:
      type: array
      description: Collection of questionnaire invitations
      items:
        $ref: '#/components/schemas/QuestionnaireInvitation'
    QuestionnaireInvitationRecipient:
      type: object
      properties:
        name:
          type: string
          description: The name of the of questionnaire recipient.
        email:
          type: string
          description: The email of the questionnaire recipient.
      required:
        - name
        - email
      example:
        name: John Doe
        email: John@hyperproof.io
    QuestionnaireInvitationRecipientCollection:
      type: array
      description: Collection of invitation recipients
      items:
        $ref: '#/components/schemas/QuestionnaireInvitationRecipient'
    QuestionType:
      type: string
      description: The type of question this is.
      enum:
        - text
        - number
        - date
        - textSingleSelect
        - textMultiSelect
        - textSingleSelectAndExplanation
        - textMultiSelectAndExplanation
        - proofUpload
        - textInstruction
    ObjectPropertyMapping:
      type: string
      description: An object and property mapping
      enum:
        - RISK_NAME
        - RISK_DESCRIPTION
        - RISK_LIKELIHOOD_RATIONALE
        - RISK_IMPACT_RATIONALE
        - EXTERNAL_CONTACT_GIVEN_NAME
        - EXTERNAL_CONTACT_SURNAME
        - EXTERNAL_CONTACT_EMAIL
