# Update a data attribute

You can update a data attribute.

> 🚧 Updating the data type is not possible
>
> It is currently a dangerous action to execute changing a data attribute's type via the API. You will need to update the type via the UI instead.

Endpoint: PUT /data_attributes/{data_attribute_id}
Version: 2.15
Security: bearerAuth

## Header parameters:

  - `Intercom-Version` (string)
    Intercom API version.By default, it's equal to the version set in the app package.
    Enum: "1.0", "1.1", "1.2", "1.3", "1.4", "2.0", "2.1", "2.2", "2.3", "2.4", "2.5", "2.6", "2.7", "2.8", "2.9", "2.10", "2.11", "2.12", "2.13", "2.14"

## Path parameters:

  - `data_attribute_id` (integer, required)
    The data attribute id
    Example: 1

## Request fields (application/json):

  - `archived` (boolean)
    Whether the attribute is to be archived or not.

  - `description` (string)
    The readable description you see in the UI for the attribute.
    Example: "My Data Attribute Description"

  - `messenger_writable` (boolean)
    Can this attribute be updated by the Messenger

## Response 200 fields (application/json):

  - `type` (string)
    Value is data_attribute.
    Enum: "data_attribute"

  - `id` (integer)
    The unique identifier for the data attribute which is given by Intercom. Only available for custom attributes.
    Example: 12878

  - `model` (string)
    Value is contact for user/lead attributes and company for company attributes.
    Enum: "contact", "company"

  - `name` (string)
    Name of the attribute.
    Example: "paid_subscriber"

  - `full_name` (string)
    Full name of the attribute. Should match the name unless it's a nested attribute. We can split full_name on . to access nested user object values.
    Example: "custom_attributes.paid_subscriber"

  - `label` (string)
    Readable name of the attribute (i.e. name you see in the UI)
    Example: "Paid Subscriber"

  - `description` (string)
    Readable description of the attribute.
    Example: "Whether the user is a paid subscriber."

  - `data_type` (string)
    The data type of the attribute.
    Enum: "string", "integer", "float", "boolean", "date"

  - `options` (array)
    List of predefined options for attribute value.
    Example: ["true","false"]

  - `api_writable` (boolean)
    Can this attribute be updated through API
    Example: true

  - `messenger_writable` (boolean)
    Can this attribute be updated by the Messenger

  - `ui_writable` (boolean)
    Can this attribute be updated in the UI
    Example: true

  - `custom` (boolean)
    Set to true if this is a CDA
    Example: true

  - `archived` (boolean)
    Is this attribute archived. (Only applicable to CDAs)

  - `created_at` (integer)
    The time the attribute was created as a UTC Unix timestamp
    Example: 1671028894

  - `updated_at` (integer)
    The time the attribute was last updated as a UTC Unix timestamp
    Example: 1671028894

  - `admin_id` (string)
    Teammate who created the attribute. Only applicable to CDAs
    Example: "5712945"

## Response 400 fields (application/json):

  - `type` (string, required)
    The type is error.list
    Example: "error.list"

  - `request_id` (string,null)
    Example: "f93ecfa8-d08a-4325-8694-89aeb89c8f85"

  - `errors` (array, required)
    An array of one or more error objects

  - `errors.code` (string, required)
    A string indicating the kind of error, used to further qualify the HTTP response code
    Example: "unauthorized"

  - `errors.message` (string,null)
    Optional. Human readable description of the error.
    Example: "Access Token Invalid"

  - `errors.field` (string,null)
    Optional. Used to identify a particular field or query parameter that was in error.
    Example: "email"


