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

# Update entity schema

> <Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Replaces an entity's JSON Schema with the one you send. This is a full replacement, not a merge. Anything you leave out is dropped from the schema.

This changes the app's live data model, so it takes effect immediately. It doesn't change the file that defines that model in the app's source code. Since Base44 rebuilds the live model whenever the file is written or the app's code is pulled from GitHub, a change made using this endpoint may be reverted.

To change the model for good, change the entities configuration files.

Pass `User` as the `entity_name` to set custom fields on the built-in user entity. Those fields can't redeclare `email` or `full_name`, which Base44 manages.



## OpenAPI

````yaml /developers/references/app-management/app-management-openapi.json put /api/apps/{app_id}/entity-schemas/{entity_name}
openapi: 3.1.0
info:
  title: Base44 App Management API
  version: 1.0.0
servers:
  - url: https://app.base44.com
security:
  - ApiKeyAuth: []
paths:
  /api/apps/{app_id}/entity-schemas/{entity_name}:
    put:
      summary: Update entity schema
      description: >-
        <Info>This API is in beta. Endpoints, fields, and behavior may still
        change, so avoid depending on it in production.</Info>


        Replaces an entity's JSON Schema with the one you send. This is a full
        replacement, not a merge. Anything you leave out is dropped from the
        schema.


        This changes the app's live data model, so it takes effect immediately.
        It doesn't change the file that defines that model in the app's source
        code. Since Base44 rebuilds the live model whenever the file is written
        or the app's code is pulled from GitHub, a change made using this
        endpoint may be reverted.


        To change the model for good, change the entities configuration files.


        Pass `User` as the `entity_name` to set custom fields on the built-in
        user entity. Those fields can't redeclare `email` or `full_name`, which
        Base44 manages.
      operationId: update_schema_api_apps__app_id__entity_schemas__entity_name__put
      parameters:
        - name: entity_name
          in: path
          required: true
          schema:
            type: string
            description: >-
              Name of the entity to replace, as returned by [List entity
              schemas](/api-reference/list-entity-schemas). Pass `User` to set
              the built-in user entity's custom fields.
            title: Entity Name
          description: >-
            Name of the entity to replace, as returned by [List entity
            schemas](/api-reference/list-entity-schemas). Pass `User` to set the
            built-in user entity's custom fields.
          example: Invoice
        - name: app_id
          in: path
          required: true
          schema:
            type: string
            description: ID of the app whose entity schemas you want to work with.
            title: App Id
          description: ID of the app whose entity schemas you want to work with.
          example: 6820f3a4e7b91d003c45a1f2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateEntitySchemaRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntitySchemaResponse'
        '400':
          description: >-
            The `entity_schema` is not a valid JSON Schema, the `User` schema
            redeclares `email` or `full_name`, or the schema sets row-level
            security rules Base44 cannot enforce.
        '401':
          description: Missing or invalid credentials.
        '403':
          description: >-
            You don't have editor access to this app, or your workspace API key
            lacks the `apps:deploy` scope.
        '404':
          description: >-
            App not found, or the app has no entity with this name (`User` is
            created instead of returning a 404).
        '409':
          description: >-
            The request is scoped to a feature branch. Entity schemas can only
            be changed on the main branch.
        '422':
          description: >-
            The request body is missing, or `entity_schema` is missing or is not
            an object. Whether it is a usable JSON Schema is checked after this
            and returns a 400.
components:
  schemas:
    UpdateEntitySchemaRequest:
      properties:
        entity_schema:
          additionalProperties: true
          type: object
          title: Entity Schema
          description: >-
            The entity's full [JSON
            Schema](/developers/backend/resources/entities/entity-schemas),
            replacing the stored one. Needs `"type": "object"` and a
            `properties` object, plus any `required` fields and [row-level
            security rules](/developers/backend/resources/entities/security)
            under `rls`.
          example:
            name: Invoice
            properties:
              amount:
                description: Total amount in cents
                type: number
              status:
                enum:
                  - draft
                  - sent
                  - paid
                type: string
            required:
              - amount
            rls:
              read:
                created_by: '{{user.email}}'
            type: object
      type: object
      required:
        - entity_schema
      title: UpdateEntitySchemaRequest
    EntitySchemaResponse:
      properties:
        entity_name:
          type: string
          title: Entity Name
          description: Name of the entity.
          example: Invoice
        entity_schema:
          additionalProperties: true
          type: object
          title: Entity Schema
          description: >-
            The entity's stored [JSON
            Schema](/developers/backend/resources/entities/entity-schemas),
            including its `properties`, `required` fields, and any [row-level
            security rules](/developers/backend/resources/entities/security)
            under `rls`. For the app's own entities it also carries a `name` key
            holding the entity name. For `User` it holds only the custom fields
            added on top of the built-in ones, and has no `name` key.
          example:
            name: Invoice
            properties:
              amount:
                description: Total amount in cents
                type: number
              status:
                enum:
                  - draft
                  - sent
                  - paid
                type: string
            required:
              - amount
            rls:
              read:
                created_by: '{{user.email}}'
            type: object
      type: object
      required:
        - entity_name
        - entity_schema
      title: EntitySchemaResponse
      description: One of an app's entities and its stored JSON Schema.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: api_key
      description: Personal API key.

````