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

# Update object type

> Partially update a CRM object type, including schema fields and spine-linking behavior such as linksToPerson and identityFields.



## OpenAPI

````yaml https://api.sapt.ai/openapi.json patch /projects/{projectId}/object-types/{typeSlug}
openapi: 3.1.0
info:
  title: Sapt Platform API
  version: 1.0.0
  description: >-
    API for Sapt platform - project management, authentication, and email
    services
servers:
  - url: https://api.sapt.ai
    description: Production
  - url: http://localhost:8787
    description: Local development
security: []
tags:
  - name: Accounts
    description: >-
      The social accounts connected to a project. Start here — the `id` of an
      account is the `socialAccountId` that every posting, scheduling and
      analytics call takes.
  - name: Actions
  - name: Ads
  - name: Agents
  - name: Analytics
    description: >-
      Account- and post-level organic performance for connected Instagram and
      Facebook accounts.
  - name: Assets
  - name: Auth
  - name: CMS
  - name: CRM
  - name: Calendar
  - name: Comments
    description: >-
      Read, reply to, hide and delete comments on published Instagram and
      Facebook posts.
  - name: Content Calendar
    description: >-
      Create, schedule, update and publish organic posts, and stage the media
      they carry. Publishing a post whose status is `failed` retries it.
  - name: Contracts
  - name: Conversions
    description: >-
      Meta server-side Conversions API (CAPI): discover pixels, connect a pixel
      + CAPI token, and send deduped server-side conversions.
  - name: Dashboard Sidebar
  - name: Emails
  - name: Engagement
    description: >-
      Act as the Page or account on published posts: comment, like, unlike, and
      delete a published post.
  - name: Geo
  - name: Google Ads
  - name: Google Analytics
  - name: Google Business
  - name: Integrations
    description: >-
      Connect third-party providers (Meta, Gmail, Google Business Profile, …).
      List providers, mint OAuth connect links, and poll connection status.
  - name: Invitations
  - name: Memory
  - name: OAuth Clients
  - name: Project Roles
  - name: Project Templates
  - name: Projects
  - name: Schedules
  - name: Service Accounts
  - name: Socials
    description: >-
      Organic social: the connected accounts, the content calendar, media
      staging, publishing, comments and engagement across Instagram, Facebook,
      TikTok, YouTube and Google Business Profile.
  - name: Team
  - name: Users
  - name: Web Analytics
  - name: Workflows
paths:
  /projects/{projectId}/object-types/{typeSlug}:
    patch:
      tags:
        - CRM
      summary: Update object type
      description: >-
        Partially update a CRM object type, including schema fields and
        spine-linking behavior such as linksToPerson and identityFields.
      operationId: updateObjectType
      parameters:
        - schema:
            type: string
            format: uuid
          required: true
          name: projectId
          in: path
        - schema:
            type: string
          required: true
          name: typeSlug
          in: path
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 80
                description:
                  type:
                    - string
                    - 'null'
                  maxLength: 500
                schema:
                  type: object
                  additionalProperties:
                    type: object
                    properties:
                      label:
                        type: string
                      description:
                        type: string
                      schema:
                        type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - string
                              - number
                              - boolean
                              - object
                              - reference
                              - image
                              - video
                              - document
                              - asset
                              - date
                              - select
                          required:
                            type: boolean
                          multiple:
                            type: object
                            properties:
                              minItems:
                                type: integer
                                minimum: 0
                              maxItems:
                                type: integer
                                minimum: 0
                              uniqueItems:
                                type: boolean
                          options:
                            type: object
                            additionalProperties: {}
                        required:
                          - type
                          - options
                    required:
                      - schema
                statuses:
                  type:
                    - array
                    - 'null'
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                        minLength: 1
                        maxLength: 40
                        pattern: ^[a-z][a-z0-9_]*$
                      label:
                        type: string
                        minLength: 1
                        maxLength: 60
                      color:
                        type: string
                        pattern: ^#[0-9a-fA-F]{6}$
                      isInitial:
                        type: boolean
                      isTerminal:
                        type: boolean
                      capiStage:
                        type: string
                        enum:
                          - lead
                          - qualified
                          - scheduled
                          - purchased
                    required:
                      - key
                      - label
                icon:
                  type:
                    - string
                    - 'null'
                  maxLength: 60
                color:
                  type:
                    - string
                    - 'null'
                  pattern: ^#[0-9a-fA-F]{3,8}$
                isPublicIngestable:
                  type: boolean
                linksToPerson:
                  type: boolean
                rejectUnknownFields:
                  type: boolean
                moderationConfig:
                  type:
                    - object
                    - 'null'
                  properties:
                    enabled:
                      type: boolean
                    mode:
                      type: string
                      enum:
                        - ai_flagged
                        - all_pending
                    aiModel:
                      type: string
                      minLength: 1
                      maxLength: 80
                    aiThreshold:
                      type: integer
                      minimum: 0
                      maximum: 100
                    customPrompt:
                      type: string
                      maxLength: 2000
                  required:
                    - enabled
                    - mode
                identityFields:
                  type: array
                  items:
                    type: string
                    minLength: 1
                    maxLength: 64
                acknowledgedFieldRemovals:
                  type: array
                  items:
                    type: string
                    minLength: 1
                    maxLength: 64
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  objectType:
                    type: object
                    properties:
                      slug:
                        type: string
                      name:
                        type: string
                      description:
                        type:
                          - string
                          - 'null'
                      kind:
                        type: string
                        enum:
                          - system
                          - user
                      icon:
                        type:
                          - string
                          - 'null'
                      color:
                        type:
                          - string
                          - 'null'
                      schema:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            label:
                              type: string
                            description:
                              type: string
                            schema:
                              type: object
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - string
                                    - number
                                    - boolean
                                    - object
                                    - reference
                                    - image
                                    - video
                                    - document
                                    - asset
                                    - date
                                    - select
                                required:
                                  type: boolean
                                multiple:
                                  type: object
                                  properties:
                                    minItems:
                                      type: integer
                                      minimum: 0
                                    maxItems:
                                      type: integer
                                      minimum: 0
                                    uniqueItems:
                                      type: boolean
                                options:
                                  type: object
                                  additionalProperties: {}
                              required:
                                - type
                                - options
                          required:
                            - schema
                      statuses:
                        type:
                          - array
                          - 'null'
                        items:
                          type: object
                          properties:
                            key:
                              type: string
                              minLength: 1
                              maxLength: 40
                              pattern: ^[a-z][a-z0-9_]*$
                            label:
                              type: string
                              minLength: 1
                              maxLength: 60
                            color:
                              type: string
                              pattern: ^#[0-9a-fA-F]{6}$
                            isInitial:
                              type: boolean
                            isTerminal:
                              type: boolean
                            capiStage:
                              type: string
                              enum:
                                - lead
                                - qualified
                                - scheduled
                                - purchased
                          required:
                            - key
                            - label
                      isPublicIngestable:
                        type: boolean
                      isHiddenFromUi:
                        type: boolean
                      linksToPerson:
                        type: boolean
                        description: >-
                          When true, writes for this type auto-attach or create
                          a Person spine record and store its id as personRefId.
                      linksToCompany:
                        type: boolean
                        description: >-
                          Reserved company attribution flag. Use Person spine
                          and declared CRM relations as the stable public model
                          unless company spine support is explicitly documented.
                      identityFields:
                        type:
                          - array
                          - 'null'
                        items:
                          type: string
                        description: >-
                          For the person type, fields used to match the Person
                          spine. For other types, fields used for same-type
                          upsert/dedupe behavior.
                      rejectUnknownFields:
                        type: boolean
                      relations:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            relationId:
                              type: string
                            label:
                              type: string
                            targetTypeSlug:
                              type: string
                            multiple:
                              type: boolean
                          required:
                            - relationId
                            - label
                            - targetTypeSlug
                            - multiple
                      createdAt:
                        type: string
                        format: date-time
                      updatedAt:
                        type: string
                        format: date-time
                    required:
                      - slug
                      - name
                      - description
                      - kind
                      - icon
                      - color
                      - schema
                      - statuses
                      - isPublicIngestable
                      - isHiddenFromUi
                      - linksToPerson
                      - linksToCompany
                      - identityFields
                      - rejectUnknownFields
                      - relations
                      - createdAt
                      - updatedAt
                required:
                  - objectType
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error message
                  code:
                    type: string
                    description: Error code for programmatic handling
                required:
                  - message
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error message
                  code:
                    type: string
                    description: Error code for programmatic handling
                required:
                  - message
        '404':
          description: Not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error message
                  code:
                    type: string
                    description: Error code for programmatic handling
                required:
                  - message
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error message
                  code:
                    type: string
                    description: Error code for programmatic handling
                required:
                  - message
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        JWT token obtained from /api/auth/token endpoint. Token is verified
        using JWKS and must include a valid user identifier.

````