> ## Documentation Index
> Fetch the complete documentation index at: https://docs.aegister.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit a framework step's control answers

> Submit framework control answers for one step: JSON {answers, dry_run?} with ?step=<stepId>. dry_run validates without writing; otherwise it validates then submits via /evaluate (Aegister scores and persists), exactly like saving a step in the web app. Requires the edit role.



## OpenAPI

````yaml post /api/v1/v-ciso/organizations/{organizationid}/workflows/{workflowid}/framework/controls-import
openapi: 3.1.0
info:
  title: Aegister API
  version: 1.0.5
servers: []
security: []
paths:
  /api/v1/v-ciso/organizations/{organizationid}/workflows/{workflowid}/framework/controls-import:
    post:
      tags:
        - V-CISO • Workflows
      summary: Submit a framework step's control answers (dry_run to validate)
      description: >-
        POST
        /api/v1/v-ciso/organizations/{oid}/workflows/{fwid}/framework/controls-import


        Submit framework control answers for **one step** — JSON

        ``{answers:{<control_id>: value}, dry_run?}`` with ``?step=<stepId>``.
        Choice

        answers accept the label or value id. dry_run validates without writing;
        else

        it validates then submits via ``/evaluate`` (Activepieces scores +
        persists),

        exactly like saving a step in the web app. Requires the ``edit`` role.
      operationId: v-ciso-controls-import
      parameters:
        - in: query
          name: dry_run
          schema:
            type: boolean
          description: Validate only; return errors without writing.
        - in: query
          name: lan
          schema:
            type: string
          description: Language for labels/validation (en|it).
        - in: path
          name: organizationid
          schema:
            type: integer
          required: true
        - in: query
          name: step
          schema:
            type: string
          description: Restrict to a single framework step id.
        - in: path
          name: workflowid
          schema:
            type: string
          required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                answers:
                  type: object
                  additionalProperties: true
                dry_run:
                  type: boolean
            examples:
              Controls(dryRun):
                value:
                  dry_run: true
                  answers:
                    nis2-req-E - 2.1.1: Implemented
                summary: Controls (dry_run)
              ControlWithEvidence:
                value:
                  answers:
                    nis2-req-E - 2.1.1:
                      value: Implemented
                      evidence:
                        - >-
                          media/docs/frameworks/65/<fwid>/nis2-req-E -
                          2.1.1/tok_x.pdf
                summary: Control with evidence
                description: >-
                  Upload the file first via POST
                  …/documents/<artifactId>/versions and use the returned path.
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: integer
                    description: |-
                      Any value different from 0 indicates an error.  
                      More details can be found in `messages`.
                    minimum: 0
                    maximum: 0
                    examples:
                      - 0
                  messages:
                    type: array
                    description: >-
                      If `error` is `1`, contains zero or more details on the
                      error.
                    examples:
                      - []
                  data:
                    type: object
                    description: >-
                      dry_run → {answers, errors, valid_count, error_count};
                      submit → {submitted, evaluation_id}
                    additionalProperties: true
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: integer
                    description: |-
                      Any value different from 0 indicates an error.  
                      More details can be found in `messages`.
                    minimum: 0
                    maximum: 0
                    examples:
                      - 1
                  messages:
                    type: array
                    description: >-
                      If `error` is `1`, contains zero or more details on the
                      error.
                    examples:
                      - - Invalid data provided
          description: ''
        '401':
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: integer
                    description: |-
                      Any value different from 0 indicates an error.  
                      More details can be found in `messages`.
                    minimum: 0
                    maximum: 0
                    examples:
                      - 1
                  messages:
                    type: array
                    description: >-
                      If `error` is `1`, contains zero or more details on the
                      error.
                    examples:
                      - - 9153
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: integer
                    description: |-
                      Any value different from 0 indicates an error.  
                      More details can be found in `messages`.
                    minimum: 0
                    maximum: 0
                    examples:
                      - 1
                  messages:
                    type: array
                    description: >-
                      If `error` is `1`, contains zero or more details on the
                      error.
                    examples:
                      - []
          description: ''
      security:
        - ApiKeyAuth: []
        - ApiKeyQueryParam: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Aegister-Token
    ApiKeyQueryParam:
      type: apiKey
      in: query
      name: X-Aegister-Token

````