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

# Update Button Layout

> Sparse-update a button layout. When `config` is provided, existing autoprovision rows are fully replaced.



## OpenAPI

````yaml https://api.voxo.co/v2/docs/openapi.json patch /v2/admin/button-layouts/{id}
openapi: 3.1.0
info:
  title: VOXO API
  description: VOXO Communication Platform API
  version: 2.0.0
servers:
  - url: https://api.voxo.co
security:
  - bearerAuth: []
paths:
  /v2/admin/button-layouts/{id}:
    patch:
      tags:
        - Button Layouts
      summary: Update Button Layout
      description: >-
        Sparse-update a button layout. When `config` is provided, existing
        autoprovision rows are fully replaced.
      parameters:
        - schema:
            type: integer
            exclusiveMinimum: 0
            maximum: 9007199254740991
          in: path
          name: id
          required: true
          description: Button Layout ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                  description: Button layout name
                startKey:
                  type: integer
                  exclusiveMinimum: 0
                  maximum: 9007199254740991
                  description: First button key in the layout range
                endKey:
                  type: integer
                  exclusiveMinimum: 0
                  maximum: 9007199254740991
                  description: Last button key in the layout range
                config:
                  description: Replacement button configuration (full delete + reinsert)
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: integer
                        exclusiveMinimum: 0
                        maximum: 9007199254740991
                        description: >-
                          Button key position (must fall within
                          startKey..endKey)
                      type:
                        type: string
                        enum:
                          - '0'
                          - '1'
                          - '9'
                          - '10'
                          - '13'
                          - '16'
                        description: >-
                          Button type code ('10' = Park, '13' = SpeedDial, '16'
                          = BLF | '0' = Grandstream SpeedDial, '1' = Grandstream
                          BLF, '9' = Grandstream Park)
                      name:
                        type: string
                        minLength: 1
                        maxLength: 255
                        description: Button display name
                      number:
                        type: string
                        pattern: ^(?=[\d*#]{2,16}$)[*#]?\d+$
                        description: >-
                          Button target number / extension number / parking
                          number
                    required:
                      - key
                      - type
                      - name
                      - number
                    additionalProperties: false
              additionalProperties: false
      responses:
        '200':
          description: Updated button layout
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: number
                    exclusiveMinimum: 0
                    description: Button Layout ID
                  tenantId:
                    type: number
                    exclusiveMinimum: 0
                    description: Tenant ID
                  name:
                    type: string
                    minLength: 1
                    maxLength: 255
                    description: Button layout name
                  startKey:
                    type: integer
                    exclusiveMinimum: 0
                    maximum: 9007199254740991
                    description: First button key
                  endKey:
                    type: integer
                    exclusiveMinimum: 0
                    maximum: 9007199254740991
                    description: Last button key
                  config:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: integer
                          exclusiveMinimum: 0
                          maximum: 9007199254740991
                          description: >-
                            Button key position (must fall within
                            startKey..endKey)
                        type:
                          type: string
                          description: >-
                            Button type code ('10' = Park, '13' = SpeedDial,
                            '16' = BLF)
                        name:
                          type: string
                          description: Button display name
                        number:
                          type: string
                          description: >-
                            Button target number / extension number / parking
                            number
                      required:
                        - key
                        - type
                        - name
                        - number
                      additionalProperties: false
                    description: Button configuration entries
                required:
                  - id
                  - tenantId
                  - name
                  - startKey
                  - endKey
                  - config
                additionalProperties: false
        '400':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  message:
                    type: string
                  code:
                    type: number
                  validationErrors:
                    type: array
                    items:
                      type: string
                required:
                  - name
                  - message
                  - code
                additionalProperties: false
        '403':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  message:
                    type: string
                  code:
                    type: number
                  validationErrors:
                    type: array
                    items:
                      type: string
                required:
                  - name
                  - message
                  - code
                additionalProperties: false
        '404':
          description: Error response
          content:
            application/json:
              schema:
                type: object
                properties:
                  name:
                    type: string
                  message:
                    type: string
                  code:
                    type: number
                  validationErrors:
                    type: array
                    items:
                      type: string
                required:
                  - name
                  - message
                  - code
                additionalProperties: false
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````