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

# Post apiutilitiesv0registrytransferv0proof

> Verify the outcome of a transfer of Registry Utility assets on Canton.

Given an UpdateID and a Transfer Object, the service looks up the corresponding
ledger transaction and verifies the transfer details against the on-chain events.

The response status indicates the transfer outcome:
- `Success`: The transfer was executed in the referenced transaction
- `Pending`: The transfer instruction has been created but not yet settled
- `Failure`: The transfer instruction was rejected or withdrawn by one of the parties

If none of the above conditions are met, if the provided transfer details do not match
the on-chain data, or if the original TransferInstruction contract cannot be retrieved,
a `400` is returned. No further diagnostic information is included in
the error response to prevent unintended disclosure of sensitive ledger data.




## OpenAPI

````yaml /registry/apis/open-api-specs/utility.yaml post /api/utilities/v0/registry/transfer/v0/proof
openapi: 3.0.0
info:
  title: Utilities API
  description: Exposes technical information and contract data of the Utility App
  version: 2.1.0
servers:
  - url: https://api.utilities.digitalasset.com
    description: MainNet
  - url: https://api.utilities.digitalasset-staging.com
    description: TestNet
  - url: https://api.utilities.digitalasset-dev.com
    description: DevNet
  - url: http://localhost:8080
    description: Local
security: []
tags:
  - name: utility
paths:
  /api/utilities/v0/registry/transfer/v0/proof:
    post:
      tags:
        - registry
      description: >
        Verify the outcome of a transfer of Registry Utility assets on Canton.


        Given an UpdateID and a Transfer Object, the service looks up the
        corresponding

        ledger transaction and verifies the transfer details against the
        on-chain events.


        The response status indicates the transfer outcome:

        - `Success`: The transfer was executed in the referenced transaction

        - `Pending`: The transfer instruction has been created but not yet
        settled

        - `Failure`: The transfer instruction was rejected or withdrawn by one
        of the parties


        If none of the above conditions are met, if the provided transfer
        details do not match

        the on-chain data, or if the original TransferInstruction contract
        cannot be retrieved,

        a `400` is returned. No further diagnostic information is included in

        the error response to prevent unintended disclosure of sensitive ledger
        data.
      operationId: verifyTransferProof
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VerifyTransferProofRequest'
      responses:
        '200':
          description: >
            Transfer proof verified. The `status` field indicates the transfer
            outcome

            (`Success`, `Pending`, or `Failure`). See the endpoint description
            for details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyTransferProofResponse'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
components:
  schemas:
    VerifyTransferProofRequest:
      description: >-
        Request to verify the outcome of a transfer of Registry Utility assets
        on Canton.
      type: object
      required:
        - updateId
        - transfer
      properties:
        updateId:
          description: >
            For the two-step transfer workflow, specifies the most recent
            UpdateId.

            If the transfer has completed its second step (accept, reject, or
            withdraw),

            use the UpdateId associated with that action. Otherwise, use the
            UpdateId from the initial transfer offer.
          type: string
        transfer:
          $ref: '#/components/schemas/TransferObject'
    VerifyTransferProofResponse:
      description: The outcome of verifying a transfer proof.
      type: object
      required:
        - status
      properties:
        status:
          $ref: '#/components/schemas/TransferProofStatus'
    TransferObject:
      description: >-
        The transfer payload containing transaction details known only to the
        sender and receiver.
      type: object
      required:
        - sender
        - receiver
        - amount
        - instrumentId
        - requestedAt
        - executeBefore
        - inputHoldingCids
        - meta
      properties:
        sender:
          description: The party ID of the transfer sender.
          type: string
        receiver:
          description: The party ID of the transfer receiver.
          type: string
        amount:
          description: The transfer amount as a decimal string.
          type: string
          example: '1.0000000000'
        instrumentId:
          $ref: '#/components/schemas/InstrumentId'
        requestedAt:
          description: The timestamp when the transfer was requested.
          type: string
          format: date-time
        executeBefore:
          description: The deadline by which the transfer must be executed.
          type: string
          format: date-time
        inputHoldingCids:
          description: Contract IDs of the holdings used as inputs for the transfer.
          type: array
          items:
            type: string
        meta:
          $ref: '#/components/schemas/TransferMeta'
    TransferProofStatus:
      description: >
        The status of the transfer proof verification:

        - `Success`: The proof is verified and the transfer was successfully
        concluded

        - `Failure`: The proof is verified, but the transfer did not
        successfully conclude.

        - `Pending`: The transaction is still in progress (e.g., a transfer
        offer has been sent but not yet accepted in a two-step flow).
      type: string
      enum:
        - Success
        - Failure
        - Pending
    Error:
      type: object
      description: >-
        A problem occurred with processing the request. For instance:
        syntactically invalid JSON body, missing required fields, etc.
      required:
        - error
        - error_description
      properties:
        error:
          description: An error code, e.g. invalid_token
          type: string
          default: unknown_error
        error_description:
          description: A description of the error
          type: string
          default: Something went wrong
    InstrumentId:
      description: The identifier of the instrument.
      type: object
      required:
        - admin
        - id
      properties:
        admin:
          description: The party administering the instrument.
          type: string
        id:
          description: The unique identifier of the instrument.
          type: string
    TransferMeta:
      description: Additional metadata associated with the transfer.
      type: object
      required:
        - values
      properties:
        values:
          description: Arbitrary key-value metadata attached to the transfer.
          type: object
          additionalProperties:
            type: string
  responses:
    '400':
      description: bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    '500':
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

````