> ## Documentation Index
> Fetch the complete documentation index at: https://docs.outseta.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a custom property of accounts, people or deals.

> Send only the fields to change: fields left out keep their current values. The rules
for Label, SystemName, ControlType and ControlParams are those of adding a definition.
The Uid and EntityType in the request body are ignored; the definition must belong to
the entityType in the URL, otherwise 404.
            
ControlParams is replaced as a whole. To add an option to a Select, RadioList or
CheckboxList, read the definition, add the option to its Options and send the full
list: "{\"Options\":[\"Small\",\"Medium\",\"Large\",\"X-Large\"]}". Values already
stored on accounts, people or deals are not changed when an option is renamed or
removed.
            
Changing SystemName keeps the stored values, which are returned under the new name
from then on. Anything that uses the old name (API clients, sign-up and profile forms,
segments, Zapier or other integrations) has to be updated to the new name.



## OpenAPI

````yaml /api-reference/openapi.json put /api/v1/attributes/{entityType}/definitions/{definitionUid}
openapi: 3.0.0
info:
  title: Outseta API
  description: >-
    Outseta REST API. See the [API
    overview](https://docs.outseta.com/api-reference/overview) for
    authentication, field selection, pagination, filtering, errors, rate limits
    and webhooks.
  version: v1
servers:
  - url: https://{subdomain}.outseta.com
    description: Your Outseta account
    variables:
      subdomain:
        default: your-subdomain
        description: >-
          Your Outseta account subdomain — the part before ".outseta.com" in
          your admin URL.
security: []
paths:
  /api/v1/attributes/{entityType}/definitions/{definitionUid}:
    put:
      tags:
        - Attribute
      summary: Update a custom property of accounts, people or deals.
      description: >-
        Send only the fields to change: fields left out keep their current
        values. The rules

        for Label, SystemName, ControlType and ControlParams are those of adding
        a definition.

        The Uid and EntityType in the request body are ignored; the definition
        must belong to

        the entityType in the URL, otherwise 404.
                    
        ControlParams is replaced as a whole. To add an option to a Select,
        RadioList or

        CheckboxList, read the definition, add the option to its Options and
        send the full

        list: "{\"Options\":[\"Small\",\"Medium\",\"Large\",\"X-Large\"]}".
        Values already

        stored on accounts, people or deals are not changed when an option is
        renamed or

        removed.
                    
        Changing SystemName keeps the stored values, which are returned under
        the new name

        from then on. Anything that uses the old name (API clients, sign-up and
        profile forms,

        segments, Zapier or other integrations) has to be updated to the new
        name.
      operationId: Definition_UpdateDefinition
      parameters:
        - name: entityType
          in: path
          required: true
          description: 'The entity type the definition belongs to: Account, Person or Deal'
          schema:
            type: string
            nullable: true
          x-position: 1
        - name: definitionUid
          in: path
          required: true
          description: The definition's unique identifier
          schema:
            type: string
            nullable: true
          x-position: 2
      requestBody:
        x-name: definition
        description: The fields to change
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDefinitionRequest'
            example:
              ControlParams: '{"Options":["Small","Medium","Large","X-Large"]}'
        x-position: 3
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Definition'
        '400':
          description: >-
            A malformed definitionUid, or a validation error, for example a
            Label or SystemName that is taken, or a Select without options.
          content:
            application/json:
              schema:
                type: object
                example:
                  ErrorMessage: string
                  EntityValidationErrors:
                    - Entity: {}
                      TypeName: string
                      ValidationErrors: []
                additionalProperties: false
                properties:
                  ErrorMessage:
                    type: string
                    nullable: true
                  EntityValidationErrors:
                    type: array
                    nullable: true
                    items:
                      type: object
                      additionalProperties: false
                      properties:
                        Entity:
                          nullable: true
                        TypeName:
                          type: string
                          nullable: true
                        ValidationErrors:
                          type: array
                          nullable: true
                          items:
                            $ref: '#/components/schemas/FieldValidationError'
                      title: EntityValidationError
                title: ValidationError
        '401':
          description: Unauthorized
        '404':
          description: >-
            No definition with this Uid for the entityType, or the entityType is
            not Account, Person or Deal.
      security:
        - Bearer: []
        - ApiKey: []
components:
  schemas:
    UpdateDefinitionRequest:
      type: object
      description: >-
        The fields of a custom property that an update may change. Every field
        is optional:

        a field left out keeps its current value.
      additionalProperties: false
      properties:
        Label:
          type: string
          description: >-
            The name of the property shown in Outseta. Unique among the entity
            type's custom

            properties, and not the label of a standard property. Cannot be
            null.
        SystemName:
          type: string
          description: >-
            The name of the property in the API, webhooks and forms. Starts with
            a letter and holds

            only letters, numbers and _. Changing it keeps the stored values
            under the new name;

            anything that uses the old name has to be updated. Cannot be null.
          pattern: ^[A-Za-z][A-Za-z0-9_]*$
        ControlType:
          type: string
          description: >-
            The control used to fill in the property: Text, TextArea, Number,
            Date, Checkbox, Select,

            RadioList or CheckboxList. Cannot be null.
        ControlParams:
          type: string
          description: >-
            The control's settings: a JSON object serialized into a string,
            replaced as a whole.

            To add an option, send the full list, for example

            "{\"Options\":[\"Small\",\"Medium\",\"Large\",\"X-Large\"]}".
          nullable: true
    Definition:
      example:
        Uid: string
        _objectType: string
        Created: string
        Updated: string
        ActivityEventData: {}
        ControlType: string
        ControlParams: string
        Label: string
        SystemName: string
        EntityType: 0
        Position: 0
        Hidden: false
      allOf:
        - $ref: '#/components/schemas/AbstractQcountBean'
        - type: object
          additionalProperties: false
          properties:
            ControlType:
              type: string
              maxLength: 250
              nullable: true
            ControlParams:
              type: string
              nullable: true
            Label:
              type: string
              nullable: true
            SystemName:
              type: string
              nullable: true
            EntityType:
              $ref: '#/components/schemas/EntityType'
            Position:
              type: integer
              format: int32
              nullable: true
            Hidden:
              type: boolean
    FieldValidationError:
      type: object
      additionalProperties: false
      properties:
        ErrorCode:
          type: string
          nullable: true
        ErrorMessage:
          type: string
          nullable: true
        PropertyName:
          type: string
          nullable: true
    AbstractQcountBean:
      allOf:
        - $ref: '#/components/schemas/AbstractBean'
        - type: object
          additionalProperties: false
          required:
            - Qcount_Id
          properties:
            ActivityEventData:
              nullable: true
    EntityType:
      type: integer
      description: >-
        `0` - None, `1` - Account, `2` - Person, `3` - Deal, `4` - Case, `5` -
        Invoice, `6` - EmailLog, `7` - Plan, `8` - DiscountCoupon, `9` - AddOn,
        `10` - Task, `11` - Segment, `12` - Broadcast, `13` - Article
      x-enumNames:
        - None
        - Account
        - Person
        - Deal
        - Case
        - Invoice
        - EmailLog
        - Plan
        - DiscountCoupon
        - AddOn
        - Task
        - Segment
        - Broadcast
        - Article
      x-enum-descriptions:
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
        - ''
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10
        - 11
        - 12
        - 13
    AbstractBean:
      type: object
      x-abstract: true
      additionalProperties: false
      required:
        - Id
        - Created
        - CreatedByUser_Id
        - Updated
        - UpdatedByUser_Id
      properties:
        Uid:
          type: string
          maxLength: 10
          nullable: true
        _objectType:
          type: string
          nullable: true
        Created:
          type: string
          readOnly: true
          format: date-time
          minLength: 1
        Updated:
          type: string
          readOnly: true
          format: date-time
          minLength: 1
  securitySchemes:
    Bearer:
      type: http
      description: Enter your access token (OAuth / JWT).
      scheme: bearer
      bearerFormat: JWT
    ApiKey:
      type: apiKey
      description: 'Enter: Outseta {api_key}:{api_secret}'
      name: Authorization
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.