# Update Bundle

Adds service appointments to an existing bundle. This resource accepts a bundle ID and service appointment IDs. This API is not supported in Gov Cloud. This endpoint is available in version 54.0 and later of the Salesforce API.

## Add a Remote Site

1. From Setup, in the Quick Find box, enter `Security`, and then select **Remote Site Settings**.

2. Click **New Remote Site**.

3. Enter a name.

4. For Remote Site URL, enter `https://api.salesforce.com/`

5. Save your changes.

## Syntax

**URI**: `HOST/bundleflow/api/v1.0/bundle/{ID}`

Where `HOST` is a variable.

**Format**: JSON

**HTTP Method**: PATCH

**Authentication**: `Authorization: Bearer TOKEN`

Where `TOKEN` is a variable.

If the authentication token isn’t valid, a 401 HTTP status is returned.

**Headers**:

- `request.setHeader('x-sfdc-tenant-id', 'core/prod/ORG-ID_18_Characters');`—Field Service functional domain
- `sf_api_version`—Salesforce API version. Minimum version is 53.0.
- `Authorization`—Authorization token.
- `Content-Type`—File format. Valid value is `JSON`.
- `Referer`—Org domain URL.

**Parameters**:

| Parameter | Description              |
| --------- | ------------------------ |
| `ID`      | Unique ID of the bundle. |

## Request Body

The request body contains these properties.

| Field                  | Type   | Description                                                                 |
| ---------------------- | ------ | --------------------------------------------------------------------------- |
| `user`                 | String | Optional. User name of user sending the request.                            |
| `initiate`             | String | Type of bundle request. Valid value: `manual`.                              |
| `saRequestPayloads`    | Array  | Details of the service appointments to be added to this bundle.             |
| `serviceAppointmentId` | String | ID of a service appointment.                                                |
| `action`               | String | Bundling action performed on this service appointment. Valid values: `add`. |

## Example

This example shows a manual request to add two service appointments to a bundle.

```nolang
{
   "user":"Misha",
   "initiate":"manual",
   "saRequestPayloads":[
      {
         "serviceAppointmentId":"08px000000NzbmkAAB",
         "action":"add"
      },
      {
         "serviceAppointmentId":"08pT300000006LLIAY",
         "action":"add"
      }
   ]
}
```

## Response Body

The response body contains these properties.

| Field                   | Type   | Description                                                                                                                                    |
| ----------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| `bundleId`              | String | ID of the bundle to update. If the update isn’t successful, it’s `null`.                                                                       |
| `responsePayloads`      | Array  | Details of the service appointment objects that are part of the bundle request.                                                                |
| `objectName`            | String | Type of object. Output: `ServiceAppointment`.                                                                                                  |
| `objectId`              | String | ID of the service appointment.                                                                                                                 |
| `action`                | String | Bundling action performed on this service appointment. Valid values: `add`.                                                                    |
| `status`                | String | Status of updating the service appointment. Output: `SUCCESS` or `FAIL`.                                                                       |
| `messageCode`           | Number | Success or error code of updating the service appointment. 0 means success. The error codes are listed in [Error Responses](#error-responses). |
| `message`               | String | Success or error message of updating the service appointment.                                                                                  |
| `status`                | String | Status of the request. Output: `SUCCESS` or `FAIL`.                                                                                            |
| `messageCode`           | Number | Success or error code of the request. 0 means success. The error codes are listed in [Error Responses](#error-responses).                      |
| `message`               | String | Success or error message of the request.                                                                                                       |
| `messageAdditionalInfo` | String | More information provided by Salesforce.                                                                                                       |

## Example: Successful Response

This example shows a successful response of adding a service appointment to a bundle.

```nolang
{
    "bundleId": "08px000000OAkUXAA1",
    "responsePayloads": [
        {
            "objectName": "ServiceAppointment",
            "objectId": "08px000000OAjPRAA1",
            "action": "add",
            "status": "SUCCESS",
            "messageCode": "NONE",
            "message": "Success",
            "messageParams": []
        }
    ],
    "status": "SUCCESS",
    "messageCode": "NONE",
    "message": "Success"
}
```

## Example: Fail Response

This example shows the output of a request where the user entered an invalid service appointment ID.

```nolang
{
    "bundleId": *null*,
    "responsePayloads": [
        {
            "status": "FAIL",
            "messageCode": "GET_BUNDLE_INFO_FAILURE",
            "message": "Try again later.",
            "messageParams": []
        }
    ],
    "status": "FAIL",
    "messageCode": "ERROR_ADDING_TO_BUNDLE",
    "message": "We couldn't add the service appointment to the bundle.",
   "messageAdditionalInfo": ""
}
```

## Error Responses

| Code | Name                                                        | Message                                                                                                                             |
| ---- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| 0    | NONE                                                        | <Service Appointment ID#>: Success.                                                                                                 |
| 1    | UNSUPPORTED_VERSION                                         | Ask your admin to check the API version, then try again.                                                                            |
| 2    | SA_PAYLOAD_SHOULD_CONTAIN_ADD_ACTIONS_ONLY                  | Create bundles using add actions only.                                                                                              |
| 3    | EMPTY_BUNDLE_POLICY                                         | Enter an ID for the bundlePolicyId.                                                                                                 |
| 4    | EMPTY_BUNDLE_INITIATE                                       | Specify manual or auto for the initiate entry.                                                                                      |
| 5    | EMPTY_BUNDLE_SERVICE_APPOINTMENT                            | Add a bundle service appointment.                                                                                                   |
| 6    | SA_PAYLOAD_DUPLICATED_SAS                                   | Remove duplicate service appointment IDs.                                                                                           |
| 7    | SA_IS_BUNDLE                                                | <Service Appointment ID#>: Is already a bundle service appointment.                                                                 |
| 8    | SA_ALREADY_BUNDLED                                          | <Service Appointment ID#>: Is a bundle member service appointment in another bundle.                                                |
| 9    | STATUS_FORBIDDEN                                            | <Service Appointment ID#>: Can’t be bundled in the current status.                                                                  |
| 10   | SA_PAYLOAD_SHOULD_NOT_CONTAIN_MIX_ACTIONS                   | Send separate requests for add and remove actions.                                                                                  |
| 11   | SA_IS_NOT_BUNDLE                                            | Select a bundle service appointment and try again.                                                                                  |
| 12   | EXCEEDED_BUNDLE_MEMBERS_LIMIT                               | You reached the maximum number of service appointments for this bundle. Remove some of them and try again.                          |
| 13   | SA_PAYLOAD_SHOULD_CONTAIN_ONLY_BUNDLE_MEMBERS               | To remove bundle members from a bundle, include only service appointments that are bundle members.                                  |
| 14   | ERROR_IN_BASIC_VALIDATIONS                                  | We couldn’t bundle the service appointments.                                                                                        |
| 15   | ERROR_IN_LIMIT_VALIDATIONS                                  | N/A                                                                                                                                 |
| 16   | ERROR_IN_CRITERIA_VALIDATIONS                               | N/A                                                                                                                                 |
| 17   | ERROR_IN_SERVICE_TERRITORY_VALIDATIONS                      | Confirm or revise the service territories of the selected service appointments. Or ask your admin for help.                         |
| 18   | ERROR_IN_RESTRICTION_VALIDATIONS                            | Confirm or revise the selected service appointments. Or ask your admin to check the restriction policies.                           |
| 19   | EXCEEDED_BUNDLE_DURATION_LIMIT                              | N/A                                                                                                                                 |
| 20   | EMPTY_BODY                                                  | Fill in the request.                                                                                                                |
| 21   | SA_IS_NOT_BUNDLED                                           | <Service Appointment ID#>: Can’t remove a service appointment that isn’t in the bundle.                                             |
| 22   | ERROR_IN_AGGREGATION                                        | Confirm or revise the selected service appointments. Or ask your admin to check the aggregation policies.                           |
| 23   | ERROR_IN_PROPAGATION                                        | Confirm or revise the selected service appointments. Or ask your admin to check the propagation policies.                           |
| 24   | GET_POLICY_FAILURE                                          | Ask your admin to check the bundle policies, then try again.                                                                        |
| 25   | GET_CONFIG_FAILURE                                          | Ask your admin to check the bundle config, then try again.                                                                          |
| 26   | GET_BUNDLE_INFO_FAILURE                                     | Try again later.                                                                                                                    |
| 27   | ERROR_IN_LOGIC                                              | We couldn’t bundle the service appointments.                                                                                        |
| 28   | EMPTY_BUNDLE_MEMBERS                                        | Add bundle member service appointments.                                                                                             |
| 29   | EMPTY_BUNDLE_PARENT_WORK_ORDER_ID                           | Add the work order ID for the bundle service appointment.                                                                           |
| 30   | UNBUNDLE_REQUEST_ASSIGNED_RESOURCES_NOT_COMPATiBLE          | To unbundle a scheduled bundle, send assigned resources for each service appointment.                                               |
| 31   | EMPTY_OLD_VALUES                                            | To update a bundle, send the current values.                                                                                        |
| 32   | EMPTY_NEW_VALUES                                            | To update a bundle, send the new values.                                                                                            |
| 33   | SA_PAYLOAD_SHOULD_CONTAIN_AT_LEAST_ONE_ADD_OR_REMOVE_ACTION | To update a bundle, send at least one add or remove action.                                                                         |
| 34   | FORBIDDEN_FIELDS_IN_POLICY_OBJECT                           | Confirm or revise the selected service appointments. Or ask your admin to check the field names selected in the related policies.   |
| 35   | EMPTY_SERVICE_TERRITORY                                     | Add a Service Territory ID.                                                                                                         |
| 36   | EMPTY_START_TIME                                            | Add the interval’s start time.                                                                                                      |
| 37   | EMPTY_END_TIME                                              | Add the interval’s end time.                                                                                                        |
| 38   | ERROR_IN_BUNDLE_POLICY_RFC                                  | Confirm or revise the selected service appointments. Or ask your admin to check the recordset filter criteria in the bundle policy. |
| 39   | ERROR_IN_TIME_ZONE_VALIDATION                               | Select service appointments that are in the same time zone. Or ask your admin for help.                                             |
| 40   | ERROR_IN_LOGIC_UNBUNDLE                                     | We couldn’t unbundle the service appointment.                                                                                       |
| 41   | ERROR_CREATING_BUNDLE                                       | We couldn’t bundle the service appointments.                                                                                        |
| 42   | ERROR_ADDING_TO_BUNDLE                                      | We couldn’t add the service appointment to the bundle.                                                                              |
| 43   | ERROR_REMOVING_FROM_BUNDLE                                  | We couldn’t remove the service appointment from the bundle.                                                                         |
| 44   | ERROR_UNBUNDLING                                            | We couldn’t unbundle the service appointment.                                                                                       |
| 58   | ERROR_IN_MSW_VALIDATIONS                                    | We can’t bundle service appointments with dependencies. Remove the dependencies and try again.                                      |
| -500 | http error                                                  | Hmm… Something went wrong. Try again.                                                                                               |
