---
title: "Submit assessment findings for Core to validate and sign"
method: POST
path: "/v1/assessments/{assessmentId}/findings"
---

# Submit assessment findings for Core to validate and sign

`POST /v1/assessments/{assessmentId}/findings`

## Request

- Base URL: `https://api.decionis.com`
- URL: `https://api.decionis.com/v1/assessments/{assessmentId}/findings`
- Auth: HTTP bearer

Organization API key with decision:write (role MEMBER or higher); the organization comes from the key. Core checks record digests, as-of provenance, assessed and total counts, coverage and partial status, and transaction-time amounts in each record's own currency, recomputes the per-currency totals and signs the artifact (decionis.assessments.findings/1) with the dossier Ed25519 key, verifiable offline against /.well-known/decision-dossier-jwks.json. Without a signing key the artifact is stored and labelled unsigned. A partial assessment stays partial. An identical resubmission returns the artifact signed the first time (200).

## Request body

- AssessmentFindingsSubmission
  - `version` 'decionis.assessments.submission/1', required
  - `assessment_id` string, uuid, required
  - `platform` string, required
  - `evaluator` object, required
    - `platform` string, required
    - `methodology` string, required
  - `source` object, required
    - `kind` 'connected_history' | 'recorded_evidence', required
    - `connection_id` string, uuid, nullable, required
    - `company_id` string, nullable, required
    - `revision` string, required
    - `as_of` string, date-time, required
    - `window` object, required
      - `from` string, date-time, required
      - `to` string, date-time, required
  - `status` 'complete' | 'partial', required
  - `coverage` object, required
    - `assessed` integer, required
    - `total` integer, nullable, required
    - `limit` integer, required
    - `truncated` boolean, required
    - `complete` boolean, required
    - `reasons` string[], required
    - `gaps` object[], required
      - `code` string, required
      - `finding_types` string[], required
  - `findings` object[], required
    - `finding_id` string, required
    - `type` string, required
    - `check_id` 'P01' | 'P02' | 'P03' | 'P04' | 'P05' | 'P06' | 'P07' | 'P08' | 'P09' | 'P10' | 'P11' | 'P12' | 'P13' | 'P14' | 'P15' | 'P16', required
    - `record_digest` string, required
    - `occurred_at` string, date-time, required
    - `amount` object, required
      - `currency` string, required
      - `scale` integer, required
      - `amount_minor` integer, required
    - `measurements` object, required
    - `basis` 'source_record' | 'recorded_observation', required
  - `records` object[], required
    - `record_digest` string, required
    - `occurred_at` string, date-time, required
    - `amount` object, nullable, required
      - `currency` string, required
      - `scale` integer, required
      - `amount_minor` integer, required
    - `replay` object, nullable, required
      - `action` union, required
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'PRICE_CHANGE', required
          - `payload` object, required
            - `sku` string, required
            - `from_price` number, nullable, required
            - `to_price` number, required
            - `estimated_cost` number, nullable
            - `currency` string
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'INVENTORY_MUTATION', required
          - `payload` object, required
            - `sku` string, required
            - `from` integer, nullable, required
            - `to` integer, required
            - `location_id` string, nullable
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'ORDER_ACCEPTANCE', required
          - `payload` object, required
            - `order_id` string, nullable, required
            - `gross_amount` number, required
            - `discount_amount` number, required
            - `estimated_cost` number, required
            - `currency` string
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'FULFILLMENT_ACTION', required
          - `payload` object, required
            - `order_id` string, required
            - `action` 'acknowledge' | 'ship' | 'cancel' | 'hold', required
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'PROMOTION_CHANGE', required
          - `payload` object, required
            - `promotion_id` string, nullable, required
            - `percentage_fraction` number, nullable, required
            - `ends_at` string, date-time, nullable, required
            - `status` string, nullable, required
            - `combines_with` object, nullable, required
              - …
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'REFUND_REQUEST', required
          - `payload` object, required
            - `order_id` string, required
            - `amount` number, required
            - `currency` string
            - `reason_code` string, nullable
            - `remaining_refundable` number
            - `prior_refund_count` integer
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'RETURN_AUTHORIZATION', required
          - `payload` object, required
            - `order_id` string, required
            - `rma_id` string, nullable
            - `amount` number, nullable
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'PAYMENT_RELEASE', required
          - `payload` object, required
            - `payment_id` string, required
            - `vendor_id` string, required
            - `invoice_id` string
            - `amount` number, required
            - `currency` string, required
            - `due_at` string, date-time
            - `rail` 'ach' | 'wire' | 'card' | 'stablecoin' | 'other'
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'VENDOR_BANK_CHANGE', required
          - `payload` object, required
            - `vendor_id` string, required
            - `change_id` string, required
            - `account_hash` string, required
            - `account_last4` string, required
            - `previous_account_hash` string
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'EARLY_PAYMENT_DISCOUNT', required
          - `payload` object, required
            - `payment_id` string, required
            - `vendor_id` string, required
            - `amount` number, required
            - `currency` string, required
            - `discount_percent` number, required
            - `days_early` integer, required
        - object
          - `actor` object, required
            - `type` 'HUMAN' | 'ERP' | 'REPRICER' | 'WORKFLOW' | 'AGENT' | 'UNKNOWN', required
            - `id` string, required
          - `platform` string, required
          - `idempotency_key` string, required
          - `action_type` 'CREDIT_HOLD_RELEASE', required
          - `payload` object, required
            - `customer_id` string, required
            - `order_id` string
            - `amount` number, required
            - `currency` string, required
            - `exposure_after_release` number
      - `facts` CommercePreflightFacts, required
        - `observed_at` string, date-time
        - `source` string
        - `currency` string
        - `pricing` object
          - `gross_amount` number
          - `discount_amount` number
          - `estimated_cost` number
        - `cost_basis` object
          - `source_cost` number
          - `system_of_record_cost` number
        - `inventory` object
          - `source_on_hand` integer
          - `system_on_hand` integer
          - `reserved_quantity` integer
          - `requested_quantity` integer
        - `region` object
          - `country` string
        - `discounts` object
          - `count` integer
          - `sources` string[]
        - `contract` object
          - `account_type` 'retail' | 'b2b'
          - `offered_price` number
          - `contract_price` number
        - `promotion` object
          - `discount_codes` string[]
          - `prior_redemptions` integer
          - `account_age_days` number
          - `identity_hash` string
        - `refund` object
          - `remaining_refundable` number
          - `prior_refund_count` integer
        - `lifecycle` object
          - `current_state` 'created' | 'acknowledged' | 'shipped' | 'delivered' | 'cancelled' | 'refunded' | 'return_authorized' | 'returned'
          - `delivered_at` string, date-time
          - `return_eligible` boolean
        - `payment` object
          - `prior_payment_count` integer
          - `approver_authority_limit` number
        - `beneficiary` object
          - `changed_at` string, date-time, nullable
          - `verification` 'verified' | 'unverified' | 'pending'
        - `treasury` object
          - `cash_position` number
          - `run_total` number
          - `cost_of_funds_percent` number

## Response `200`

The artifact already signed for this exact submission.

- SignedAssessmentFindings
  - `artifact` object, required
    - `assessment_id` string, uuid, required
    - `platform` string, required
    - `evaluator` object, required
      - `platform` string, required
      - `methodology` string, required
    - `source` object, required
      - `kind` 'connected_history' | 'recorded_evidence', required
      - `connection_id` string, uuid, nullable, required
      - `company_id` string, nullable, required
      - `revision` string, required
      - `as_of` string, date-time, required
      - `window` object, required
        - `from` string, date-time, required
        - `to` string, date-time, required
    - `status` 'complete' | 'partial', required
    - `coverage` object, required
      - `assessed` integer, required
      - `total` integer, nullable, required
      - `limit` integer, required
      - `truncated` boolean, required
      - `complete` boolean, required
      - `reasons` string[], required
      - `gaps` object[], required
        - `code` string, required
        - `finding_types` string[], required
    - `findings` object[], required
      - `finding_id` string, required
      - `type` string, required
      - `check_id` 'P01' | 'P02' | 'P03' | 'P04' | 'P05' | 'P06' | 'P07' | 'P08' | 'P09' | 'P10' | 'P11' | 'P12' | 'P13' | 'P14' | 'P15' | 'P16', required
      - `record_digest` string, required
      - `occurred_at` string, date-time, required
      - `amount` object, required
        - `currency` string, required
        - `scale` integer, required
        - `amount_minor` integer, required
      - `measurements` object, required
      - `basis` 'source_record' | 'recorded_observation', required
    - `records` object[], required
      - `record_digest` string, required
      - `occurred_at` string, date-time, required
      - `amount` object, nullable, required
        - `currency` string, required
        - `scale` integer, required
        - `amount_minor` integer, required
      - `replay` object, nullable, required
        - `action` union, required
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'PRICE_CHANGE', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'INVENTORY_MUTATION', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'ORDER_ACCEPTANCE', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'FULFILLMENT_ACTION', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'PROMOTION_CHANGE', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'REFUND_REQUEST', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'RETURN_AUTHORIZATION', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'PAYMENT_RELEASE', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'VENDOR_BANK_CHANGE', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'EARLY_PAYMENT_DISCOUNT', required
            - `payload` object, required
              - …
          - object
            - `actor` object, required
              - …
            - `platform` string, required
            - `idempotency_key` string, required
            - `action_type` 'CREDIT_HOLD_RELEASE', required
            - `payload` object, required
              - …
        - `facts` CommercePreflightFacts, required
          - `observed_at` string, date-time
          - `source` string
          - `currency` string
          - `pricing` object
            - `gross_amount` number
            - `discount_amount` number
            - `estimated_cost` number
          - `cost_basis` object
            - `source_cost` number
            - `system_of_record_cost` number
          - `inventory` object
            - `source_on_hand` integer
            - `system_on_hand` integer
            - `reserved_quantity` integer
            - `requested_quantity` integer
          - `region` object
            - `country` string
          - `discounts` object
            - `count` integer
            - `sources` string[]
          - `contract` object
            - `account_type` 'retail' | 'b2b'
            - `offered_price` number
            - `contract_price` number
          - `promotion` object
            - `discount_codes` string[]
            - `prior_redemptions` integer
            - `account_age_days` number
            - `identity_hash` string
          - `refund` object
            - `remaining_refundable` number
            - `prior_refund_count` integer
          - `lifecycle` object
            - `current_state` 'created' | 'acknowledged' | 'shipped' | 'delivered' | 'cancelled' | 'refunded' | 'return_authorized' | 'returned'
            - `delivered_at` string, date-time
            - `return_eligible` boolean
          - `payment` object
            - `prior_payment_count` integer
            - `approver_authority_limit` number
          - `beneficiary` object
            - `changed_at` string, date-time, nullable
            - `verification` 'verified' | 'unverified' | 'pending'
          - `treasury` object
            - `cash_position` number
            - `run_total` number
            - `cost_of_funds_percent` number
    - `version` 'decionis.assessments.findings/1', required
    - `findings_id` string, uuid, required
    - `org_id` string, uuid, required
    - `submitted_at` string, date-time, required
    - `submission_sha256` string, required
    - `totals` object[], required
      - `type` string, required
      - `check_id` 'P01' | 'P02' | 'P03' | 'P04' | 'P05' | 'P06' | 'P07' | 'P08' | 'P09' | 'P10' | 'P11' | 'P12' | 'P13' | 'P14' | 'P15' | 'P16', required
      - `currency` string, required
      - `scale` integer, required
      - `amount_minor` integer, required
      - `count` integer, required
  - `artifact_sha256` string, required
  - `canonicalization` 'RFC8785/JCS', required
  - `verification` 'signed' | 'unsigned', required
  - `signature` object, nullable, required
    - `algorithm` 'Ed25519', required
    - `keyId` string, required
    - `value` string, required
  - `public_jwks_path` '/.well-known/decision-dossier-jwks.json', required

## Other responses

- `201`: Signed (or explicitly unsigned) findings artifact.
- `400`: Structured API error
- `403`: Structured API error
- `422`: Structured API error

---

[API](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api.md) · [All operations](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/llms.txt) · [OpenAPI document](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/revisions/357f5e459d0c?raw)
