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

# processDecisionComponents

> Process one or many decision components.

`Mutation`

## Arguments

<ParamField path="input" type="ProcessDecisionComponentsInput!" required>
  <Expandable title="child attributes">
    <ParamField path="applicationId" type="UUID!" required>
      The ID of the application to process decision components for.
    </ParamField>

    <ParamField path="decisionComponents" type="[ProcessDecisionComponentInput!]!" required>
      The decision component inputs to process.

      <Expandable title="child attributes">
        <ParamField path="decisionComponentItemIds" type="[UUID!]">
          If child item IDs are specified, ONLY those decision component items will be processed.
        </ParamField>

        <ParamField path="decisionComponentSchemaId" type="UUID!" required>
          The ID of the decision component schema to process.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

## Return type

`ProcessDecisionComponentsPayload!`

<ResponseField name="decisionComponents" type="[DecisionComponent!]">
  The decision components that were processed.

  <Expandable title="child attributes">
    <ResponseField name="attachments" type="[Attachment!]!" required>
      See [Attachment](/underwriting/reference/graphql/types/attachment)
    </ResponseField>

    <ResponseField name="comments" type="[Comment!]!" required>
      See [Comment](/underwriting/reference/graphql/types/comment)
    </ResponseField>

    <ResponseField name="hasAttachments" type="Boolean!" required />

    <ResponseField name="hasComments" type="Boolean!" required />

    <ResponseField name="id" type="UUID!" required>
      The unique identifier of the decision component.
    </ResponseField>

    <ResponseField name="items" type="[DecisionComponentItem!]!" required>
      See [DecisionComponentItem](/underwriting/reference/graphql/types/decision-component-item)
    </ResponseField>

    <ResponseField name="lastUpdatedBy" type="Actor">
      The actor (user or app) who last updated this record

      See [Actor](/underwriting/reference/graphql/types/actor)
    </ResponseField>

    <ResponseField name="schema" type="UnderwritingDecisionComponentSchema">
      See [UnderwritingDecisionComponentSchema](/underwriting/reference/graphql/types/underwriting-decision-component-schema)
    </ResponseField>

    <ResponseField name="status" type="DecisionComponentStatus">
      The current processing status of this decision component in the underwriting workflow.

      See [DecisionComponentStatus](/underwriting/reference/graphql/types/decision-component-status)
    </ResponseField>

    <ResponseField name="updatedDateTime" type="DateTime!" required>
      The last date and time this was updated in UTC.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="errors" type="[ProcessDecisionComponentsError!]">
  Errors that occurred during the mutation, if any. Null or empty indicates success.

  <Expandable title="Possible types">
    <Expandable title="BadRequestError">
      <ResponseField name="advice" type="String!" required />

      <ResponseField name="code" type="CommonErrorCode!" required>
        See [CommonErrorCode](/underwriting/reference/graphql/types/common-error-code)
      </ResponseField>

      <ResponseField name="message" type="String!" required />
    </Expandable>

    <Expandable title="ForbiddenError">
      <ResponseField name="advice" type="String!" required />

      <ResponseField name="code" type="CommonErrorCode!" required>
        See [CommonErrorCode](/underwriting/reference/graphql/types/common-error-code)
      </ResponseField>

      <ResponseField name="message" type="String!" required />
    </Expandable>

    <Expandable title="InvalidActorError">
      <ResponseField name="advice" type="String!" required />

      <ResponseField name="code" type="CommonErrorCode!" required>
        See [CommonErrorCode](/underwriting/reference/graphql/types/common-error-code)
      </ResponseField>

      <ResponseField name="message" type="String!" required />
    </Expandable>

    <Expandable title="InvalidOrganizationError">
      <ResponseField name="advice" type="String!" required />

      <ResponseField name="code" type="CommonErrorCode!" required>
        See [CommonErrorCode](/underwriting/reference/graphql/types/common-error-code)
      </ResponseField>

      <ResponseField name="message" type="String!" required />
    </Expandable>

    <Expandable title="NotFoundError">
      <ResponseField name="advice" type="String!" required />

      <ResponseField name="code" type="CommonErrorCode!" required>
        See [CommonErrorCode](/underwriting/reference/graphql/types/common-error-code)
      </ResponseField>

      <ResponseField name="message" type="String!" required />

      <ResponseField name="resourceId" type="String" />

      <ResponseField name="resourceName" type="String" />
    </Expandable>

    <Expandable title="ServerError">
      <ResponseField name="advice" type="String!" required />

      <ResponseField name="code" type="CommonErrorCode!" required>
        See [CommonErrorCode](/underwriting/reference/graphql/types/common-error-code)
      </ResponseField>

      <ResponseField name="message" type="String!" required />
    </Expandable>

    <Expandable title="AcceptorApplicationFieldValidationError">
      Represents a field-level validation error on an acceptor application.

      <ResponseField name="code" type="AcceptorApplicationFieldValidationErrorCode!" required>
        A static code for tying the response back programmatically.

        <Expandable title="Possible enum values">
          <ResponseField name="FIELD_TOO_LONG" type="enum">
            A field value exceeds the maximum allowed length.
          </ResponseField>

          <ResponseField name="INVALID_BUSINESS_ADDRESS_COUNTRY_CODE" type="enum">
            The business address country code is not a recognized ISO 3166-1 alpha-3 value.
          </ResponseField>

          <ResponseField name="INVALID_EIN" type="enum">
            The Employer Identification Number (EIN) does not conform to the expected format of XX-XXXXXXX (e.g., 12-3456789).
          </ResponseField>

          <ResponseField name="INVALID_FIELD" type="enum">
            The field value does not meet the required format or constraints.
          </ResponseField>

          <ResponseField name="INVALID_MCC" type="enum">
            The Merchant Category Code (MCC) is not a recognized value.
          </ResponseField>

          <ResponseField name="INVALID_SSN" type="enum">
            The Social Security Number (SSN) does not conform to the expected format of XXX-XX-XXXX (e.g., 012-34-5678).
          </ResponseField>

          <ResponseField name="INVALID_TELEPHONE_NUMBER" type="enum">
            The telephone number is invalid. It must be a valid phone number containing only digits, with optional dashes, dots, or spaces.
          </ResponseField>

          <ResponseField name="INVALID_TIN" type="enum">
            The tax identification number (TIN) does not conform to the expected format: XXX-XX-XXXX for individuals (SSN/ITIN) or XX-XXXXXXX for businesses (EIN).
          </ResponseField>

          <ResponseField name="MISSING_FIELD" type="enum">
            A required field was not provided.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="field" type="String!" required>
        The name of the field that failed validation.
      </ResponseField>

      <ResponseField name="message" type="String!" required>
        A helpful message describing how to fix the invalid value.
      </ResponseField>
    </Expandable>

    <Expandable title="AcceptorApplicationStakeholderFieldValidationError">
      Represents a field-level validation error on a stakeholder within an acceptor application.

      <ResponseField name="code" type="AcceptorApplicationStakeholderFieldValidationErrorCode!" required>
        A static code for tying the response back programmatically.

        <Expandable title="Possible enum values">
          <ResponseField name="FIELD_TOO_LONG" type="enum">
            A field value exceeds the maximum allowed length.
          </ResponseField>

          <ResponseField name="INVALID_FIELD" type="enum">
            The field value does not meet the required format or constraints.
          </ResponseField>

          <ResponseField name="INVALID_TELEPHONE_NUMBER" type="enum">
            The stakeholder's telephone number is invalid. It must be a valid phone number containing only digits, with optional dashes, dots, or spaces.
          </ResponseField>

          <ResponseField name="MISSING_FIELD" type="enum">
            A required field was not provided.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="field" type="String!" required>
        The name of the field that failed validation.
      </ResponseField>

      <ResponseField name="message" type="String!" required>
        A helpful message describing how to fix the invalid value.
      </ResponseField>

      <ResponseField name="stakeholderId" type="UUID!" required>
        The ID of the stakeholder whose field failed validation.
      </ResponseField>
    </Expandable>

    <Expandable title="AcceptorApplicationValidationError">
      Represents a validation error on an acceptor application that is not specific to a single field.

      <ResponseField name="code" type="AcceptorApplicationValidationErrorCode!" required>
        A static code for tying the response back programmatically.

        <Expandable title="Possible enum values">
          <ResponseField name="INTERNAL_SERVER_ERROR" type="enum">
            An unexpected server error occurred while processing the application.
          </ResponseField>

          <ResponseField name="INVALID_OWNER" type="enum">
            The caller does not own the application or lacks permission to modify it.
          </ResponseField>

          <ResponseField name="INVALID_STATUS" type="enum">
            The application is in a state that does not permit this operation.
          </ResponseField>

          <ResponseField name="MISSING_GUARANTOR" type="enum">
            The application is missing a required guarantor.
          </ResponseField>

          <ResponseField name="MISSING_STAKEHOLDER" type="enum">
            The application is missing a required stakeholder with at least one role.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="message" type="String!" required>
        A helpful message describing the validation failure.
      </ResponseField>
    </Expandable>

    <Expandable title="AcceptorApplicationBankAccountFieldValidationError">
      Represents a field-level validation error on a bank account within an acceptor application.

      <ResponseField name="bankAccountId" type="UUID!" required>
        The associated bank account id
      </ResponseField>

      <ResponseField name="code" type="AcceptorApplicationBankAccountFieldValidationGraphQlErrorCode!" required>
        A static code for tying the response back programmatically

        <Expandable title="Possible enum values">
          <ResponseField name="FIELD_TOO_LONG" type="enum">
            A field value exceeds the maximum allowed length.
          </ResponseField>

          <ResponseField name="INVALID_CHARACTERS" type="enum">
            A field contains characters that are not permitted.
          </ResponseField>

          <ResponseField name="MISSING_FIELD" type="enum">
            A required field was not provided.
          </ResponseField>
        </Expandable>
      </ResponseField>

      <ResponseField name="field" type="String!" required>
        The field that is invalid
      </ResponseField>

      <ResponseField name="message" type="String!" required>
        A helpful message to help fix the invalid value
      </ResponseField>
    </Expandable>

    <Expandable title="UnderwritingApplicationBankAccountFieldValidationError">
      Represents a field-level validation error on a bank account within an underwriting application.

      <ResponseField name="bankAccountId" type="UUID!" required>
        The associated bank account id
      </ResponseField>

      <ResponseField name="code" type="UnderwritingApplicationBankAccountFieldValidationGraphQlErrorCode!" required>
        A static code for tying the response back programmatically

        See [UnderwritingApplicationBankAccountFieldValidationGraphQlErrorCode](/underwriting/reference/graphql/types/underwriting-application-bank-account-field-validation-graph-ql-error-code)
      </ResponseField>

      <ResponseField name="field" type="String!" required>
        The field that is invalid
      </ResponseField>

      <ResponseField name="message" type="String!" required>
        A helpful message to help fix the invalid value
      </ResponseField>
    </Expandable>

    <Expandable title="UnderwritingApplicationFieldValidationError">
      Represents a field-level validation error on an underwriting application.

      <ResponseField name="code" type="UnderwritingApplicationFieldValidationErrorCode!" required>
        A static code for tying the response back programmatically.

        See [UnderwritingApplicationFieldValidationErrorCode](/underwriting/reference/graphql/types/underwriting-application-field-validation-error-code)
      </ResponseField>

      <ResponseField name="field" type="String!" required>
        The field that is invalid.
      </ResponseField>

      <ResponseField name="message" type="String!" required>
        A helpful message to help fix the invalid value.
      </ResponseField>
    </Expandable>

    <Expandable title="UnderwritingApplicationStakeholderFieldValidationError">
      Represents a field-level validation error on a stakeholder within an underwriting application.

      <ResponseField name="code" type="UnderwritingApplicationStakeholderFieldValidationErrorCode!" required>
        A static code for tying the response back programmatically

        See [UnderwritingApplicationStakeholderFieldValidationErrorCode](/underwriting/reference/graphql/types/underwriting-application-stakeholder-field-validation-error-code)
      </ResponseField>

      <ResponseField name="field" type="String!" required>
        The field that is invalid
      </ResponseField>

      <ResponseField name="message" type="String!" required>
        A helpful message to help fix the invalid value
      </ResponseField>

      <ResponseField name="stakeholderId" type="UUID!" required>
        The associated stakeholder ID
      </ResponseField>
    </Expandable>

    <Expandable title="UnderwritingApplicationValidationError">
      Represents a validation error on an underwriting application that is not specific to a single field.

      <ResponseField name="code" type="UnderwritingApplicationValidationErrorCode!" required>
        A static code for tying the response back programmatically.

        See [UnderwritingApplicationValidationErrorCode](/underwriting/reference/graphql/types/underwriting-application-validation-error-code)
      </ResponseField>

      <ResponseField name="message" type="String!" required>
        A helpful message to help fix the validation error.
      </ResponseField>
    </Expandable>
  </Expandable>
</ResponseField>

<RequestExample>
  ```graphql Operation lines expandable theme={null}
  mutation ProcessDecisionComponents($input: ProcessDecisionComponentsInput!) {
    processDecisionComponents(input: $input) {
      decisionComponents {
        attachments {
          fileName
          id
          size
          uploadedDateTime
        }
        comments {
          content
          createdDateTime
          decisionComponent
          id
          updatedDateTime
        }
        hasAttachments
        hasComments
        id
        items {
          descriptiveText
          displayOrder
          guidance
          id
          label
          stakeholderId
          status
        }
        lastUpdatedBy {
          name
          type
        }
        schema {
          id
          label
          requiredRoles
          requiredScopes
        }
        status
        updatedDateTime
      }
      errors {
        ... on BadRequestError {
          advice
          code
          message
        }
        ... on ForbiddenError {
          advice
          code
          message
        }
        ... on InvalidActorError {
          advice
          code
          message
        }
        ... on InvalidOrganizationError {
          advice
          code
          message
        }
        ... on NotFoundError {
          advice
          code
          message
          resourceId
          resourceName
        }
        ... on ServerError {
          advice
          code
          message
        }
        ... on AcceptorApplicationFieldValidationError {
          code
          field
          message
        }
        ... on AcceptorApplicationStakeholderFieldValidationError {
          code
          field
          message
          stakeholderId
        }
        ... on AcceptorApplicationValidationError {
          code
          message
        }
        ... on AcceptorApplicationBankAccountFieldValidationError {
          bankAccountId
          code
          field
          message
        }
        ... on UnderwritingApplicationBankAccountFieldValidationError {
          bankAccountId
          code
          field
          message
        }
        ... on UnderwritingApplicationFieldValidationError {
          code
          field
          message
        }
        ... on UnderwritingApplicationStakeholderFieldValidationError {
          code
          field
          message
          stakeholderId
        }
        ... on UnderwritingApplicationValidationError {
          code
          message
        }
      }
    }
  }
  ```

  ```json Variables lines expandable theme={null}
  {
    "input": {
      "applicationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "decisionComponents": [
        {
          "decisionComponentSchemaId": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
        }
      ]
    }
  }
  ```

  ```bash cURL lines expandable theme={null}
  curl --request POST \
    --url https://api.sandbox.com/graphql \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>' \
    --data '{
    "query": "mutation ProcessDecisionComponents($input: ProcessDecisionComponentsInput!) {\n  processDecisionComponents(input: $input) {\n    decisionComponents {\n      attachments {\n        fileName\n        id\n        size\n        uploadedDateTime\n      }\n      comments {\n        content\n        createdDateTime\n        decisionComponent\n        id\n        updatedDateTime\n      }\n      hasAttachments\n      hasComments\n      id\n      items {\n        descriptiveText\n        displayOrder\n        guidance\n        id\n        label\n        stakeholderId\n        status\n      }\n      lastUpdatedBy {\n        name\n        type\n      }\n      schema {\n        id\n        label\n        requiredRoles\n        requiredScopes\n      }\n      status\n      updatedDateTime\n    }\n    errors {\n      ... on BadRequestError {\n        advice\n        code\n        message\n      }\n      ... on ForbiddenError {\n        advice\n        code\n        message\n      }\n      ... on InvalidActorError {\n        advice\n        code\n        message\n      }\n      ... on InvalidOrganizationError {\n        advice\n        code\n        message\n      }\n      ... on NotFoundError {\n        advice\n        code\n        message\n        resourceId\n        resourceName\n      }\n      ... on ServerError {\n        advice\n        code\n        message\n      }\n      ... on AcceptorApplicationFieldValidationError {\n        code\n        field\n        message\n      }\n      ... on AcceptorApplicationStakeholderFieldValidationError {\n        code\n        field\n        message\n        stakeholderId\n      }\n      ... on AcceptorApplicationValidationError {\n        code\n        message\n      }\n      ... on AcceptorApplicationBankAccountFieldValidationError {\n        bankAccountId\n        code\n        field\n        message\n      }\n      ... on UnderwritingApplicationBankAccountFieldValidationError {\n        bankAccountId\n        code\n        field\n        message\n      }\n      ... on UnderwritingApplicationFieldValidationError {\n        code\n        field\n        message\n      }\n      ... on UnderwritingApplicationStakeholderFieldValidationError {\n        code\n        field\n        message\n        stakeholderId\n      }\n      ... on UnderwritingApplicationValidationError {\n        code\n        message\n      }\n    }\n  }\n}",
    "variables": {
      "input": {
        "applicationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "decisionComponents": [
          {
            "decisionComponentSchemaId": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
          }
        ]
      }
    }
  }'
  ```
</RequestExample>

<ResponseExample>
  ```json Response lines expandable theme={null}
  {
    "data": {
      "processDecisionComponents": {
        "decisionComponents": [
          {
            "attachments": [
              {
                "fileName": "business-license.pdf",
                "id": "c9a1e2d3-4b5f-6789-0abc-def123456789",
                "size": 0,
                "uploadedBy": "example",
                "uploadedDateTime": "2026-01-15T14:30:00Z"
              }
            ],
            "comments": [
              {
                "content": "Approved for mechanical keyboard accessories line.",
                "createdBy": "example",
                "createdDateTime": "2026-01-15T14:30:00Z",
                "decisionComponent": "example",
                "id": "d8b2f3e4-5c6a-7890-1bcd-ef2345678901",
                "lastUpdatedBy": "example",
                "updatedDateTime": "2026-01-15T14:30:00Z"
              }
            ],
            "hasAttachments": true,
            "hasComments": true,
            "id": "e7c3a4b5-6d7e-8901-2cde-f34567890123",
            "items": [
              {
                "descriptiveText": "example",
                "displayOrder": 0,
                "dynamicFields": [
                  "example"
                ],
                "fields": [
                  "example"
                ],
                "guidance": "example",
                "id": "b6d4e5f6-7a8b-9012-3def-456789012345",
                "label": "example",
                "outcomes": "example",
                "stakeholderId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
                "status": "ACCEPTED"
              }
            ],
            "lastUpdatedBy": {
              "name": "Ben Torres",
              "type": "APP"
            },
            "schema": {
              "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
              "label": "example",
              "requiredRoles": [
                "BANK"
              ],
              "requiredScopes": [
                "example"
              ],
              "underwritingDecisionComponentItemSchemas": [
                "example"
              ]
            },
            "status": "ACCEPTED",
            "updatedDateTime": "2026-01-15T14:30:00Z"
          }
        ],
        "errors": [
          {
            "__typename": "BadRequestError",
            "advice": "example",
            "code": "BAD_REQUEST",
            "message": "example"
          }
        ]
      }
    }
  }
  ```
</ResponseExample>
