# Updating a custom field arm The steps below explain how to update a custom field arm, which includes the arm name, its audiences, and its action. | Step | Name | Endpoint | Details | | --- | --- | --- | --- | | 1. | [List arms](/openapi/customfieldapi/custom-field-v3/listarms) | `POST /v3/companies/{companyId}/custom-fields/{customFieldId}/arms/list` | List all the arms created for a custom field.**URL path requires:** `companyId` retrieved from the [get company](/openapi/companyapi/companies/readcompany) API, and `customFieldId` from Step 1 of the [creating a custom field](/spotnana/custom_field_create_workflow) workflow or from the [listing custom fields](/spotnana/custom_field_list_workflow) workflow.**Request body:** Use the optional `searchText` field to filter and find a specific arm. You can also pass a `filter` object with `tripUsageTypes` to return only the arms that apply to particular trip usage types. The request body itself is required, so send an empty object if you do not need either field.**Response will contain:** the list of arms along with information such as the `id`, `name`, `audiences`, and `action`.**Note:** Inside an arm object the identifier property is called `id`, not `armId`.**Other APIs will use:** the `id` of the arm (also referred to as `armId` in other APIs). | | 1. | [Get arm](/openapi/customfieldapi/custom-field-v3/getarm) (optional) | `GET /v3/companies/{companyId}/custom-fields/{customFieldId}/arms/{armId}` | Retrieve and view a specific arm for a custom field.**URL path requires:** `companyId`, `customFieldId`, and `armId` from Step 1.**Response will contain:** a single arm, with its `id`, `name`, `audiences`, and `action`.**Other APIs will use:** the arm `id`. | | 1. | [Update arm](/openapi/customfieldapi/custom-field-v3/updatearm) | `PUT /v3/companies/{companyId}/custom-fields/{customFieldId}/arms/{armId}` | Update the details of an arm.**URL path requires:** `companyId`, `customFieldId`, and `armId` from Step 1.**Request body requires:** the full arm object, including `name` and `action`. The arm being updated is identified by the `armId` path parameter, not by the request body. Because this is a full replacement rather than a partial update, any optional field you leave out is cleared, so send the complete arm exactly as you want it to end up.**Response will contain:** a `200` status code indicating the update was successful. You can then view the updated information using the [get arm](/openapi/customfieldapi/custom-field-v3/getarm) API.**Note:** The update arm API can only be used to update the arm name, audiences, and action. If you wish to update the options (i.e., the responses) for an arm, use the [updating options for a custom field arm](/spotnana/custom_field_options_workflow) workflow. | | 1. | [Delete arm](/openapi/customfieldapi/custom-field-v3/deletearm) | `DELETE /v3/companies/{companyId}/custom-fields/{customFieldId}/arms/{armId}` | Delete a single arm from a custom field when it is no longer needed.**URL path requires:** `companyId`, `customFieldId`, and `armId` from Step 1.**Response will contain:** a `200` status code indicating the arm was deleted.**Note:** If the arm used a manually defined option list, its option group and all of the options in that group are removed with it.**Note:** A custom field with no arms never applies to any traveler. So deleting the last arm stops the custom field from appearing at checkout. |