# File Attachment Interaction

Sends an `AttachmentInteraction` interaction event from the client side to Salesforce when an end user sends a file.

This API applies to the following products:

- Bring Your Own Channel for CCaaS
- Bring Your Own Channel for Messaging

This API is available in version 61.0 and later.

When a file attachment is sent, a *“Success”* response means the Salesforce system has received and acknowledged the request and will begin uploading the file. During this time, the Service Console displays the message, *“Uploading file…”*. To track the upload status and get the latest results, subscribe to the `MessageUpdated` outbound event.

The request accepts non-ASCII or binary files and supports the most common image, audio, and video file types.

```sfdocs-code {"lang":"json", "title": "Supported File Types for   File Attachments" }
- "mimeType": "image/jpeg"
- "mimeType": "image/gif"
- "mimeType": "image/bmp"
- "mimeType": "image/png"
- "mimeType": "application/pdf"
- "mimeType": "video/3gpp2"
- "mimeType": "audio/3gpp2"
- "mimeType": "video/3gpp"
- "mimeType": "audio/3gpp"
- "mimeType": "video/mpeg"
- "mimeType": "audio/mpeg"
- "mimeType": "video/mp4"
- "mimeType": "audio/mp4"
```

Files can only be sent one at a time, and the maximum size of each file is 25 MB. The storage limit is the maximum size that your storage container allows.

## URI

`v1/interactions`

## HTTP Method

POST

## Headers

### Authorization (User-Level Authentication)

**Format:** `Bearer <Salesforce Access Token>`\
String. Standard header. Used to authenticate the user, where `<Salesforce Access Token>` is the Salesforce access token used as the bearer token to make requests to the Interaction Service APIs. Required.

### Content-Type

**Format:** `multipart/form-data`\
String. Standard header. Format of the request payload. Required for any request that includes a body.

### OrgId

**Format:** `<Salesforce Org ID>`\
String. Custom header. The Salesforce org. `<Salesforce Org ID>` is the 15-character Org ID of the Salesforce org. Required.

### RequestId

**Format:** `<UUID>`\
String. Custom header. Universally Unique Identifier (`<UUID>`) that references and tracks this request. Required.

### AuthorizationContext

**Format:** `<AuthorizationContext>`\
String. Custom header. Additional information for the request authorization used to authenticate and validate requests against the connected app scopes.

- For Bring Your Own Channel for CCaaS, set `<AuthorizationContext>` to the developer name of the ConversationChannelDefinition record. For example, Partner1\_ChannelDefinition1. Required.
- For Bring Your Own Channel for Messaging, set `<AuthorizationContext>` to the developer name of the ConversationChannelDefinition record. For example, Partner1\_ChannelDefinition1. Required.

### Sample Header

```
-H $'Authorization: Bearer 00DSG000009SWby!...LN8XxeRIxGe' \
-H "content-type: multipart/form-data" \
-H "OrgId: 00DSG000009SWby" \
-H "AuthorizationContext: Partner1_ChannelDefinition1" \
-H "RequestId: a1b23c45-c06a-4784-c96c-cb95d3321bda" \
```

## Parameters

| Property Name                | Type    | Description                                                                                                                                                                                                                                                                                                                 | Required |
| :--------------------------- | :------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- |
| to                           | string  | The channel address identifier. This is the globally unique ID for the conversation channel (`MessagingChannel.ChannelAddressIdentifier`).                                                                                                                                                                                  | Yes      |
| from                         | string  | The end user client identifier. This value comes from the partner system and can be up to 240 characters long.                                                                                                                                                                                                              | Yes      |
| interactions                 | array   | A list of interactions that are initiated by a messaging or voice rep or end user.                                                                                                                                                                                                                                          | Yes      |
| interactions.timestamp       | boolean | The date and time when the interaction was received by the Salesforce server.                                                                                                                                                                                                                                               | Yes      |
| interactions.interactionType | string  | The type of interaction. Possible values include: <br>- **EntryInteraction** to represent the type of interaction, such as an inbound message, a message sent failure, or a typing start or stop indicator. <br>- **AttachmentInteraction** to represent a file attachment that comes within the inbound messaging request. | Yes      |
| interactions.id              | string  | The unique ID for the interaction.                                                                                                                                                                                                                                                                                          | Yes      |
| interactions.attachmentIndex | integer | The zero-based index value of the file in the list of attachments for the interaction. Only one file per interaction is allowed, so set this value to **0** (zero).                                                                                                                                                         | Yes      |
| interactions.contentLength   | integer | The size of the file data measured in bytes. Specify the correct file size to ensure the file attachment uploads properly.                                                                                                                                                                                                  | Yes      |
| interactions.text            | string  | The text, if any, that's sent with the file.                                                                                                                                                                                                                                                                                | No       |

## Example

```sfdocs-code {"lang":"json", "title": "Sends a file attachment" }
{
  "to": "a12bc345-1303-44c2-866c-f30d546b58de",
  "from": "end-user-0001",
  "interactions": [{
    "timestamp": 1615454544,
    "interactionType": "AttachmentInteraction",
    "id": "8432240c-81c7-492c-baf4-2e4cf0995610",
    "attachmentIndex": 0,
    "contentLength": 10000,
    "text": "This is the picture."
  }]
}
```

## See Also

- *GitHub*: [Interaction Service APIs](https://github.com/salesforce-misc/interaction-service-apis)
