> ## 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.

# API du CRM | Propriétés

>  Les points de terminaison de propriétés de CRM permettent de gérer propriétés personnalisées ainsi que les détails par défaut des propriétés pour tout objet.

export const postmanIcon = <svg xmlns="http://www.w3.org/2000/svg" width={25} height={25} preserveAspectRatio="xMidYMid" viewBox="0 0 256 256">
    <path fill="#FF6C37" d="M254.953 144.253c8.959-70.131-40.569-134.248-110.572-143.206C74.378-7.912 10.005 41.616 1.047 111.619c-8.959 70.003 40.569 134.248 110.572 143.334 70.131 8.959 134.248-40.569 143.334-110.7Z" />
    <path fill="#FFF" d="m174.2 82.184-54.007 54.007-15.229-15.23c53.11-53.11 58.358-48.503 69.236-38.777Z" />
    <path fill="#FF6C37" d="M120.193 137.47c-.384 0-.64-.128-.895-.384l-15.358-15.229a1.237 1.237 0 0 1 0-1.792c54.007-54.006 59.638-48.887 71.028-38.649.255.256.383.512.383.896s-.128.64-.383.896l-54.007 53.878c-.128.256-.512.384-.768.384Zm-13.437-16.509 13.437 13.438 52.087-52.087c-9.47-8.446-15.87-11.006-65.524 38.65Z" />
    <path fill="#FFF" d="m135.679 151.676-14.718-14.718 54.007-54.006c14.46 14.59-7.167 38.265-39.29 68.724Z" />
    <path fill="#FF6C37" d="M135.679 152.956c-.384 0-.64-.128-.896-.384l-14.718-14.718c-.256-.256-.256-.512-.256-.896s.128-.64.384-.895L174.2 82.056a1.237 1.237 0 0 1 1.791 0 15.58 15.58 0 0 1 4.991 11.902c-.256 14.206-16.38 32.25-44.28 58.614-.383.256-.767.384-1.023.384Zm-12.926-15.998c8.19 8.319 11.646 11.646 12.926 12.926 21.5-20.476 42.36-41.464 42.488-55.926.128-3.327-1.152-6.655-3.327-9.214l-52.087 52.214Z" />
    <path fill="#FFF" d="m105.22 121.345 10.878 10.878c.256.256.256.512 0 .768-.128.128-.128.128-.256.128l-22.524 4.863c-1.152.128-2.175-.64-2.431-1.791-.128-.64.128-1.28.512-1.664l13.053-13.054c.256-.256.64-.384.768-.128Z" />
    <path fill="#FF6C37" d="M92.934 139.262c-1.92 0-3.327-1.536-3.327-3.455 0-.896.384-1.792 1.024-2.432l13.053-13.054c.768-.64 1.792-.64 2.56 0l10.878 10.878c.768.64.768 1.792 0 2.56-.256.256-.512.384-.896.512l-22.524 4.863c-.256 0-.512.128-.768.128Zm11.902-16.51-12.542 12.543c-.256.256-.383.64-.128 1.024.128.383.512.511.896.383l21.116-4.607-9.342-9.342Z" />
    <path fill="#FFF" d="M202.739 52.238c-8.191-7.935-21.373-7.679-29.307.64-7.935 8.318-7.679 21.372.64 29.306A20.678 20.678 0 0 0 199.155 85l-14.59-14.59 18.174-18.172Z" />
    <path fill="#FF6C37" d="M188.405 89.223c-12.158 0-22.012-9.854-22.012-22.012 0-12.158 9.854-22.012 22.012-22.012 5.631 0 11.134 2.176 15.23 6.143.255.256.383.512.383.896s-.128.64-.384.895L186.357 70.41l13.566 13.566c.512.512.512 1.28 0 1.792l-.256.256c-3.327 2.047-7.295 3.199-11.262 3.199Zm0-41.337c-10.75 0-19.452 8.703-19.324 19.453 0 10.75 8.702 19.452 19.452 19.324 2.944 0 5.887-.64 8.575-2.047l-13.438-13.31c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l17.149-17.15c-3.456-2.943-7.807-4.479-12.414-4.479Z" />
    <path fill="#FFF" d="m203.122 52.622-.255-.256-18.301 18.044 14.461 14.462c1.408-.896 2.816-1.92 3.967-3.072a20.51 20.51 0 0 0 .128-29.178Z" />
    <path fill="#FF6C37" d="M199.155 86.28c-.384 0-.64-.128-.896-.384l-14.589-14.59c-.256-.256-.384-.512-.384-.896s.128-.64.384-.895l18.173-18.173a1.237 1.237 0 0 1 1.791 0l.384.256c8.575 8.574 8.575 22.396.128 31.098-1.28 1.28-2.687 2.432-4.223 3.328-.384.128-.64.256-.768.256Zm-12.798-15.87 12.926 12.926c1.024-.64 2.048-1.536 2.816-2.304 7.294-7.294 7.678-19.196.64-26.875L186.357 70.41Z" />
    <path fill="#FFF" d="M176.375 84.488a7.879 7.879 0 0 0-11.134 0l-48.247 48.247 8.063 8.063 51.062-44.792c3.328-2.816 3.584-7.807.768-11.134-.256-.128-.384-.256-.512-.384Z" />
    <path fill="#FF6C37" d="M124.929 142.077c-.384 0-.64-.128-.896-.383l-8.063-8.063a1.237 1.237 0 0 1 0-1.792l48.247-48.247a9.115 9.115 0 0 1 12.926 0 9.115 9.115 0 0 1 0 12.926l-.384.384-51.063 44.792c-.128.255-.384.383-.767.383Zm-6.143-9.342 6.27 6.271 50.167-44.024c2.816-2.304 3.072-6.527.768-9.342-2.303-2.816-6.526-3.072-9.342-.768-.128.128-.256.256-.512.384l-47.351 47.48Z" />
    <path fill="#FFF" d="M80.009 187.637c-.512.256-.768.768-.64 1.28l2.175 9.214c.512 1.28-.256 2.816-1.663 3.2-1.024.384-2.176 0-2.816-.768l-14.077-13.95 45.943-45.943 15.87.256 10.75 10.75c-2.56 2.175-18.045 17.149-55.542 35.961Z" />
    <path fill="#FF6C37" d="M78.985 202.61c-1.024 0-2.048-.383-2.688-1.151l-13.95-13.95c-.255-.256-.383-.512-.383-.896 0-.383.128-.64.384-.895l45.944-45.944c.256-.256.64-.384.895-.384l15.87.256c.383 0 .64.128.895.384l10.75 10.75c.256.256.384.64.384 1.024s-.128.64-.512.896l-.895.767c-13.566 11.902-31.995 23.804-54.902 35.194l2.175 9.086c.384 1.664-.384 3.456-1.92 4.352-.767.384-1.407.512-2.047.512Zm-14.078-15.997 13.182 13.054c.384.64 1.152.896 1.792.512.64-.384.896-1.152.512-1.792l-2.176-9.214c-.256-1.152.256-2.176 1.28-2.688 22.652-11.39 40.952-23.163 54.39-34.81l-9.47-9.47-14.718-.256-44.792 44.664Z" />
    <path fill="#FFF" d="m52.11 197.62 11.006-11.007 16.38 16.381-26.107-1.791c-1.151-.128-1.92-1.152-1.791-2.304 0-.512.128-1.024.512-1.28Z" />
    <path fill="#FF6C37" d="m79.497 204.146-26.236-1.791c-1.92-.128-3.199-1.792-3.071-3.712.128-.768.384-1.535 1.024-2.047L62.22 185.59a1.237 1.237 0 0 1 1.792 0l16.38 16.38c.385.385.512.897.257 1.408-.256.512-.64.768-1.152.768Zm-16.381-15.74-10.11 10.11c-.384.255-.384.895 0 1.151.127.128.255.256.511.256l22.652 1.536-13.053-13.054ZM104.452 146.557c-.768 0-1.28-.64-1.28-1.28 0-.384.128-.64.384-.896l12.414-12.414a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-20.477 4.352h-.256Zm12.414-11.902-8.446 8.446 13.821-2.943-5.375-5.503Z" />
    <path fill="#FFF" d="m124.8 140.926-14.077 3.071c-1.024.256-2.048-.384-2.303-1.408-.128-.64 0-1.28.511-1.791l7.807-7.807 8.063 7.935Z" />
    <path fill="#FF6C37" d="M110.467 145.277a3.168 3.168 0 0 1-3.2-3.2c0-.895.385-1.663.897-2.303l7.806-7.807a1.237 1.237 0 0 1 1.792 0l8.062 8.063c.384.384.512.768.384 1.28-.128.384-.512.767-1.023.895l-14.078 3.072h-.64Zm6.399-10.622-6.91 6.91c-.257.257-.257.512-.129.768s.384.384.768.384l11.774-2.56-5.503-5.502ZM203.25 64.907c-.256-.767-1.151-1.151-1.92-.895-.767.255-1.151 1.151-.895 1.92 0 .127.128.255.128.383.768 1.536.512 3.455-.512 4.863-.512.64-.384 1.536.128 2.048.64.512 1.536.384 2.048-.256 1.92-2.432 2.303-5.503 1.023-8.063Z" />
  </svg>;

export const ScopesList = ({scopes = [], description = "Cette API requiert l'une des portées suivantes :"}) => {
  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>;
};

<Card title="Run in Postman" href="https://app.getpostman.com/run-collection/33493e154afc38038092" icon={postmanIcon} horizontal={true} />

<RelatedApiLink />

<Accordion title="Exigences de portée">
  <ScopesList
    scopes={[
  'automation',
  'crm.objects.appointments.read',
  'crm.objects.appointments.sensitive.read.v2',
  'crm.objects.appointments.sensitive.write.v2',
  'crm.objects.appointments.write',
  'crm.objects.carts.read',
  'crm.objects.carts.write',
  'crm.objects.commercepayments.write',
  'crm.objects.companies.highly_sensitive.read.v2',
  'crm.objects.companies.highly_sensitive.write.v2',
  'crm.objects.companies.read',
  'crm.objects.companies.sensitive.read.v2',
  'crm.objects.companies.sensitive.write.v2',
  'crm.objects.companies.write',
  'crm.objects.contacts.highly_sensitive.read.v2',
  'crm.objects.contacts.highly_sensitive.write.v2',
  'crm.objects.contacts.read',
  'crm.objects.contacts.sensitive.read.v2',
  'crm.objects.contacts.sensitive.write.v2',
  'crm.objects.contacts.write',
  'crm.objects.courses.read',
  'crm.objects.courses.write',
  'crm.objects.custom.highly_sensitive.read.v2',
  'crm.objects.custom.highly_sensitive.write.v2',
  'crm.objects.custom.read',
  'crm.objects.custom.sensitive.read.v2',
  'crm.objects.custom.sensitive.write.v2',
  'crm.objects.custom.write',
  'crm.objects.deals.highly_sensitive.read.v2',
  'crm.objects.deals.highly_sensitive.write.v2',
  'crm.objects.deals.read',
  'crm.objects.deals.sensitive.read.v2',
  'crm.objects.deals.sensitive.write.v2',
  'crm.objects.deals.write',
  'crm.objects.feedback_submissions.read',
  'crm.objects.goals.read',
  'crm.objects.goals.write',
  'crm.objects.invoices.read',
  'crm.objects.invoices.write',
  'crm.objects.leads.read',
  'crm.objects.leads.write',
  'crm.objects.line_items.read',
  'crm.objects.line_items.write',
  'crm.objects.listings.read',
  'crm.objects.listings.write',
  'crm.objects.marketing_events.read',
  'crm.objects.marketing_events.write',
  'crm.objects.orders.read',
  'crm.objects.orders.write',
  'crm.objects.owners.read',
  'crm.objects.products.write',
  'crm.objects.quotes.read',
  'crm.objects.quotes.write',
  'crm.objects.services.read',
  'crm.objects.services.write',
  'crm.objects.subscriptions.read',
  'crm.objects.subscriptions.write',
  'crm.objects.users.read',
  'crm.objects.users.write',
  'crm.pipelines.orders.read',
  'crm.pipelines.orders.write',
  'crm.schemas.appointments.read',
  'crm.schemas.appointments.write',
  'crm.schemas.carts.read',
  'crm.schemas.carts.write',
  'crm.schemas.commercepayments.read',
  'crm.schemas.commercepayments.write',
  'crm.schemas.companies.read',
  'crm.schemas.companies.write',
  'crm.schemas.contacts.read',
  'crm.schemas.contacts.write',
  'crm.schemas.courses.read',
  'crm.schemas.courses.write',
  'crm.schemas.custom.read',
  'crm.schemas.deals.read',
  'crm.schemas.deals.write',
  'crm.schemas.invoices.read',
  'crm.schemas.invoices.write',
  'crm.schemas.line_items.read',
  'crm.schemas.listings.read',
  'crm.schemas.listings.write',
  'crm.schemas.orders.read',
  'crm.schemas.orders.write',
  'crm.schemas.quotes.read',
  'crm.schemas.services.read',
  'crm.schemas.services.write',
  'crm.schemas.subscriptions.read',
  'crm.schemas.subscriptions.write',
  'e-commerce',
  'media_bridge.read',
  'tickets',
  'tickets.highly_sensitive.v2',
  'tickets.sensitive.v2',
  'timeline'
]}
  />
</Accordion>

Utilisez les propriétés pour stocker des informations sur les fiches d'informations du CRM. HubSpot fournit un ensemble de propriétés par défaut pour chaque objet de CRM. Vous pouvez également créer et gérer vos propres propriétés personnalisées [dans HubSpot](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties) ou à l'aide de l'API de propriétés.

Lors de la création de propriétés, il est important de réfléchir à l'architecture de vos données. Dans de nombreux cas, la création de propriétés personnalisées pour les objets standard de HubSpot est la bonne marche à suivre. Cependant, vous devrez parfois créer un [objet personnalisé](/docs/api-reference/crm-custom-objects-v3/guide) distinct avec son propre ensemble de propriétés.

## Propriétés par défaut

Les objets de CRM sont définis par un `type` principal et un ensemble de `properties`. Chaque type contient un ensemble de propriétés standards, représenté par une carte de noms et de valeurs.

Découvrez-en davantage sur les propriétés par défaut pour différents objets :

* [Contacts](https://knowledge.hubspot.com/fr/properties/hubspots-default-contact-properties)
* [Entreprises](https://knowledge.hubspot.com/fr/properties/hubspot-crm-default-company-properties)
* [Entreprises](https://knowledge.hubspot.com/fr/properties/hubspots-default-deal-properties)
* [Tickets](https://knowledge.hubspot.com/fr/properties/hubspots-default-ticket-properties)
* [Activités](https://knowledge.hubspot.com/fr/properties/hubspots-default-activity-properties) (appels, e-mails, réunions, notes, tâches)
* [Leads](https://knowledge.hubspot.com/fr/properties/hubspots-default-lead-properties)(***Sales Hub*** *Pro* et *Entreprise*)

## Groupes de propriétés

Les [groupes de propriétés](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties#create-and-edit-property-groups) sont utilisés pour regrouper des propriétés associées. Toutes les propriétés regroupées apparaîtront les unes à côté des autres sur les fiches d'informations HubSpot. Si votre intégration crée des propriétés d'objets personnalisés, une propriété personnalisée facilitera l'identification de ces données.

## Type de propriété et valeurs fieldType

Lorsque vous créez ou mettez à jour des propriétés, les valeurs `type` et `fieldType` sont obligatoires. La valeur `type` détermine le type de propriété, c'est-à-dire une chaîne ou un nombre. La propriété `fieldType` détermine la façon dont la propriété apparaîtra dans HubSpot ou sur un formulaire, c'est-à-dire en tant que de texte brut, menu déroulant ou sélecteur de dates.

Dans le tableau ci-dessous, découvrez les valeurs de propriété `type` et `fieldType` disponibles.

| `type`               | Description                                                                                                                                                                                                                                                                                  | Valeurs `fieldType` valides                                               |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `bool`               | Champ contenant des options binaires (par exemple : `Yes` ou `No`, `True` ou `False`).                                                                                                                                                                                                       | `booleancheckbox`, `calculation_equation`                                 |
| `enumeration`        | Une chaîne représentant un ensemble d'options séparées par un point-virgule.                                                                                                                                                                                                                 | `booleancheckbox`, `checkbox`, `radio`, `select`, `calculation_equation`  |
| `date`               | Une valeur représentant un jour, un mois et une année spécifiques. Les valeurs doivent être représentées au format UTC et peuvent être formatées sous forme de [chaînes ISO 8601 ou d'horodatages EPOCH en millisecondes](#add-values-to-date-and-datetime-properties) (c.-à-d. minuit UTC). | `date`                                                                    |
| `datetime`           | Une valeur représentant un jour, un mois, une année et une heure spécifiques. Les valeurs doivent être représentées au format UTC et peuvent être formatées sous forme de [chaînes ISO 8601 ou d'horodatages UNIX en millisecondes](#add-values-to-date-and-datetime-properties).            | `date`                                                                    |
| `string`             | Une chaîne de texte brut limitée à 65 536 caractères.                                                                                                                                                                                                                                        | `file`, `text`, `textarea`, `calculation_equation`, `html`, `phonenumber` |
| `number`             | Une valeur numérique contenant des chiffres et au maximum une décimale.                                                                                                                                                                                                                      | `number`, `calculation_equation`                                          |
| `object_coordinates` | Valeur de texte utilisée pour référencer d'autres objets HubSpot, utilisée uniquement pour les propriétés internes. Les propriétés de ce type ne peuvent pas être créées ou modifiées et ne sont pas visibles dans HubSpot.                                                                  | `text`                                                                    |
| `json`               | Valeur de texte stockée au format JSON, utilisée uniquement pour les propriétés internes. Les propriétés de ce type ne peuvent pas être créées ou modifiées et ne sont pas visibles dans HubSpot.                                                                                            | `text`                                                                    |

Valeurs valides pour `fieldType` incluent :

| 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. Découvrez comment [ajouter une valeur aux propriétés de case à cocher unique](#add-values-to-checkbox-type-properties).     |
| `calculation_equation` | Une équation personnalisée qui peut calculer des valeurs en fonction d'autres valeurs de propriété et/ou d'associations. Découvrez comment définir des [propriétés calculées](#create-calculation-properties).                                                                                      |
| `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é. Découvrez comment [formater des valeurs lors de la mise à jour de propriétés avec plusieurs cases à cocher](#add-values-to-checkbox-type-properties). |
| `date`                 | Une valeur de date, affichée comme un sélecteur de date.                                                                                                                                                                                                                                            |
| `file`                 | Permet de télécharger un fichier sur une fiche d'informations ou via un formulaire. Stocke un ID de fichier.                                                                                                                                                                                        |
| `html`                 | Une chaîne, restituée dans un format HTML nettoyé, qui permet l'utilisation d'un éditeur de texte enrichi pour la propriété.                                                                                                                                                                        |
| `number`               | Une chaîne de chiffres ou de nombres sous forme décimale ou en notation scientifique.                                                                                                                                                                                                               |
| `phonenumber`          | Une chaîne de texte brut affichée comme un numéro de téléphone formaté.                                                                                                                                                                                                                             |
| `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.                                                                                                                                                                                                                   |

## Créer une propriété

Pour créer une propriété, effectuez une requête `POST` à `/crm/v3/properties/{objectType}`. Dans le corps de votre requête, incluez les champs obligatoires suivants :

* `groupName` : le [groupe de propriétés](https://knowledge.hubspot.com/fr/properties/organize-and-export-properties) dans lequel la propriété se trouvera.
* `name` : le nom interne de la propriété (par exemple : favorite\_food).
* `label` : le nom de la propriété tel qu'il apparaît dans HubSpot (par exemple : plat préféré).
* `type` : le [type](#property-type-and-fieldtype-values) de propriété.
* `fieldType` : le [type de champ](#property-type-and-fieldtype-values) de la propriété.

Par exemple, pour créer une propriété de contact appelée *Plat préféré*, votre requête ressemblera à ceci :

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    {
      "groupName": "contactinformation",
      "name": "favorite_food",
      "label": "Favorite Food",
      "type": "string",
      "fieldType": "text"
    }
    ```
  </Tab>
</Tabs>

## Créer des propriétés d'identifiant unique

Lorsqu'une fiche d'informations est créée dans HubSpot, un ID unique (`hs_object_id`) est généré automatiquement et doit être considéré comme une chaîne. Ces ID sont uniques pour chaque type d'objet seulement. Un contact et une entreprise peuvent donc avoir le même ID. Pour les contacts et les entreprises, il existe des identifiants uniques supplémentaires, y compris l'adresse e-mail d'un contact (`email`) et le nom de domaine d'une entreprise (`domain`).

Dans certains cas, vous pouvez créer votre propre propriété d'identifiant unique afin qu'il ne soit pas possible de saisir la même valeur pour plusieurs fiches d'informations. Vous pouvez avoir jusqu'à dix propriétés d'ID unique par objet. Pour créer une propriété nécessitant des valeurs uniques via l'API :

* Effectuez une requête `POST` à `/crm/v3/properties/{objectType}`.
* Dans le corps de votre requête, pour le champ `hasUniqueValue`, définissez la valeur sur `true`.

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    {
      "groupName": "dealinformation",
      "name": "system_a_unique",
      "label": "Unique ID for System A",
      "hasUniqueValue": true,
      "type": "string",
      "fieldType": "text"
    }
    ```
  </Tab>
</Tabs>

Une fois votre propriété d'ID unique créée, vous pouvez l'utiliser dans un appel d'API pour récupérer des fiches d'informations spécifiques. Par exemple, pour récupérer une transaction avec la valeur `abc` pour la propriété `system_a_unique`, l'URL votre demande serait : `/crm/v3/objects/deals/abc?idProperty=system_a_unique`.

Vous pouvez ensuite utiliser cette valeur de propriété d'identifiant unique pour identifier et mettre à jour des fiches d'informations spécifiques de la même manière que vous pouvez utiliser `hs_object_id`, `email` (contacts) ou `domain` (entreprises).

## Créer des propriétés calculées

Les propriétés calculées définissent une valeur de propriété en fonction d'autres propriétés dans la même fiche d'informations d'objet. Elles sont définies à l'aide d'une formule, qui peut inclure des opérations telles que le minimum, le maximum, le compte, la somme ou la moyenne. Vous pouvez utiliser l'API de propriétés pour lire ou créer des propriétés calculées dans votre compte HubSpot, en utilisant un type de champ `calculation_equation` et un type `number`, `bool`, `string` ou `enumeration`.

Vous pouvez définir la formule de calcul de la propriété avec le champ `calculationFormula`.

<Warning>
  ### Remarque :

  Les propriétés calculées créées via l'API <u>ne peuvent pas</u> être modifiées dans HubSpot. Vous pouvez modifier ces propriétés uniquement via l'API des propriétés.
</Warning>

### Syntaxe des propriétés calculées

À l'aide de `calculationFormula`, vous pouvez écrire votre formule avec des opérateurs arithmétiques, des opérateurs de comparaison, des opérateurs logiques, des instructions conditionnelles et d'autres fonctions.

#### Syntaxe littérale

* **Chaîne littérale** : les chaînes constantes peuvent être représentées avec des guillemets simples (`'constant'`) ou des guillemets doubles (`"constant"`).
* **Nombre littéral** : les nombres constants peuvent être n'importe quel nombre réel et peuvent inclure une notation ponctuelle. `1005` et `1.5589` sont tous deux des nombres constants valides.
* **Booléen littéral** : les booléens constants peuvent être `true` ou `false`.

#### Syntaxe de propriété

* **Variables de propriétés de chaîne :** pour qu'une chaîne d'identificateurs soit interprétée comme une propriété de chaîne, elle doit être encadrée dans la fonction `string`. Par exemple, `string(var1)` sera interprété comme la valeur de la propriété de chaîne var1.
* **Variables de propriétés numériques** : tous les identifiants seront interprétés comme des variables de propriétés numériques. Par exemple, `var1` sera interprété comme la valeur de la propriété numérique var1.
* **Variables de propriétés booléennes** : pour qu'un identifiant soit interprété comme une propriété booléenne, il doit être encadré dans la fonction `bool`. Par exemple, l'identifiant `bool(var1)` sera interprété comme la valeur de la propriété booléenne var1.

<Warning>
  ### Remarque :

  Remarque : le texte utilisé est sensible à la casse pour tous les types, <u>à l'exception</u> des chaînes. Par exemple, `If A ThEn B` est exactement identique à `if a then b`, mais `'a'` est différent de `'A'`. Les espaces, les onglets et les nouvelles lignes seront utilisés pour la tokenisation, mais seront ignorés.
</Warning>

#### Opérateurs

Les opérateurs peuvent être utilisés avec des valeurs littérales et de propriété. Pour les opérateurs arithmétiques, vous pouvez utiliser la notation de préfixe pour multiplier et la parenthèse peut être utilisée pour spécifier l'ordre des opérations.

| Opérateur | Description                                                                                                                | Exemples                                         |
| --------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| `+`       | Ajoutez des nombres ou des chaînes de caractères.                                                                          | `property1 + 100`                                |
| `-`       | Soustrayez des nombres.                                                                                                    | `property1 + 100 - property2`                    |
| `*`       | Multipliez des nombres.                                                                                                    | `10property1` = `10 * property1`                 |
| `/`       | Divisez des nombres.                                                                                                       | `property1 * (100 - property2/(50 - property3))` |
| `<`       | Vérifiez si une valeur est inférieure à une autre. Pris en charge par des propriétés ou des constantes de nombre.          | `a < 100`                                        |
| `>`       | Vérifiez si une valeur est supérieure à une autre. Pris en charge par des propriétés ou des constantes de nombre.          | `a > 50`                                         |
| `<=`      | Vérifiez si une valeur est inférieure ou égale à une autre. Pris en charge par des propriétés ou des constantes de nombre. | `a <= b`                                         |
| `>=`      | Vérifiez si une valeur est supérieure ou égale à une autre. Pris en charge par des propriétés ou des constantes de nombre. | `b>= c`                                          |
| `=`       | Vérifiez si une valeur est égale à une autre. Pris en charge à la fois par des chiffres et des chaînes.                    | `(a + b - 100c * 150.652) = 150-230b`            |
| `equals`  | Vérifiez si une valeur est égale à une autre. Pris en charge à la fois par des chiffres et des chaînes.                    | `a + b - 100.2c * 150 equals 150 - 230`          |
| `!=`      | Vérifiez si une valeur est différente d'une autre. Pris en charge à la fois par des chiffres et des chaînes.               | `string(property1) != 'test_string'`             |
| `or`      | Vérifiez si l'une des deux valeurs est exacte.                                                                             | `a > b or b <= c`                                |
| `and`     | Vérifiez si les deux valeurs sont vraies.                                                                                  | `bool(a) and bool(c)`                            |
| `not`     | Vérifiez si aucune des valeurs n'est vraie.                                                                                | `not (bool(a) and bool(c))`                      |

#### Fonctions

Les fonctions suivantes sont prises en charge :

| Fonction      | Description                                                                                 | Exemples                                                                                                                                 |
| ------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `max`         | Aura entre 2 et 100 nombres d'entrées, et renverra le nombre maximum de toutes les entrées. | `max(a, b, c, 100)` ou `max(a, b)`                                                                                                       |
| `min`         | Aura entre 2 et 100 nombres d'entrées, et renverra le nombre minimum de toutes les entrées. | `min(a, b, c, 100)` ou `min(a, b)`                                                                                                       |
| `is_present`  | Détermine si une expression peut être évaluée.                                              | `is_present(bool(a))`= true si la propriété est booléenne, mais `is_present(bool(a))` = false si la propriété est vide ou non booléenne. |
| `contains`    | A deux chaînes comme entrées et renverra true si la première entrée contient la seconde.    | `contains('hello', 'ello')` = `true` tandis que `contains('ello', 'hello')` = false.                                                     |
| `concatenate` | Rejoint une liste de chaînes. La liste des entrées peut aller de 2 à 100.                   | `concatenate('a', 'b', string(a), string(b))`                                                                                            |

Il existe également deux fonctions d'analyse :

* `number_to_string` : tente de convertir l'expression numérique d'entrée en chaîne.
* `string_to_number` : tente de convertir l'expression de chaîne d'entrée en nombre.

Par exemple, `"Number of cars: " + num_cars` n'est pas une propriété valide car vous ne pouvez pas ajouter une chaîne avec un nombre, mais `"Number of cars: " + number_to_string(num_cars)` est valide.

#### Fonctions conditionnelles

Vous pouvez également saisir votre formule avec des fonctions conditionnelles en utilisant `if`, `elseif`, `endif` et `else`.

Par exemple, une fonction conditionnelle pourrait ressembler à : `if boolean_expression then statement [elseif expression then statement]* [else statement | endif]` où les crochets `[a]` indiquent que a est facultatif, `a|b` indique que a ou b fonctionnera, et `*` signifie 0 ou plus. `endif` peut être utilisé pour terminer une fonction conditionnelle prématurément, en veillant à ce que l'analyseur puisse identifier à quel élément `if` le prochain élément `elseif` appartient.

### Exemples de formules

Voici des exemples que vous pouvez utiliser pour vous aider à définir vos propres formules de calcul :

```json theme={null}
"calculationFormula": "closed - started"
```

Un exemple plus avancé avec des conditions :

```json theme={null}
"calculationFormula": "if is_present(hs_latest_sequence_enrolled_date) then
  if is_present(hs_sequences_actively_enrolled_count) an hs_sequences_actively_enrolled_count >= 1 then
    true
  else
    false
else
  ''"
```

## Récupérer des propriétés

Vous pouvez récupérer des informations pour des propriétés individuelles ou toutes les propriétés d'un objet.

* Pour récupérer une propriété individuelle, effectuez une requête `GET` à `crm/v3/properties/{object}/{propertyName}`. Par exemple, pour récupérer la propriété `favorite_food`, l'URL de votre requête sera `/crm/v3/properties/contacts/favorite_food`.
* Pour récupérer toutes les propriétés d'un objet, effectuez une requête `GET` à `/crm/v3/properties/{objectType}`.

<Warning>
  ### Remarque :

  Lors de l'extraction de toutes les propriétés, seules les propriétés non sensibles sont renvoyées par défaut. Pour récupérer des propriétés de données sensibles, incluez le paramètre de requête `dataSensitivity` avec la valeur `sensitive`. Pour en savoir plus sur [la gestion des données sensibles par API](https://developers.hubspot.fr/docs/reference/api/crm/sensitive-data#manage-sensitive-data) (BETA, *Entreprise* uniquement).
</Warning>

## Mettre à jour ou effacer les valeurs d'une propriété

Pour mettre à jour une valeur de propriété pour une fiche d'informations, effectuez une requête `PATCH` à `crm/v3/objects/{objectType}/{recordId}`. Dans le corps de votre requête, incluez les propriétés et leurs valeurs dans un tableau. En savoir plus sur la mise à jour des fiches d'informations via les [API objet](/docs/guides/crm/understanding-the-crm).

### Ajouter des valeurs aux propriétés date et datetime

Les valeurs de temps seront représentées au format ISO 8601 dans les réponses, mais les API HubSpot accepteront l'un ou l'autre des deux formats pour les valeurs de date et d'heure :

* **Chaîne formatée conformément à la norme ISO 8601** : selon le type de données, il s'agira de l'un de ces deux formats différents :
  * Pour les valeurs qui indiquent une date spécifique, le format de date complet sera utilisé : AAAA-MM-JJ (par exemple, `2020-02-29`)
  * Pour les valeurs qui indiquent une date et une heure spécifiques, les données complètes ainsi que les heures, les minutes, les secondes et une fraction décimale de seconde seront utilisées : AAAA-MM-JJThh:mm:ss.sTZD (par exemple, `2020-02-29T03:30:17.000Z`). Toutes les heures sont définies selon le fuseau horaire UTC afin que les valeurs utilisent toujours le désignateur UTC "Z".
* **Horodatage UNIX en millisecondes** : valeurs d'horodatage en millisecondes, qui sont représentées en temps UTC. Par exemple, la valeur de l'horodatage `1427997766000` se traduit par *2 avr 2015 18:02:46 UTC* ou *2 avril 2015, 2:02:46 PM EDT* (heure avancée de l'Est).

Il existe deux types de propriétés pour stocker les dates (`date` et `datetime`), qui affectent également la façon dont vous formatez les valeurs :

* `date` Les propriétés stockent la date, mais <u>pas</u> l'heure. Les propriétés `date` affichent la date à laquelle elles sont définies, quelle que soit la définition du fuseau horaire du compte ou de l'utilisateur. Pour les valeurs de propriété `date`, il est recommandé d'utiliser le format de date complète ISO 8601. Si vous utilisez le format d'horodatage UNIX, vous devez utiliser un horodatage EPOCH en millisecondes (autrement dit, la valeur doit être définie sur minuit UTC pour la date). Par exemple, pour représenter le 1er mai 2015 dans l'un ou l'autre format :
  * **IOS 8601** : 2015-05-01
  * **Horodatage UNIX en millisecondes** : 1430438400000
* Les propriétés `datetime` stockent <u>à la fois</u> la date et l'heure. L'un ou l'autre format d'horodatage sera accepté. Dans HubSpot, les propriétés `datetime` sont affichées en fonction du fuseau horaire de l'utilisateur. Ainsi, la valeur sera convertie selon le fuseau horaire local de l'utilisateur.

### Ajouter des valeurs à des propriétés de case à cocher

Lors de la mise à jour des valeurs pour les propriétés de case à cocher d'une fiche d'informations, formatez les valeurs selon les modalités suivantes :

* **Propriété de case à cocher** **booléenne** : pour afficher comme *Oui* ou cochée dans HubSpot, votre valeur doit être `true`. Pour afficher comme *Non* ou non coché dans HubSpot, votre valeur doit être `false`.
* **Propriété de case à cocher** à **sélection multiple** : pour ajouter ou joindre des valeurs à une propriété à plusieurs cases à cocher, ajoutez un point-virgule avant la première valeur et séparez les valeurs avec des points-virgules sans espace au milieu. Si la propriété possède une valeur existante, le point-virgule principal ajoutera les valeurs au lieu de les remplacer. Par exemple, un contact a la valeur existante `DECISION_MAKER` pour la propriété `hs_buying_role`. Pour ajouter des valeurs supplémentaires sans remplacer la valeur existante, votre requête ressemblera à ceci :

<Tabs>
  <Tab title="JSON">
    ```json theme={null}
    {
      "properties": {
        "hs_buying_role": ";BUDGET_HOLDER;END_USER"
      }
    }
    ```
  </Tab>
</Tabs>

### Attribuer des propriétaires de fiche d'informations à des propriétés d'utilisateur

Lorsque vous attribuez des utilisateurs à des fiches d'informations de CRM via l'API, votre valeur doit être l'élément `id` du propriétaire de l'utilisateur, que vous pouvez trouver dans les [paramètres de votre propriété](https://knowledge.hubspot.com/fr/properties/create-and-edit-properties) ou via l'[API des propriétaires](/docs/api-reference/crm-crm-owners-v3/guide). Par exemple, pour affecter un utilisateur en tant que propriétaire d'un contact, effectuez une requête `PATCH` à `crm/v3/objects/contacts/{contactId}`, avec le corps `{ "properties":{ "hubspot_owner_id": "41629779"}}`.

### Effacer une valeur de propriété

Vous pouvez effacer la valeur d'une propriété d'objet via l'API en définissant la valeur de la propriété sur une chaîne de caractères vide.

Par exemple, pour effacer le `firstname` d'un objet de contact, envoyez une requête `PATCH` à `/crm/v3/objects/contacts/{contactId}` avec le corps `{ "properties": { "firstname": ""}}`.
