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

# CRM | Objets personnalisés

> Les objets personnalisés HubSpot permettent aux organisations de représenter et d'organiser ces données en fonction des besoins de vos activités avec l'API d'objets personnalisés.

> **Produits pris en charge**

> **Portées requises**

> **[Run in Postman](https://app.getpostman.com/run-collection/40a2452fc88665fbe786)**

Chaque compte HubSpot présente des objets CRM standard : contacts, entreprises, transactions et tickets. Pour représenter et organiser vos données de CRM en fonction des besoins de votre entreprise, vous pouvez également créer des objets personnalisés. Vous pouvez [créer un objet personnalisé](https://knowledge.hubspot.com/fr/object-settings/create-custom-objects) dans HubSpot ou utiliser l'API d'objets personnalisés pour définir des objets personnalisés, des propriétés et des associations avec d'autres objets CRM.

Ci-dessous, découvrez comment créer et gérer des objets personnalisés via l'API, et profitez d'un [exemple qui explique comment créer un objet personnalisé](#custom-object-example).

Pour en savoir plus sur la création d'objets personnalisés, consultez les articles suivants sur le blog pour les développeurs de HubSpot :

* [Comment créer des objets personnalisés évolutifs](https://developers.hubspot.com/blog/how-to-think-like-an-architect-by-building-scalable-custom-objects)
* [Comment créer des objets personnalisés à l'aide d'applications privées](https://developers.hubspot.com/blog/how-to-build-a-custom-object-using-private-apps)

> [!WARNING]
>
> ### Remarque :
>
> Les objets personnalisés sont spécifiques à chaque compte et, en fonction de votre abonnement, le nombre d'objets personnalisés que vous pouvez créer est limité. Découvrez-en davantage sur vos limites dans le [catalogue des produits et services de HubSpot](https://legal.hubspot.com/hubspot-product-and-services-catalog).

## Méthodes d'authentification

Vous pouvez créer, lire et mettre à jour des objets personnalisés via l'une des méthodes d'authentification suivantes :

* [OAuth](https://developers.hubspot.com/custom-objects-schema-pilot)
* [Jetons d'accès d'application privée](https://developers.hubspot.fr/docs/api-reference/auth-oauth-v1/guide.md)

## Créer un objet personnalisé

Pour créer un objet personnalisé, vous devez d'abord définir le schéma d'objet. Le schéma inclut le nom de l'objet, les propriétés et les associations à d'autres objets de CRM. Vous pouvez trouver les détails complets de la requête de schéma dans l'onglet *Schéma d'objet* en haut de cet article. Vous pouvez également consulter un exemple de requête [ci-dessous](#custom-object-example).

Pour créer le schéma d'objet personnalisé, effectuez une requête `POST` à `crm/v3/schemas`. Dans le corps de la requête, incluez les définitions de votre schéma d'objet, y compris son nom, ses propriétés et ses associations.

Lorsque vous nommez votre objet personnalisé, tenez compte des points suivants :

* Une fois que vous créez un objet, le nom et le libellé de l'objet ne peuvent pas être modifiés.
* Le nom peut uniquement contenir des lettres, des chiffres et des tirets bas.
* Le premier caractère du nom doit être une lettre.
* Les longs libellés peuvent être coupés dans certaines parties du produit.

Ci-dessous, consultez les définitions requises pour les propriétés et les associations de l'objet.

### Propriétés

Les propriétés que vous définissez dans le corps de la requête seront utilisées pour stocker des informations sur les fiches d'informations d'objets personnalisés individuelles.

> [!WARNING]
>
> ### Remarque :
>
> Vous pouvez avoir jusqu'à 10 [propriétés de valeur uniques](https://developers.hubspot.fr/docs/guides/crm/understanding-the-crm#:~:text=Creating%20your%20own%20unique%20identifiers) pour chaque objet personnalisé dans votre compte HubSpot.

Vous utiliserez vos propriétés définies pour remplir les champs suivants basés sur les propriétés :

* **requiredProperties :** les propriétés requises lors de la création d'une nouvelle fiche d'informations d'objet personnalisé.
* **searchableProperties :** les propriétés qui sont indexées pour la recherche dans HubSpot.
* **primaryDisplayProperty :** la propriété utilisée pour nommer des fiches d'informations d'objets personnalisés.
* \*\*secondaryDisplayProperties \*\*: les propriétés qui apparaissent sur les fiches d'informations individuelles sous primaryDisplayProperty.

![custom-object-secondary-display-properties0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/custom-object-secondary-display-properties0.png)

* La première propriété répertoriée dans `secondaryDisplayProperties` sera également ajoutée en tant que quatrième filtre sur la page index des objets s'il s'agit d'un des types de propriété suivants :

  * `string`
  * `number`
  * `enumeration`
  * `boolean`
  * `datetime`

![custom-object-dashboard-filter0](https://www.hubspot.fr/hubfs/Knowledge_Base_2021/Developer/custom-object-dashboard-filter0.png)

* Pour supprimer une propriété d'affichage de l'interface utilisateur, vous devez d'abord supprimer la propriété, puis la recréer.

Par défaut, lors de la création de propriétés durant la requête de schéma, le `type` de propriété est défini sur `string`, et le `fieldType` est défini sur `text`. Vous trouverez ci-dessous les valeurs que vous pouvez utiliser pour créer différents types de propriété.

| `type` | Description | Valeurs `fieldType` valides |
| - | - | - |
| `enumeration` | Une chaîne représentant un ensemble d'options, séparées par un point-virgule. | `booleancheckbox`, `checkbox`, `radio`, `select` |
| `date` | Une [valeur au format ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) représentant un jour, un mois et une année spécifiques. | `date` |
| `dateTime` | Une [valeur au format ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) représentant un jour, un mois, une année et une heure spécifiques. L'application HubSpot n'affichera pas l'heure. | `date` |
| `string` | Une chaîne de texte brut limitée à 65 536 caractères. | `file`, `text`, `textarea` |
| `number` | Une valeur numérique contenant des chiffres et au maximum une décimale. | `number` |

| `fieldType` | Description |
| - | - |
| `booleancheckbox` | Une entrée qui permet aux utilisateurs de sélectionner Oui ou Non. Lorsque vous l'utilisez dans un formulaire, cette case sera affichée comme une case à cocher unique. |
| `checkbox` | Une liste de cases à cocher qui permet à un utilisateur de sélectionner plusieurs options à partir d'un ensemble d'options pour la propriété. |
| `date` | Une valeur de date, affichée comme un sélecteur de date. |
| `file` | Permet de charger un fichier dans un formulaire. Stocké et affiché en tant que lien d'URL vers le fichier. |
| `number` | Une chaîne de chiffres ou de nombres sous forme décimale ou en notation scientifique. |
| `radio` | Une entrée qui permet aux utilisateurs de sélectionner l'une des options autorisées pour la propriété. Lorsque vous l'utilisez dans un formulaire, elle sera affichée comme un ensemble de cases d'option. |
| `select` | Une entrée déroulante qui permet aux utilisateurs de sélectionner l'une des options autorisées pour la propriété. |
| `text` | Une chaîne de texte brut, affichée dans une entrée de texte sur une seule ligne. |
| `textarea` | Une chaîne de texte brut, affichée dans une entrée de texte sur plusieurs lignes. |

### Associations

HubSpot associera automatiquement un objet personnalisé aux objets d'e-mail, de réunion, de note, de tâche, d'appel et de conversation. Vous pouvez également associer votre objet personnalisé à d'autres objets HubSpot standard ou à d'autres objets personnalisés.

Lors de la création d'associations via la requête de création de schéma, identifiez les objets standard en utilisant leurs noms et les objets personnalisés en utilisant leur valeur `objectTypeId`. *Par exemple :*

```json theme={null}

"associatedObjects": [
  "CONTACT",
  "COMPANY",
  "TICKET",
  "DEAL",
  "2-3453932"
]
```

## Récupérer des objets personnalisés existants

Pour récupérer tous les objets personnalisés, effectuez une requête `GET` à `/crm/v3/schemas`.

Pour récupérer un objet personnalisé spécifique, effectuez une requête `GET` à l'un des points de terminaison suivants :

* `/crm/v3/schemas/{fullyQualifiedName}`. Vous pouvez trouver l'élément

  `fullyQualifiedName` dans son schéma, qui est dérivé de `p{portal_id}_{object_name}`. Vous pouvez trouver l'identifiant de portail de votre compte à l'aide de l'[API d'informations de compte.](https://developers.hubspot.fr/docs/api-reference/account-account-info-v3/guide.md)

Par exemple, pour un compte avec un ID `1234` et un objet nommé `lender`, l'URL de votre requête peut ressembler à ce qui suit :

* [`https://api.hubapi.com/crm/v3/schemas/p1234_lende`](https://api.hubapi.com/crm/v3/schemas/p1234_lender)

## Récupérer des fiches d'informations d'objets personnalisés

Vous pouvez également récupérer les fiches d'informations d'un objet personnalisé.

* Pour récupérer une fiche d'informations spécifique par sa valeur d'ID, effectuez une requête `GET` à `crm/v3/objects/{objectType}/{recordId}`.

Pour ce point de terminaison, vous pouvez inclure les paramètres suivants dans l'URL de la requête :

| Paramètre | Description |
| - | - |
| `properties` | Une liste séparée par des virgules des propriétés à renvoyer dans la réponse. Si la fiche d'informations d'objet personnalisé demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. |
| `propertiesWithHistory` | Une liste séparée par des virgules des propriétés actuelles et historiques à renvoyer dans la réponse. Si la fiche d'informations d'objet personnalisé demandée n'a pas de valeur pour une propriété, elle n'apparaîtra pas dans la réponse. |
| `associations` | Une liste séparée par des virgules des objets pour lesquels récupérer les ID associés. Les associations spécifiées qui n'existent pas ne seront pas renvoyées dans la réponse. Découvrez-en davantage sur l'[API des associations.](https://developers.hubspot.fr/docs/api-reference/crm-associations-v4/guide.md) |

* Pour récupérer plusieurs fiches d'informations, effectuez une requête `POST` à `crm/v3/objects/{objectType}/batch/read`. Le point de terminaison du lot ne peut pas récupérer les associations. Découvrez comment lire par lots les associations avec l'API [des associations](https://developers.hubspot.fr/docs/api-reference/crm-associations-v4/guide.md).

Dans votre requête, vous pouvez récupérer les fiches d'informations selon leur ID (`hs_object_id`) ou une [propriété d'identifiant unique personnalisée.](https://developers.hubspot.fr/docs/api-reference/crm-properties-v3/guide.md#create-unique-identifier-properties) Par défaut, les valeurs `id` dans la requête font référence à l'ID de fiche d'informations, de sorte que le paramètre `idProperty` n'est pas requis lors de la récupération par ID de fiche d'informations. Pour utiliser une propriété de valeur unique personnalisée, vous devez inclure le paramètre `idProperty`.

Par exemple, pour récupérer un lot fiches d'informations d'objet personnalisé, votre requête peut ressembler à ce qui suit :

```json theme={null}
{
  "properties": ["petname"],
  "inputs": [
    {
      "id": "12345"
    },
    {
      "id": "67891"
    }
  ]
}
```

```json theme={null}
{
  "properties": ["petname"],
  "idProperty": "uniquepropertyexample",
  "inputs": [
    {
      "id": "abc"
    },
    {
      "id": "def"
    }
  ]
}
```

Pour récupérer des fiches d'informations d'objets personnalisés avec des valeurs actuelles et historiques pour une propriété, votre requête peut ressembler à ceci :

```json theme={null}
{
  "propertiesWithHistory": ["pet_owner"],
  "inputs": [
    {
      "id": "12345"
    },
    {
      "id": "67891"
    }
  ]
}
```

## Mettre à jour des objets personnalisés existants

Pour mettre à jour le schéma d'un objet, effectuez une requête `PATCH` à `https://api.hubapi.com/crm/v3/schemas/{objectTypeId}`.

Une fois votre objet personnalisé défini :

* Le nom et les libellés de l'objet (singulier et pluriel) ne peuvent pas être modifiés.
* Les propriétés `requiredProperties`, `searchableProperties`, `primaryDisplayProperty` et `secondaryDisplayProperties` peuvent être modifiés en mettant à jour le schéma de l'objet. Pour définir une nouvelle propriété en tant que propriété obligatoire, consultable ou d'affichage, vous devez créer la propriété avant de mettre à jour le schéma.
* Vous pouvez créer et modifier des propriétés d'objets personnalisés [dans HubSpot](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties#view-and-edit-properties) ou via l'[API de propriétés](https://developers.hubspot.fr/docs/api-reference/crm-properties-v3/guide.md).

### Mettre à jour des associations

Pour ajouter d'autres associations d'objets à votre objet personnalisé, effectuez une requête `POST` à `/crm/v3/schemas/_{objectTypeId}_/associations`.

Vous ne pouvez associer votre objet personnalisé qu'à des objets HubSpot standard (par exemple : *contact*, *entreprise*, *transaction* ou *ticket*) ou d'autres objets personnalisés. Dans le champ `toObjectTypeId`, identifiez les objets personnalisés par leur valeur `objectTypeId` et les objets standard par leur nom. Par exemple :

```json theme={null}
{
  "fromObjectTypeId": "2-3444025",
  "toObjectTypeId": "ticket",
  "name": "cat_to_ticket"
}
```

## Supprimer un objet personnalisé

Vous ne pouvez supprimer un objet personnalisé qu'après la suppression de toutes les instances d'objet de ce type. Pour supprimer un objet personnalisé, effectuez une requête `DELETE` à `/crm/v3/schemas/{objectType}`.

Si vous devez créer un nouvel objet personnalisé portant le même nom que l'objet supprimé, vous devez supprimer le schéma en effectuant une requête `DELETE` à `/crm/v3/schemas/{objectType}?archived=true`. Vous ne pouvez supprimer un type d'objet personnalisé qu'après la suppression de toutes les instances d'objet de ce type, associations et propriétés d'objet personnalisé.

## Exemple d'objet personnalisé

Cet exemple explique comment créer un objet personnalisé. Pour de plus amples détails sur les requêtes affichées, consultez l'onglet Définition d'objet en haut de l'article.

Cette section aborde :

1. La création d'un schéma d'objet personnalisé
2. La création d'une fiche d'informations d'objet personnalisé
3. L'association d'une fiche d'informations d'objet personnalisé à un contact HubSpot
4. La création d'une nouvelle définition d'association entre l'objet personnalisé et le ticket HubSpot
5. La création d'une nouvelle définition de propriété
6. La mise à jour du schéma d'objet (c.-à-d. : `secondaryDisplayProperties`) avec la nouvelle propriété

   ***

**Objectif :** un concessionnaire automobile appelé CarSpot souhaite stocker son inventaire dans HubSpot à l'aide d'un objet personnalisé. Pour suivre la propriété et les achats des véhicules, il associe ces derniers à des fiches d'informations de contact. Parallèlement, il suivra également l'entretien des véhicules à l'aide de tickets HubSpot et de propriétés personnalisées.

### Création du schéma d'objet

CarSpot doit créer un schéma d'objet qui peut représenter les attributs suivants en tant que propriétés :

1. **État (neuf ou occasion) :** énumération
2. **Date de réception chez le concessionnaire :** date
3. **Année :** nombre
4. **Marque :** chaîne
5. **Modèle :** chaîne
6. **NIV :** chaîne (valeur unique)
7. **Couleur :** chaîne
8. **Kilométrage :** nombre
9. **Prix :** nombre
10. **Remarques :** chaîne

Le concessionnaire ajoutera également une définition expliquant comment utiliser l'objet et définira une association entre l'objet personnalisé et l'objet de contact standard afin d'associer des véhicules à des acheteurs potentiels.

Une fois le modèle de données finalisé, le concessionnaire créera le schéma d'objet en effectuant une requête `POST` à `/crm/v3/schemas` avec le corps de la requête suivant :

```json theme={null}
{
  "name": "cars",
  "description": "Cars keeps track of cars currently or previously held in our inventory.",
  "labels": {
    "singular": "Car",
    "plural": "Cars"
  },
  "primaryDisplayProperty": "model",
  "secondaryDisplayProperties": ["make"],
  "searchableProperties": ["year", "make", "vin", "model"],
  "requiredProperties": ["year", "make", "vin", "model"],
  "properties": [
    {
      "name": "condition",
      "label": "Condition",
      "type": "enumeration",
      "fieldType": "select",
      "options": [
        {
          "label": "New",
          "value": "new"
        },
        {
          "label": "Used",
          "value": "used"
        }
      ]
    },
    {
      "name": "date_received",
      "label": "Date received",
      "type": "date",
      "fieldType": "date"
    },
    {
      "name": "year",
      "label": "Year",
      "type": "number",
      "fieldType": "number"
    },
    {
      "name": "make",
      "label": "Make",
      "type": "string",
      "fieldType": "text"
    },
    {
      "name": "model",
      "label": "Model",
      "type": "string",
      "fieldType": "text"
    },
    {
      "name": "vin",
      "label": "VIN",
      "type": "string",
      "hasUniqueValue": true,
      "fieldType": "text"
    },
    {
      "name": "color",
      "label": "Color",
      "type": "string",
      "fieldType": "text"
    },
    {
      "name": "mileage",
      "label": "Mileage",
      "type": "number",
      "fieldType": "number"
    },
    {
      "name": "price",
      "label": "Price",
      "type": "number",
      "fieldType": "number"
    },
    {
      "name": "notes",
      "label": "Notes",
      "type": "string",
      "fieldType": "text"
    }
  ],
  "associatedObjects": ["CONTACT"]
}
```

> [!TIP]
>
> Après avoir créé le schéma de l'objet, CarSpot s'assure de noter le champ `{objectTypeId}` du nouvel objet, car il l'utilisera plus tard pour récupérer et mettre à jour l'objet. Ils peuvent également utiliser la valeur `{fullyQualifiedName}` s'ils le préfèrent.

### Création d'un enregistrement de l'objet personnalisé

*Une fois l'objet personnalisé créé, CarSpot peut désormais créer des fiches d'informations d'objet pour chaque véhicule de son inventaire.*

*Le concessionnaire créera son premier véhicule en effectuant une requête `POST` à `/crm/v3/objects/2-3465404` avec le corps suivant :*

```json theme={null}
{
  "properties": {
    "condition": "used",
    "date_received": "1582416000000",
    "year": "2014",
    "make": "Nissan",
    "model": "Frontier",
    "vin": "4Y1SL65848Z411439",
    "color": "White",
    "mileage": "80000",
    "price": "12000",
    "notes": "Excellent condition. No accidents."
  }
}
```

La réponse pour cet appel d'API se présente comme suit :

```json theme={null}
{
  "id": "181308",
  "properties": {
    "color": "White",
    "condition": "used",
    "make": "Nissan",
    "mileage": "80000",
    "model": "Frontier",
    "vin": "4Y1SL65848Z411439",
    "notes": "Excellent condition. No accidents.",
    "price": "12000",
    "year": "2014",
    "date_received": "1582416000000"
  },
  "createdAt": "2020-02-23T01:44:11.035Z",
  "updatedAt": "2020-02-23T01:44:11.035Z",
  "archived": false
}
```

Une fois la fiche d'informations créée, il peut utiliser la valeur `id` pour associer ultérieurement le véhicule à un contact existant.

> [!WARNING]
>
> Pour récupérer ultérieurement cette fiche d'informations avec des propriétés spécifiques, il peut effectuer une requête `GET` à `https://api.hubapi.com/crm/v3/objects/2-3465404/181308?portalId=1234567&properties=year&properties=make&properties=model`

### Association de la fiche d'informations d'objet personnalisé à une autre fiche d'informations

Vous pouvez utiliser l'ID de fiche d'informations de la nouvelle voiture (`181308`) et l'ID d'une autre fiche d'informations pour associer une fiche d'informations d'objet personnalisé à une fiche d'informations d'un autre objet.

Pour créer une association, effectuez une requête `PUT` à `/crm/v3/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}/{associationType}`. Si la relation d'objet est déjà [définie](#defining-a-new-association), pour déterminer la valeur `associationType`, effectuez une requête `GET` à `crm/v3/schemas/{objectType}`.

Par exemple, avec l'*ID `51` de contact et le type d'association `75`,* CarSpot peut associer la fiche d'informations de la voiture à un contact. Utilisant les ID ci-dessus, l'URL de la requête sera créée comme suit :

`https://api.hubspot.com/crm/v3/objects/2-3465404/181308/associations/contacts/51/75`

### Définition d'une nouvelle association

CarSpot souhaite maintenant commencer à suivre les services après-vente pour ses véhicules. Pour ce faire, il utilisera les tickets HubSpot pour enregistrer tout entretien effectué.

Pour autoriser les associations entre les véhicules et les tickets, il créera une nouvelle association en effectuant une requête `POST` à **`/crm/v3/schemas/2-3465404/associations`** avec le corps suivant :

```json theme={null}
{
  "fromObjectTypeId": "2-3465404",
  "toObjectTypeId": "ticket",
  "name": "car_to_ticket"
}
```

La réponse pour cet appel d'API se présente comme suit :

```json theme={null}
{
  "id": "121",
  "createdAt": "2020-02-23T01:52:12.893826Z",
  "updatedAt": "2020-02-23T01:52:12.893826Z",
  "fromObjectTypeId": "2-3465404",
  "toObjectTypeId": "0-5",
  "name": "car_to_ticket"
}
```

> [!NOTE]
>
> Lors de la création d'une association entre deux objets personnalisés, spécifiez les objets personnalisés par leur *objectTypeId* dans le champ *toObjectTypeId*. Pour les objets standard, vous pouvez les identifier par leur nom ou utiliser les valeurs suivantes :
>
> * **Contact :** 0-1
> * **Entreprise :** 0-2
> * **Transaction :** 0-3
> * **Ticket :** 0-5

### Définition d'une nouvelle propriété

Alors qu'il continue de suivre les entretiens, CarSpot voit une opportunité de regrouper ses services d'entretien dans des forfaits. Pour suivre ces forfaits d'entretien sur des fiches d'informations de véhicule individuelles, il créera une nouvelle propriété d'énumération contenant les forfaits disponibles.

Pour définir une nouvelle propriété, il effectuera une requête `POST` à `/crm/v3/properties/2-3465404` avec le corps de requête suivant :

```json theme={null}
{
  "groupName": "car_information",
  "name": "maintenance_package",
  "label": "Maintenance Package",
  "type": "enumeration",
  "fieldType": "select",
  "options": [
    {
      "label": "Basic",
      "value": "basic"
    },
    {
      "label": "Oil change only",
      "value": "oil_change_only"
    },
    {
      "label": "Scheduled",
      "value": "scheduled"
    }
  ]
}
```

La réponse pour cet appel d'API se présente comme suit :

```json theme={null}
{
  "updatedAt": "2020-02-23T02:08:20.055Z",
  "createdAt": "2020-02-23T02:08:20.055Z",
  "name": "maintenance_package",
  "label": "Maintenance Package",
  "type": "enumeration",
  "fieldType": "select",
  "groupName": "car_information",
  "options": [
    {
      "label": "Basic",
      "value": "basic",
      "displayOrder": -1,
      "hidden": false
    },
    {
      "label": "Oil change only",
      "value": "oil_change_only",
      "displayOrder": -1,
      "hidden": false
    },
    {
      "label": "Scheduled",
      "value": "scheduled",
      "displayOrder": -1,
      "hidden": false
    }
  ],
  "displayOrder": -1,
  "calculated": false,
  "externalOptions": false,
  "archived": false,
  "hasUniqueValue": false,
  "hidden": false,
  "modificationMetadata": {
    "archivable": true,
    "readOnlyDefinition": false,
    "readOnlyValue": false
  },
  "formField": false
}
```

Une fois que cette propriété est créée, il souhaite que cette propriété apparaisse dans la barre latérale de chaque fiche d'informations de véhicule afin que les informations soient facilement disponibles pour ses commerciaux et mécaniciens. Pour cela, il ajoutera la propriété à `secondaryDisplayProperties` en effectuant une requête `PATCH` à `/crm/v3/schemas/2-3465404` avec le corps suivant :

```json theme={null}
{
  "secondaryDisplayProperties": ["maintenance_package"]
}
```

La réponse pour cet appel d'API se présente comme suit :

```json theme={null}
{
  "id": "3465404",
  "createdAt": "2020-02-23T01:24:54.537Z",
  "updatedAt": "2020-02-23T02:12:24.175874Z",
  "labels": {
    "singular": "Car",
    "plural": "Cars"
  },
  "requiredProperties": ["year", "model", "vin", "make"],
  "searchableProperties": ["year", "model", "vin", "make"],
  "primaryDisplayProperty": "model",
  "secondaryDisplayProperties": ["maintenance_package"],
  "portalId": 1234567,
  "name": "car"
}
```

Désormais, lorsqu'un mécanicien ouvre une fiche d'informations de contact qui contient un véhicule associé, la propriété s'affichera dans la carte d'objet personnalisé dans la barre latérale :

![Capture d'écran du 06/03/2020 à 11.08.41](https://developers.hubspot.com/hs-fs/hubfs/Screen%20Shot%202020-03-06%20at%2011.08.41%20AM.png?width=386\&name=Screen%20Shot%202020-03-06%20at%2011.08.41%20AM.png)

À mesure que CarSpot utilise HubSpot, il trouvera probablement des moyens d'affiner et d'étendre cet objet personnalisé et plus encore à l'aide de l'API de HubSpot. Il pourra même décider de [créer des pages dynamiques à l'aide de ses données d'objet personnalisé.](https://developers.hubspot.fr/docs/cms/start-building/features/data-driven-content/crm-data-in-cms-pages.md)
