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

# Get sample CRM card detail response

> Renvoie un exemple de réponse de détail de carte. Il s'agit de la charge utile avec les détails affichés pour une carte qui sera montrée à un utilisateur. Une application doit envoyer cela en réponse à la demande de récupération des données.

export const SupportedProducts = ({marketing, sales, service, cms, marketingLevel, salesLevel, serviceLevel, cmsLevel}) => {
  const translations = {
    header: "Produits pris en charge",
    description: "Exige l'un des produits suivants ou un produit supérieur.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub"
    },
    tiers: {
      free: "Gratuit",
      starter: "Starter",
      professional: "Pro",
      enterprise: "Entreprise"
    }
  };
  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>;
};

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


## OpenAPI

````yaml specs/legacy/v3/crm-public-app-crm-cards-v3.json GET /crm/v3/extensions/cards-dev/sample-response
openapi: 3.0.1
info:
  title: Cartes CRM d'application publique
  description: >-
    Allows an app to extend the CRM UI by surfacing custom cards in the sidebar
    of record pages. These cards are defined up-front as part of app
    configuration, then populated by external data fetch requests when the
    record page is accessed by a user.
  version: v3
  x-hubspot-product-tier-requirements:
    marketing: FREE
    sales: FREE
    service: FREE
    cms: FREE
    commerce: FREE
    crmHub: FREE
    dataHub: FREE
  x-hubspot-api-use-case: >-
    Ajoutez une carte personnalisée aux fiches d'informations de contact qui
    affiche les données de votre logiciel de suivi des bugs externe.
  x-hubspot-related-documentation:
    - name: Custom Cards Guide
      url: https://developers.hubspot.com/docs/guides/api/crm/extensions/crm-cards
  x-hubspot-introduction: >-
    Créez des cartes personnalisées pour intégrer des données de systèmes
    externes sur les fiches d'informations du CRM. Une application publique est
    nécessaire. Ces cartes CRM se distinguent des extensions d'IU qui peuvent
    être créées avec les projets.
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Advanced
  - name: Basic
paths:
  /crm/v3/extensions/cards-dev/sample-response:
    get:
      tags:
        - Basic
      summary: Obtenir un exemple de réponse de détail de carte
      description: >-
        Renvoie un exemple de réponse de détail de carte. Il s'agit de la charge
        utile avec les détails affichés pour une carte qui sera montrée à un
        utilisateur. Une application doit envoyer cela en réponse à la demande
        de récupération des données.
      operationId: get-/crm/v3/extensions/cards-dev/sample-response_getCardsSampleResponse
      parameters: []
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegratorCardPayloadResponse'
        default:
          $ref: '#/components/responses/Error'
          description: ''
components:
  schemas:
    IntegratorCardPayloadResponse:
      required:
        - totalCount
      type: object
      properties:
        allItemsLinkUrl:
          type: string
          description: "URL vers une page que l'intégrateur a créée et qui affiche tous les détails de cette carte. Cette URL sera affichée aux utilisateurs sous un lien «\_Voir plus [x]\_» s'il y a plus de cinq\_éléments dans votre réponse, où «\_[x]\_» est la valeur de «\_itemLabel\_»."
        cardLabel:
          type: string
          description: "Le libellé à utiliser pour le lien «\_allItemsLinkUrl\_» (par exemple, «\_Voir plus de tickets\_»). Si non fourni, cela revient au titre de la carte."
        responseVersion:
          type: string
          description: La version numérique de la réponse.
          enum:
            - v1
            - v3
        sections:
          type: array
          description: "Une liste de jusqu'à cinq\_sous-catégories de cartes valides."
          items:
            $ref: '#/components/schemas/IntegratorObjectResult'
        topLevelActions:
          $ref: '#/components/schemas/TopLevelActions'
        totalCount:
          type: integer
          description: >-
            Le nombre total de propriétés de carte qui seront envoyées dans
            cette réponse.
          format: int32
      description: >-
        The card details payload, sent to HubSpot by an app in response to a
        data fetch request when a user visits a CRM record page.
    IntegratorObjectResult:
      required:
        - actions
        - id
        - title
        - tokens
      type: object
      properties:
        actions:
          type: array
          description: >-
            Une liste des actions associées à la carte, qui peut inclure des
            hooks d'action, des hooks d'action de confirmation ou des iframes.
          items:
            oneOf:
              - $ref: '#/components/schemas/ActionHookActionBody'
              - $ref: '#/components/schemas/IFrameActionBody'
        id:
          type: string
          description: L'identifiant unique de la carte.
        linkUrl:
          type: string
          description: Une URL utilisée dans le titre de la carte
        title:
          type: string
          description: >-
            Le titre de niveau supérieur pour cette carte. Affiché aux
            utilisateurs dans l'interface CRM.
        tokens:
          type: array
          description: >-
            Une collection de jetons représentant des propriétés spécifiques
            liées à la carte.
          items:
            $ref: '#/components/schemas/ObjectToken'
    TopLevelActions:
      required:
        - secondary
      type: object
      properties:
        primary:
          description: >-
            Définit l'action principale d'une carte, qui peut être soit un hook
            d'action, soit un iframe.
          oneOf:
            - $ref: '#/components/schemas/ActionHookActionBody'
            - $ref: '#/components/schemas/IFrameActionBody'
        secondary:
          type: array
          description: >-
            Spécifie une liste d'actions secondaires pour une carte, chacune
            pouvant être un hook d'action ou un iframe.
          items:
            oneOf:
              - $ref: '#/components/schemas/ActionHookActionBody'
              - $ref: '#/components/schemas/IFrameActionBody'
        settings:
          $ref: '#/components/schemas/IFrameActionBody'
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: La catégorie d'erreur
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexte concernant la condition d'erreur
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            Un identifiant unique pour la demande. Incluez cette valeur dans
            tous les rapports d'erreurs ou tickets d'assistance
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: informations supplémentaires à propos de l'erreur
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Une carte des noms de liens vers les URI associés contenant de la
            documentation sur l'erreur ou les mesures correctives recommandées
        message:
          type: string
          description: >-
            Un message lisible par la personne décrivant l'erreur ainsi que les
            mesures correctives possibles, le cas échéant
          example: An error occurred
        subCategory:
          type: string
          description: >-
            Une catégorie spécifique qui contient des détails plus précis sur
            l'erreur
      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
    ActionHookActionBody:
      title: ACTION_HOOK
      required:
        - httpMethod
        - propertyNamesIncluded
        - type
        - url
      type: object
      properties:
        confirmation:
          $ref: '#/components/schemas/ActionConfirmationBody'
        httpMethod:
          type: string
          description: >-
            Méthode HTTP à utiliser lors de l'appel, qui peut être définie sur
            OBTENIR, PUBLIER, METTRE, SUPPRIMER ou PATCH. Si vous utilisez
            OBTENIR ou SUPPRIMER
          enum:
            - CONNECT
            - DELETE
            - GET
            - HEAD
            - OPTIONS
            - PATCH
            - POST
            - PUT
            - TRACE
        label:
          type: string
          description: >-
            Le libellé de cette propriété telle que vous souhaitez qu'elle soit
            affichée aux utilisateurs.
        propertyNamesIncluded:
          type: array
          description: >-
            Une liste des noms de propriétés qui seront inclus dans l'action.
            Pour plus d'informations, consultez la documentation.
          items:
            type: string
        type:
          type: string
          description: Le type de statut.
          default: ACTION_HOOK
          enum:
            - ACTION_HOOK
        url:
          type: string
          description: >-
            Il s'agit du nom du point de terminaison d'URL lorsque l'action sera
            déclenchée.
      x-hubspot-sub-type-impl: true
    IFrameActionBody:
      title: IFRAME
      required:
        - height
        - propertyNamesIncluded
        - type
        - url
        - width
      type: object
      properties:
        height:
          type: integer
          description: La hauteur de l'iframe en pixels.
          format: int32
        label:
          type: string
          description: >-
            Le libellé de cette propriété telle que vous souhaitez qu'elle soit
            affichée aux utilisateurs.
        propertyNamesIncluded:
          type: array
          description: >-
            Une liste des noms de propriétés qui seront inclus dans l'URL de
            l'iframe.
          items:
            type: string
        type:
          type: string
          description: Le type de statut.
          default: IFRAME
          enum:
            - IFRAME
        url:
          type: string
          description: >-
            Le point de terminaison d'URL qui sera chargé dans l'iframe
            lorsqu'il sera déclenché.
        width:
          type: integer
          description: La largeur de l'iframe en pixels.
          format: int32
      x-hubspot-sub-type-impl: true
    ObjectToken:
      required:
        - value
      type: object
      properties:
        dataType:
          type: string
          description: Type des données représentées par cette propriété.
          enum:
            - BOOLEAN
            - CURRENCY
            - DATE
            - DATETIME
            - EMAIL
            - LINK
            - NUMERIC
            - STATUS
            - STRING
        label:
          type: string
          description: >-
            Le libellé de cette propriété telle que vous souhaitez qu'elle soit
            affichée aux utilisateurs.
        name:
          type: string
          description: >-
            Un identifiant interne pour cette propriété. Cette valeur doit être
            unique TODO.
        value:
          type: string
          description: La valeur de la propriété
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: Le code du statut associé au détail de l'erreur
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: Contexte concernant la condition d'erreur
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: Le nom du champ ou du paramètre dans lequel l'erreur a été trouvée.
        message:
          type: string
          description: >-
            Un message lisible par la personne décrivant l'erreur ainsi que les
            mesures correctives possibles, le cas échéant
        subCategory:
          type: string
          description: >-
            Une catégorie spécifique qui contient des détails plus précis sur
            l'erreur
    ActionConfirmationBody:
      required:
        - cancelButtonLabel
        - confirmButtonLabel
        - prompt
      type: object
      properties:
        cancelButtonLabel:
          type: string
          description: Le libellé du bouton qui annule l'action.
        confirmButtonLabel:
          type: string
          description: Le libellé du bouton qui confirme l'action.
        prompt:
          type: string
          description: Le message affiché à l'utilisateur pour confirmer l'action.
  responses:
    Error:
      description: An error occurred.
      content:
        '*/*':
          schema:
            $ref: '#/components/schemas/Error'

````