# MsgSetOutgoingApproval

A helper message to set a single outgoing approval for token transfers. This is a developer-friendly wrapper around `MsgUpdateUserApprovals` that simplifies setting individual outgoing approvals. For more information, we refer to the [MsgUpdateUserApprovals](https://docs.bitbadges.io/token-standard/messages/msg-update-user-approvals) documentation.

## Overview

This message allows you to set or update a single outgoing approval without having to construct the full `MsgUpdateUserApprovals` message. It automatically handles version management and validation.

## Proto Definition

```protobuf
message MsgSetOutgoingApproval {
  string creator = 1; // User setting the approval
  string collectionId = 2; // Target collection for approval
  UserOutgoingApproval approval = 3; // The outgoing approval to set
}

message MsgSetOutgoingApprovalResponse {
  string action = 1; // "created" or "edited"
  string version = 2; // The new version of the approval
  repeated string reviewItems = 3; // Advisory review items about the transaction
}
```

## Response

The response includes:

* **`action`**: Whether the approval was `"created"` or `"edited"`
* **`version`**: The new version number of the approval after the operation
* **`reviewItems`**: Advisory strings about the transaction (see [Review Items](https://github.com/trevormil/bitbadges-docs/blob/master/x-tokenization/concepts/approval-change-events.md#review-items))

## Usage Example

```bash
# CLI command
bitbadgeschaind tx tokenization set-outgoing-approval [collection-id] '[approval-json]' --from user-key
```

## Behavior

* **New Approval**: If the approval ID doesn't exist, a new approval is created with version 0
* **Update Existing**: If the approval ID already exists, the approval is updated and the version is incremented
* **No Change**: If the approval content hasn't changed, the version remains the same
* **Validation**: The approval is validated according to the collection's permissions and user's approval update permissions

## Authorization & Permissions

Users can only set their own outgoing approvals. The operation must be performed according to the permissions set (i.e. the `userPermissions` previously set for that user).

## Related Messages

* [MsgUpdateUserApprovals](https://docs.bitbadges.io/token-standard/messages/msg-update-user-approvals) - Full approval management
* [MsgDeleteOutgoingApproval](https://docs.bitbadges.io/token-standard/messages/msg-delete-outgoing-approval) - Delete an outgoing approval
* [MsgSetIncomingApproval](https://docs.bitbadges.io/token-standard/messages/msg-set-incoming-approval) - Set an incoming approval
