# Custom fields

Use custom fields to extend a resource scheme to include custom data that is not provided as a common field.
Depending on the resource on which the custom field is added, it may be available in the Rebilly UI.

Example: A custom field called `preferredCommunicationChannel` is added to the customer resource.
It has two allowed values, which are 'email' and 'phone'.

```js
{
  "customFields": {
      "preferredCommunicationChannel": "email"
  }
}
```

For detailed information on Rebilly resources, see [Resources](https://www.rebilly.com/docs/dev-docs/concepts/#resources).

## Retrieve custom fields

 - [GET /custom-fields/{resource}](https://www.rebilly.com/docs/dev-docs/api/custom-fields/getcustomfieldcollection.md): Retrieves the custom fields schema for a specified resource.

## Retrieve a custom field

 - [GET /custom-fields/{resource}/{name}](https://www.rebilly.com/docs/dev-docs/api/custom-fields/getcustomfield.md): Retrieves a specified custom field schema for a specified resource.

## Create or alter a custom field

 - [PUT /custom-fields/{resource}/{name}](https://www.rebilly.com/docs/dev-docs/api/custom-fields/putcustomfield.md): Creates or alters a specified custom field schema for a specified resource.

