# Custom Fields ## Add Key `client.V1.CustomFields.AddKey(ctx, body) error` **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 - **body:** `V1CustomFieldAddKeyParams` - **EnforceUniqueness:** `param.Field[bool]` - **Entity:** `param.Field[V1CustomFieldAddKeyParamsEntity]` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - `V1CustomFieldAddKeyParamsEntity` - **Key:** `param.Field[string]` ### Example ```go package main import ( "context" "github.com/Metronome-Industries/metronome-go" "github.com/Metronome-Industries/metronome-go/option" ) func main() { client := metronome.NewClient( option.WithBearerToken("My Bearer Token"), ) err := client.V1.CustomFields.AddKey(context.TODO(), metronome.V1CustomFieldAddKeyParams{ EnforceUniqueness: metronome.F(true), Entity: metronome.F(metronome.V1CustomFieldAddKeyParamsEntityCustomer), Key: metronome.F("x_account_id"), }) if err != nil { panic(err.Error()) } } ``` ## Delete Values `client.V1.CustomFields.DeleteValues(ctx, body) error` **post** `/v1/customFields/deleteValues` Deletes one or more custom fields on an instance of a Metronome entity. ### Parameters - **body:** `V1CustomFieldDeleteValuesParams` - **Entity:** `param.Field[V1CustomFieldDeleteValuesParamsEntity]` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - `V1CustomFieldDeleteValuesParamsEntity` - **EntityID:** `param.Field[string]` - **Keys:** `param.Field[[]string]` ### Example ```go package main import ( "context" "github.com/Metronome-Industries/metronome-go" "github.com/Metronome-Industries/metronome-go/option" ) func main() { client := metronome.NewClient( option.WithBearerToken("My Bearer Token"), ) err := client.V1.CustomFields.DeleteValues(context.TODO(), metronome.V1CustomFieldDeleteValuesParams{ Entity: metronome.F(metronome.V1CustomFieldDeleteValuesParamsEntityCustomer), EntityID: metronome.F("99594816-e8a5-4bca-be21-8d1de0f45120"), Keys: metronome.F([]string{"x_account_id"}), }) if err != nil { panic(err.Error()) } } ``` ## List Keys `client.V1.CustomFields.ListKeys(ctx, params) (*V1CustomFieldListKeysResponse, error)` **post** `/v1/customFields/listKeys` List all active custom field keys, optionally filtered by entity type. ### Parameters - **params:** `V1CustomFieldListKeysParams` - **NextPage:** `param.Field[string]` Query param: Cursor that indicates where the next page of results should start. - **Entities:** `param.Field[[]V1CustomFieldListKeysParamsEntity]` Body param: Optional list of entity types to return keys for - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` - `V1CustomFieldListKeysParamsEntity` ### Returns - Not supported - **Data:** `[]V1CustomFieldListKeysResponseData` - **EnforceUniqueness:** `bool` - **Entity:** `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - `V1CustomFieldListKeysResponseDataEntity` - **Key:** `string` - **NextPage:** `string` ### Example ```go package main import ( "context" "fmt" "github.com/Metronome-Industries/metronome-go" "github.com/Metronome-Industries/metronome-go/option" ) func main() { client := metronome.NewClient( option.WithBearerToken("My Bearer Token"), ) response, err := client.V1.CustomFields.ListKeys(context.TODO(), metronome.V1CustomFieldListKeysParams{ Entities: metronome.F([]metronome.V1CustomFieldListKeysParamsEntity{metronome.V1CustomFieldListKeysParamsEntityCustomer}), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.Data) } ``` ## Remove Key `client.V1.CustomFields.RemoveKey(ctx, body) error` **post** `/v1/customFields/removeKey` Remove a key from the allow list for a given entity. ### Parameters - **body:** `V1CustomFieldRemoveKeyParams` - **Entity:** `param.Field[V1CustomFieldRemoveKeyParamsEntity]` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - `V1CustomFieldRemoveKeyParamsEntity` - **Key:** `param.Field[string]` ### Example ```go package main import ( "context" "github.com/Metronome-Industries/metronome-go" "github.com/Metronome-Industries/metronome-go/option" ) func main() { client := metronome.NewClient( option.WithBearerToken("My Bearer Token"), ) err := client.V1.CustomFields.RemoveKey(context.TODO(), metronome.V1CustomFieldRemoveKeyParams{ Entity: metronome.F(metronome.V1CustomFieldRemoveKeyParamsEntityCustomer), Key: metronome.F("x_account_id"), }) if err != nil { panic(err.Error()) } } ``` ## Set Values `client.V1.CustomFields.SetValues(ctx, body) error` **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 - **body:** `V1CustomFieldSetValuesParams` - **CustomFields:** `param.Field[map[string, string]]` - **Entity:** `param.Field[V1CustomFieldSetValuesParamsEntity]` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - `V1CustomFieldSetValuesParamsEntity` - **EntityID:** `param.Field[string]` ### Example ```go package main import ( "context" "github.com/Metronome-Industries/metronome-go" "github.com/Metronome-Industries/metronome-go/option" ) func main() { client := metronome.NewClient( option.WithBearerToken("My Bearer Token"), ) err := client.V1.CustomFields.SetValues(context.TODO(), metronome.V1CustomFieldSetValuesParams{ CustomFields: metronome.F(map[string]string{ "x_account_id": "KyVnHhSBWl7eY2bl", }), Entity: metronome.F(metronome.V1CustomFieldSetValuesParamsEntityCustomer), EntityID: metronome.F("99594816-e8a5-4bca-be21-8d1de0f45120"), }) if err != nil { panic(err.Error()) } } ```