> ## Documentation Index
> Fetch the complete documentation index at: https://cantonfoundation-generated-references-json-api-reference-up.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Splice.Api.Token.AllocationRequestV1

> Documentation for Splice.Api.Token.AllocationRequestV1

This module defines the interface for an `AllocationRequest`, which is an interface that can be implemented by an app to request specific allocations from their users for the purpose of settling a DvP or a payment as part of an app's workflow.

## Interfaces

<div id="type-splice-api-token-allocationrequestv1-allocationrequest-90278">
  **interface** AllocationRequest
</div>

> A request by an app for allocations to be created to enable the execution of a settlement.
>
> Apps are free to use a single request spanning all senders or one request per sender.
>
> **viewtype** AllocationRequestView
>
> * <div id="type-splice-api-token-allocationrequestv1-allocationrequestreject-89381">
>     **Choice** AllocationRequest\_Reject
>   </div>
>
>   Reject an allocation request.
>
>   Implementations SHOULD allow any sender of a transfer leg to reject the allocation request, and thereby signal that they are definitely not going to create a matching allocation for the settlement.
>
>   Controller: actor
>
>   Returns: ChoiceExecutionMetadata
>
>   | Field     | Type      | Description                                                  |
>   | --------- | --------- | ------------------------------------------------------------ |
>   | actor     | Party     | The party rejecting the allocation request.                  |
>   | extraArgs | ExtraArgs | Additional context required in order to exercise the choice. |
>
> * <div id="type-splice-api-token-allocationrequestv1-allocationrequestwithdraw-15628">
>     **Choice** AllocationRequest\_Withdraw
>   </div>
>
>   Withdraw an allocation request as the executor.
>
>   Used by executors to withdraw the allocation request if they are unable to execute it; e.g., because a trade has been cancelled.
>
>   Controller: (DA.Internal.Record.getField @"executor" (DA.Internal.Record.getField @"settlement" (view this)))
>
>   Returns: ChoiceExecutionMetadata
>
>   | Field     | Type      | Description                                                  |
>   | --------- | --------- | ------------------------------------------------------------ |
>   | extraArgs | ExtraArgs | Additional context required in order to exercise the choice. |
>
> * **Choice** Archive
>
>   Controller: Signatories of implementing template
>
>   Returns: ()
>
>   (no fields)
>
> * **Method allocationRequest\_RejectImpl :** ContractId AllocationRequest -> AllocationRequest\_Reject -> Update ChoiceExecutionMetadata
>
> * **Method allocationRequest\_WithdrawImpl :** ContractId AllocationRequest -> AllocationRequest\_Withdraw -> Update ChoiceExecutionMetadata

## Data Types

<div id="type-splice-api-token-allocationrequestv1-allocationrequestview-51417">
  **data** AllocationRequestView
</div>

> View of `AllocationRequest`.
>
> Implementations SHOULD make sure that at least all senders of the transfer legs are observers of the implementing contract, so that their wallet can show the request to them.
>
> <div id="constr-splice-api-token-allocationrequestv1-allocationrequestview-59188">
>   AllocationRequestView
> </div>
>
> > | Field        | Type                | Description                                                                                                                                                                                                                                                        |
> > | ------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
> > | settlement   | SettlementInfo      | Settlement for which the assets are requested to be allocated.                                                                                                                                                                                                     |
> > | transferLegs | TextMap TransferLeg | Transfer legs that are requested to be allocated for the execution of the settlement keyed by their identifier. This may or may not be a complete list of transfer legs that are part of the settlement, depending on the confidentiality requirements of the app. |
> > | meta         | Metadata            | Additional metadata specific to the allocation request, used for extensibility.                                                                                                                                                                                    |
>
> **instance** Eq AllocationRequestView
>
> **instance** Show AllocationRequestView
>
> **instance** HasFromAnyView AllocationRequest AllocationRequestView
>
> **instance** HasInterfaceView AllocationRequest AllocationRequestView
>
> **instance** GetField "meta" AllocationRequestView Metadata
>
> **instance** GetField "settlement" AllocationRequestView SettlementInfo
>
> **instance** GetField "transferLegs" AllocationRequestView (TextMap TransferLeg)
>
> **instance** SetField "meta" AllocationRequestView Metadata
>
> **instance** SetField "settlement" AllocationRequestView SettlementInfo
>
> **instance** SetField "transferLegs" AllocationRequestView (TextMap TransferLeg)

## Functions

<div id="function-splice-api-token-allocationrequestv1-allocationrequestrejectimpl-48931">
  allocationRequest\_RejectImpl
  : AllocationRequest -> ContractId AllocationRequest -> AllocationRequest\_Reject -> Update ChoiceExecutionMetadata
</div>

<div id="function-splice-api-token-allocationrequestv1-allocationrequestwithdrawimpl-31866">
  allocationRequest\_WithdrawImpl
  : AllocationRequest -> ContractId AllocationRequest -> AllocationRequest\_Withdraw -> Update ChoiceExecutionMetadata
</div>
