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

# Create a new custom object schema.

> Crie um novo esquema de objeto personalizado definindo Propriedades e associações.

export const ScopesList = ({scopes = [], description = "Esta API requer um dos seguintes escopos:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

export const SupportedProducts = ({marketing, sales, service, cms, marketingLevel, salesLevel, serviceLevel, cmsLevel}) => {
  const translations = {
    header: "Produtos suportados",
    description: "Requer um dos seguintes produtos ou superior.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub"
    },
    tiers: {
      free: "Grátis",
      starter: "Starter",
      professional: "Professional",
      enterprise: "Enterprise"
    }
  };
  const translateTier = tier => {
    if (!tier) return '';
    const lowerTier = tier.toLowerCase();
    return translations.tiers[lowerTier] || tier;
  };
  const products = [{
    name: marketing ? translations.productNames.marketing : '',
    level: translateTier(marketingLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/marketing-bolt.svg",
    alt: "Marketing Hub"
  }, {
    name: sales ? translations.productNames.sales : '',
    level: translateTier(salesLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/sales-star.svg",
    alt: "Sales Hub"
  }, {
    name: service ? translations.productNames.service : '',
    level: translateTier(serviceLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/service-heart.svg",
    alt: "Service Hub"
  }, {
    name: cms ? translations.productNames.cms : '',
    level: translateTier(cmsLevel),
    icon: "https://mintlify-assets.b-cdn.net/Icons/content-play.svg",
    alt: "Content Hub"
  }].filter(product => product.name && product.level);
  if (products.length === 0) return null;
  return <div>
      <div className="text-sm mb-2">{translations.description}</div>
      <div className={`grid ${products.length === 1 ? 'grid-cols-1' : 'grid-cols-2'} gap-1.5`}>
        {products.map((product, index) => <div key={index} style={{
    display: 'flex',
    alignItems: 'center'
  }}>
            <img src={product.icon} alt={product.alt} className="w-3.5 h-3.5 mr-1.5 mt-2.5 mb-2.5 flex-shrink-0 align-middle" />
            <span className="font-medium mr-1 text-sm">{product.name} -</span>
            <span className="text-sm">{product.level}</span>
          </div>)}
      </div>
    </div>;
};

<AccordionGroup>
  <Accordion title="Supported products" defaultOpen="true" icon="cubes">
    <SupportedProducts marketing={true} sales={true} service={true} cms={true} marketingLevel="ENTERPRISE" salesLevel="ENTERPRISE" serviceLevel="ENTERPRISE" cmsLevel="ENTERPRISE" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'crm.schemas.custom.write'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-03/crm-schemas-v2026-03.json POST /crm-object-schemas/2026-03/schemas
openapi: 3.0.1
info:
  title: Esquemas
  description: Basepom for all HubSpot Projects
  version: 2026-03
  x-hubspot-product-tier-requirements:
    marketing: ENTERPRISE
    sales: ENTERPRISE
    service: ENTERPRISE
    cms: ENTERPRISE
    commerce: ENTERPRISE
    crmHub: ENTERPRISE
    dataHub: ENTERPRISE
  x-hubspot-api-use-case: >-
    Crie um novo objeto para armazenar informações sobre carros em uma
    concessionária. A definição do objeto pode incluir propriedades para
    armazenar informações, bem como os filtros disponíveis na página de índice
    do objeto personalizado.
  x-hubspot-introduction: >-
    Use a API de esquema de objetos personalizados para definir novos tipos de
    registros do CRM na sua conta. Após configurar um esquema de objetos, você
    poderá criar registros para esse objeto personalizado no HubSpot e usando a
    API de objetos.
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Advanced
  - name: Basic
  - name: Batch
paths:
  /crm-object-schemas/2026-03/schemas:
    post:
      tags:
        - Basic
      summary: Crie um novo esquema de objeto personalizado.
      description: >-
        Crie um novo esquema de objeto personalizado definindo Propriedades e
        associações.
      operationId: post-/crm-object-schemas/2026-03/schemas_create
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ObjectSchemaEgg'
        required: true
      responses:
        '201':
          description: successful operation
          headers:
            Location:
              description: URL of the newly created resource
              style: simple
              explode: false
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectSchema'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - crm.schemas.custom.write
components:
  schemas:
    ObjectSchemaEgg:
      required:
        - allowsSensitiveProperties
        - associatedObjects
        - labels
        - name
        - properties
        - requiredProperties
        - searchableProperties
        - secondaryDisplayProperties
        - shouldCreateSameObjectAssociation
      type: object
      properties:
        allowsSensitiveProperties:
          type: boolean
          description: >-
            Determina se o tipo de objeto pode incluir propriedades marcadas
            como confidenciais.
        associatedObjects:
          type: array
          description: Associações definidas para este tipo de objeto.
          items:
            type: string
        description:
          type: string
          description: Uma breve explicação do tipo de objeto.
        labels:
          $ref: '#/components/schemas/ObjectTypeDefinitionLabels'
        name:
          type: string
          description: Um nome exclusivo para este objeto. Apenas para uso interno.
        primaryDisplayProperty:
          type: string
          description: >-
            O nome da propriedade principal para este objeto. Será exibido como
            principal na página de registro do HubSpot para este tipo de objeto.
        properties:
          type: array
          description: Propriedades definidas para este tipo de objeto.
          items:
            $ref: '#/components/schemas/ObjectTypePropertyCreate'
        requiredProperties:
          type: array
          description: >-
            Os nomes das propriedades que devem ser **obrigatórias** ao criar um
            objeto deste tipo.
          items:
            type: string
        searchableProperties:
          type: array
          description: >-
            Nomes das propriedades que serão indexadas para este tipo de objeto
            na pesquisa de produtos da HubSpot.
          items:
            type: string
        secondaryDisplayProperties:
          type: array
          description: >-
            Os nomes das propriedades secundárias para este objeto. Serão
            exibidas como secundárias na página do registro do HubSpot para este
            tipo de objeto.
          items:
            type: string
        shouldCreateSameObjectAssociation:
          type: boolean
    ObjectSchema:
      required:
        - allowsSensitiveProperties
        - archived
        - associations
        - fullyQualifiedName
        - id
        - labels
        - name
        - objectTypeId
        - properties
        - requiredProperties
        - searchableProperties
        - secondaryDisplayProperties
      type: object
      properties:
        allowsSensitiveProperties:
          type: boolean
        archived:
          type: boolean
        associations:
          type: array
          description: Associações definidas para um determinado tipo de objeto.
          items:
            $ref: '#/components/schemas/AssociationDefinition'
        createdAt:
          type: string
          description: Quando o esquema do objeto foi criado.
          format: date-time
        createdByUserId:
          type: integer
          format: int32
        description:
          type: string
        fullyQualifiedName:
          type: string
          description: >-
            Um ID exclusivo atribuído ao objeto, incluindo o ID do portal e o
            nome do objeto.
        id:
          type: string
          description: >-
            Um ID exclusivo para o tipo de objeto deste esquema. Será definido
            como {meta-type}-{unique ID}.
        labels:
          $ref: '#/components/schemas/ObjectTypeDefinitionLabels'
        name:
          type: string
          description: Um nome exclusivo para o tipo de objeto do esquema.
        objectTypeId:
          type: string
        primaryDisplayProperty:
          type: string
          description: >-
            O nome da propriedade principal para este objeto. Será exibido como
            principal na página de registro do HubSpot para este tipo de objeto.
        properties:
          type: array
          description: Propriedades definidas para este tipo de objeto.
          items:
            $ref: '#/components/schemas/Property'
        requiredProperties:
          type: array
          description: >-
            Os nomes das propriedades que devem ser **obrigatórias** ao criar um
            objeto deste tipo.
          items:
            type: string
        searchableProperties:
          type: array
          description: >-
            Nomes das propriedades que serão indexadas para este tipo de objeto
            na pesquisa de produtos da HubSpot.
          items:
            type: string
        secondaryDisplayProperties:
          type: array
          description: >-
            Os nomes das propriedades secundárias para este objeto. Serão
            exibidas como secundárias na página do registro do HubSpot para este
            tipo de objeto.
          items:
            type: string
        updatedAt:
          type: string
          description: Quando o esquema do objeto foi atualizado pela última vez.
          format: date-time
        updatedByUserId:
          type: integer
          format: int32
    ObjectTypeDefinitionLabels:
      type: object
      properties:
        plural:
          type: string
          description: >-
            A palavra para vários objetos. (Não é possível alterar isso mais
            tarde.)
        singular:
          type: string
          description: A palavra para um objeto. (Não é possível alterar isso mais tarde.)
    ObjectTypePropertyCreate:
      required:
        - fieldType
        - label
        - name
        - type
      type: object
      properties:
        description:
          type: string
          description: >-
            Uma descrição da propriedade que será exibida como texto de ajuda no
            HubSpot.
        displayOrder:
          type: integer
          description: >-
            A ordem em que esta propriedade deve ser exibida na interface do
            HubSpot em relação a outras propriedades para este tipo de objeto.
            As propriedades são exibidas em ordem, começando pelo menor valor
            inteiro positivo. Um valor de -1 fará com que a propriedade seja
            exibida **após** os valores positivos.
          format: int32
        externalOptionsReferenceType:
          type: string
          description: >-
            Especifica o tipo de referência para opções externas associadas à
            propriedade.
        fieldType:
          type: string
          description: Controla como a propriedade aparece no HubSpot.
        formField:
          type: boolean
          description: Se a propriedade pode ser usada em um formulário da HubSpot.
        groupName:
          type: string
          description: O nome do grupo ao qual esta propriedade pertence.
        hasUniqueValue:
          type: boolean
          description: >-
            Se o valor da propriedade deve ser exclusivo ou não. Uma vez
            definido, isso não pode ser alterado.
        hidden:
          type: boolean
          description: Opções ocultas não serão mostradas no HubSpot.
        label:
          type: string
          description: >-
            Um rótulo de propriedade legível por humanos que será exibido no
            HubSpot.
        name:
          type: string
          description: >-
            O nome interno da propriedade, que deve ser usado ao referenciar a
            propriedade na API.
        numberDisplayHint:
          type: string
          description: >-
            Controla como as propriedades numéricas são formatadas na UI do
            HubSpot
          enum:
            - currency
            - duration
            - formatted
            - percentage
            - probability
            - unformatted
        optionSortStrategy:
          type: string
          description: >-
            Controla como as opções de propriedade serão classificadas na UI do
            HubSpot.
          enum:
            - ALPHABETICAL
            - DISPLAY_ORDER
        options:
          type: array
          description: >-
            Uma lista de opções disponíveis para a propriedade. Este campo é
            obrigatório apenas para propriedades enumeradas.
          items:
            $ref: '#/components/schemas/OptionInput'
        referencedObjectType:
          type: string
          description: >-
            Define as opções que esta propriedade retornará, por exemplo, OWNER
            retornaria o nome dos usuários no portal.
        searchableInGlobalSearch:
          type: boolean
          description: >-
            Permitir que os usuários pesquisem as informações inseridas nesse
            campo (limitado a 3 propriedades)
        showCurrencySymbol:
          type: boolean
          description: Se a propriedade exibirá o símbolo da moeda na UI do HubSpot.
        textDisplayHint:
          type: string
          description: >-
            Controla como as propriedades de texto são formatadas na interface
            do HubSpot
          enum:
            - domain_name
            - email
            - ip_address
            - multi_line
            - phone_number
            - physical_address
            - postal_code
            - unformatted_single_line
        type:
          type: string
          description: O tipo de dados da propriedade.
          enum:
            - bool
            - date
            - datetime
            - enumeration
            - number
            - phone_number
            - string
    AssociationDefinition:
      required:
        - fromObjectTypeId
        - id
        - toObjectTypeId
      type: object
      properties:
        createdAt:
          type: string
          description: Quando a associação foi definida.
          format: date-time
        fromObjectTypeId:
          type: string
          description: O ID do tipo de objeto principal do qual vincular.
        id:
          type: string
          description: Um ID exclusivo para esta associação.
        name:
          type: string
          description: O nome exclusivo desta associação.
        toObjectTypeId:
          type: string
          description: A ID do objeto do CRM de destino ao qual vincular.
        updatedAt:
          type: string
          description: Quando a associação foi atualizada pela última vez.
          format: date-time
      description: The definition of an association
    Property:
      required:
        - description
        - fieldType
        - groupName
        - label
        - name
        - options
        - type
      type: object
      properties:
        archived:
          type: boolean
          description: Se a propriedade está arquivada ou não.
        archivedAt:
          type: string
          description: Quando a propriedade foi arquivada.
          format: date-time
        calculated:
          type: boolean
          description: >-
            Para propriedades padrão, verdadeiro indica que a propriedade é
            calculada por um processo da HubSpot. Não tem efeito para
            propriedades personalizadas.
        calculationFormula:
          type: string
          description: The formula used for calculated properties.
        createdAt:
          type: string
          description: Quando a propriedade foi criada
          format: date-time
        createdUserId:
          type: string
          description: >-
            O ID interno do usuário que criou a propriedade no HubSpot. Este
            campo pode não existir se a propriedade foi criada fora do HubSpot.
        currencyPropertyName:
          type: string
          description: The name of the related currency property.
        dataSensitivity:
          type: string
          description: >-
            Indicates the sensitivity level of the property, such as
            "non_sensitive", "sensitive", or "highly_sensitive".
          enum:
            - highly_sensitive
            - non_sensitive
            - sensitive
        dateDisplayHint:
          type: string
          description: >-
            Controla como as propriedades de data são exibidas na interface do
            HubSpot, com opções como "absolute", "absolute_with_relative",
            "time_since" e "time_until".
          enum:
            - absolute
            - absolute_with_relative
            - time_since
            - time_until
        description:
          type: string
          description: >-
            Uma descrição da propriedade que será exibida como texto de ajuda no
            HubSpot.
        displayOrder:
          type: integer
          description: >-
            A ordem em que esta propriedade deve ser exibida na interface do
            HubSpot em relação a outras propriedades para este tipo de objeto.
            As propriedades são exibidas em ordem, começando pelo menor valor
            inteiro positivo. Um valor de -1 fará com que a propriedade seja
            exibida **após** os valores positivos.
          format: int32
        externalOptions:
          type: boolean
          description: >-
            Para propriedades padrão, verdadeiro indica que as opções são
            armazenadas externamente às configurações da propriedade.
        fieldType:
          type: string
          description: Controla como a propriedade aparece no HubSpot.
        formField:
          type: boolean
          description: Se a propriedade pode ser usada em um formulário da HubSpot.
        groupName:
          type: string
          description: O nome do grupo de propriedades ao qual a propriedade pertence.
        hasUniqueValue:
          type: boolean
          description: >-
            Se o valor da propriedade deve ser exclusivo ou não. Uma vez
            definido, isso não pode ser alterado.
        hidden:
          type: boolean
          description: Opções ocultas não serão mostradas no HubSpot.
          example: false
        hubspotDefined:
          type: boolean
          description: >-
            Será verdadeiro para propriedades de objeto padrão incorporadas ao
            HubSpot.
        label:
          type: string
          description: >-
            Um rótulo de propriedade legível por humanos que será exibido no
            HubSpot.
        modificationMetadata:
          $ref: '#/components/schemas/PropertyModificationMetadata'
        name:
          type: string
          description: >-
            O nome interno da propriedade, que deve ser usado ao referenciá-la
            via API.
        numberDisplayHint:
          type: string
          description: >-
            Hint for how a number property is displayed and validated in
            HubSpot's UI. Can be: "unformatted", "formatted", "currency",
            "percentage", "duration", or "probability".
          enum:
            - currency
            - duration
            - formatted
            - percentage
            - probability
            - unformatted
        options:
          type: array
          description: >-
            Uma lista de opções válidas para a propriedade. Este campo é
            obrigatório para propriedades enumeradas, mas estará vazio para
            outros tipos de propriedade.
          items:
            $ref: '#/components/schemas/Option'
        referencedObjectType:
          type: string
          description: >-
            Se esta propriedade estiver relacionada a outro(s) objeto(s), ele(s)
            será(ão) listado(s) aqui.
        sensitiveDataCategories:
          type: array
          description: >-
            When sensitiveData is true, lists the type of sensitive data
            contained in the property (e.g., "HIPAA").
          items:
            type: string
        showCurrencySymbol:
          type: boolean
          description: >-
            Se a propriedade exibirá o símbolo da moeda definido nas
            configurações da conta.
        textDisplayHint:
          type: string
          description: >-
            Hint for how the text is displayed and validated in HubSpot's UI.
            Can be: "unformatted_single_line", "multi_line", "email",
            "phone_number", "domain_name", "ip_address", "physical_address", or
            "postal_code".
          enum:
            - domain_name
            - email
            - ip_address
            - multi_line
            - phone_number
            - physical_address
            - postal_code
            - unformatted_single_line
        type:
          type: string
          description: O tipo de dados da propriedade.
        updatedAt:
          type: string
          description: Quando o tipo de objeto foi atualizado pela última vez.
          format: date-time
        updatedUserId:
          type: string
          description: >-
            O ID de usuário interno do usuário que atualizou a propriedade no
            HubSpot. Este campo pode não existir se a propriedade foi atualizada
            fora do HubSpot.
      description: A HubSpot property
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: A categoria de erro
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexto sobre a condição do erro
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            Um identificador exclusivo para a solicitação. Inclua este valor em
            relatórios de erro ou tickets de suporte
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: mais informações sobre o erro
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Um mapa de nomes de links para URIs associados que contêm
            documentação sobre o erro ou as etapas de correção recomendadas
        message:
          type: string
          description: >-
            Uma mensagem legível por humanos que descreve o erro, juntamente com
            as etapas de correção, quando apropriado
          example: An error occurred
        subCategory:
          type: string
          description: >-
            Uma categoria específica que contém mais detalhes específicos sobre
            o erro
      example:
        message: Invalid input (details will vary based on the error)
        correlationId: aeb5f871-7f07-4993-9211-075dc63e7cbf
        category: VALIDATION_ERROR
        links:
          knowledge-base: https://www.hubspot.com/products/service/knowledge-base
    OptionInput:
      required:
        - displayOrder
        - hidden
        - label
        - value
      type: object
      properties:
        description:
          type: string
          description: Uma descrição da opção.
        displayOrder:
          type: integer
          description: >-
            As opções são mostradas em ordem, começando com o menor valor
            inteiro positivo. Valores de -1 farão com que a opção seja exibida
            após os valores positivos.
          format: int32
        hidden:
          type: boolean
          description: Opções ocultas não serão mostradas no HubSpot.
        label:
          type: string
          description: Um rótulo de opção legível por humanos que será exibido no HubSpot.
        value:
          type: string
          description: >-
            O valor interno da opção, que deve ser usado ao definir o valor da
            propriedade através da API.
    PropertyModificationMetadata:
      required:
        - archivable
        - readOnlyDefinition
        - readOnlyValue
      type: object
      properties:
        archivable:
          type: boolean
          description: Indica se a propriedade pode ser arquivada.
        readOnlyDefinition:
          type: boolean
          description: Indica se a definição da propriedade é somente leitura.
        readOnlyOptions:
          type: boolean
          description: Indica se as opções da propriedade são somente leitura.
        readOnlyValue:
          type: boolean
          description: Indica se o valor da propriedade é somente leitura.
    Option:
      required:
        - hidden
        - label
        - value
      type: object
      properties:
        description:
          type: string
          description: Uma descrição da opção.
        displayOrder:
          type: integer
          description: >-
            As opções são exibidas em ordem, começando com o menor valor inteiro
            positivo. Valores de -1 farão com que a opção seja exibida após os
            valores positivos.
          format: int32
        hidden:
          type: boolean
          description: Opções ocultas não serão exibidas no HubSpot.
        label:
          type: string
          description: Um rótulo de opção legível por humanos que será exibido no HubSpot.
        value:
          type: string
          description: >-
            O valor interno da opção, que deve ser usado ao definir o valor da
            propriedade através da API.
      description: A HubSpot property option
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: O código de status associado ao detalhe do erro
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexto sobre a condição do erro
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: O nome do campo ou parâmetro no qual o erro foi encontrado.
        message:
          type: string
          description: >-
            Uma mensagem legível por humanos que descreve o erro, juntamente com
            as etapas de correção, quando apropriado
        subCategory:
          type: string
          description: >-
            Uma categoria específica que contém mais detalhes específicos sobre
            o erro
  responses:
    Error:
      description: An error occurred.
      content:
        '*/*':
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.hubspot.com/oauth/authorize
          tokenUrl: https://api.hubapi.com/oauth/v1/token
          scopes:
            crm.objects.custom.highly_sensitive.read.v2: ''
            crm.objects.custom.read: ''
            crm.objects.custom.sensitive.read.v2: ''
            crm.objects.custom.sensitive.write.v2: ''
            crm.schemas.custom.read: ''
            crm.schemas.custom.write: ''
            oauth: ''

````