# Custom Fields ## Add Key `v1.custom_fields.add_key(**kwargs) -> void` **post** `/v1/customFields/addKey` Add a key to the allow list for a given entity. There is a 100 character limit on custom field keys. ### Parameters - **enforce\_uniqueness:** `bool` - **entity:** `:alert | :billable_metric | :charge | 15 more` - `:alert` - `:billable_metric` - `:charge` - `:commit` - `:contract_credit` - `:contract_product` - `:contract` - `:credit_grant` - `:customer_plan` - `:customer` - `:discount` - `:invoice` - `:plan` - `:professional_service` - `:product` - `:rate_card` - `:scheduled_charge` - `:subscription` - **key:** `String` ### Example ```ruby require "metronome_sdk" metronome = MetronomeSDK::Client.new(bearer_token: "My Bearer Token") result = metronome.v1.custom_fields.add_key(enforce_uniqueness: true, entity: :customer, key: "x_account_id") puts(result) ``` ## Delete Values `v1.custom_fields.delete_values(**kwargs) -> void` **post** `/v1/customFields/deleteValues` Deletes one or more custom fields on an instance of a Metronome entity. ### Parameters - **entity:** `:alert | :billable_metric | :charge | 15 more` - `:alert` - `:billable_metric` - `:charge` - `:commit` - `:contract_credit` - `:contract_product` - `:contract` - `:credit_grant` - `:customer_plan` - `:customer` - `:discount` - `:invoice` - `:plan` - `:professional_service` - `:product` - `:rate_card` - `:scheduled_charge` - `:subscription` - **entity\_id:** `String` - **keys:** `Array[String]` ### Example ```ruby require "metronome_sdk" metronome = MetronomeSDK::Client.new(bearer_token: "My Bearer Token") result = metronome.v1.custom_fields.delete_values( entity: :customer, entity_id: "99594816-e8a5-4bca-be21-8d1de0f45120", keys: ["x_account_id"] ) puts(result) ``` ## List Keys `v1.custom_fields.list_keys(**kwargs) -> CustomFieldListKeysResponse` **post** `/v1/customFields/listKeys` List all active custom field keys, optionally filtered by entity type. ### Parameters - **next\_page:** `String` Cursor that indicates where the next page of results should start. - **entities:** `Array[:alert | :billable_metric | :charge | 15 more]` Optional list of entity types to return keys for - `:alert` - `:billable_metric` - `:charge` - `:commit` - `:contract_credit` - `:contract_product` - `:contract` - `:credit_grant` - `:customer_plan` - `:customer` - `:discount` - `:invoice` - `:plan` - `:professional_service` - `:product` - `:rate_card` - `:scheduled_charge` - `:subscription` ### Returns - `class CustomFieldListKeysResponse` - **data:** `Array[{ enforce_uniqueness, entity, key}]` - **enforce\_uniqueness:** `bool` - **entity:** `:alert | :billable_metric | :charge | 15 more` - `:alert` - `:billable_metric` - `:charge` - `:commit` - `:contract_credit` - `:contract_product` - `:contract` - `:credit_grant` - `:customer_plan` - `:customer` - `:discount` - `:invoice` - `:plan` - `:professional_service` - `:product` - `:rate_card` - `:scheduled_charge` - `:subscription` - **key:** `String` - **next\_page:** `String` ### Example ```ruby require "metronome_sdk" metronome = MetronomeSDK::Client.new(bearer_token: "My Bearer Token") response = metronome.v1.custom_fields.list_keys puts(response) ``` ## Remove Key `v1.custom_fields.remove_key(**kwargs) -> void` **post** `/v1/customFields/removeKey` Remove a key from the allow list for a given entity. ### Parameters - **entity:** `:alert | :billable_metric | :charge | 15 more` - `:alert` - `:billable_metric` - `:charge` - `:commit` - `:contract_credit` - `:contract_product` - `:contract` - `:credit_grant` - `:customer_plan` - `:customer` - `:discount` - `:invoice` - `:plan` - `:professional_service` - `:product` - `:rate_card` - `:scheduled_charge` - `:subscription` - **key:** `String` ### Example ```ruby require "metronome_sdk" metronome = MetronomeSDK::Client.new(bearer_token: "My Bearer Token") result = metronome.v1.custom_fields.remove_key(entity: :customer, key: "x_account_id") puts(result) ``` ## Set Values `v1.custom_fields.set_values(**kwargs) -> void` **post** `/v1/customFields/setValues` Sets one or more custom fields on an instance of a Metronome entity. If a key/value pair passed in this request matches one already set on the entity, its value will be overwritten. Any key/value pairs that exist on the entity that do not match those passed in this request will remain untouched. This endpoint is transactional and will update all key/value pairs or no key/value pairs. Partial updates are not supported. There is a 200 character limit on custom field values. ### Parameters - **custom\_fields:** `Hash[Symbol, String]` - **entity:** `:alert | :billable_metric | :charge | 15 more` - `:alert` - `:billable_metric` - `:charge` - `:commit` - `:contract_credit` - `:contract_product` - `:contract` - `:credit_grant` - `:customer_plan` - `:customer` - `:discount` - `:invoice` - `:plan` - `:professional_service` - `:product` - `:rate_card` - `:scheduled_charge` - `:subscription` - **entity\_id:** `String` ### Example ```ruby require "metronome_sdk" metronome = MetronomeSDK::Client.new(bearer_token: "My Bearer Token") result = metronome.v1.custom_fields.set_values( custom_fields: {x_account_id: "KyVnHhSBWl7eY2bl"}, entity: :customer, entity_id: "99594816-e8a5-4bca-be21-8d1de0f45120" ) puts(result) ```