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

# Update stage

> Mettez à jour une étape spécifique au sein d'un pipeline pour un type d'objet donné dans HubSpot. Ce point de terminaison vous permet de modifier les détails d'une étape, tels que son libellé, son ordre d'affichage et ses métadonnées. Utilisez-le pour maintenir vos étapes de pipeline à jour et alignées sur vos processus métier.

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>;
};

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>;
};

<AccordionGroup>
  <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>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'crm.schemas.quotes.write',
  'tickets',
  'crm.schemas.invoices.write',
  'crm.schemas.orders.write',
  'crm.schemas.commercepayments.write',
  'crm.schemas.courses.write',
  'tickets.sensitive.v2',
  'e-commerce',
  'crm.schemas.appointments.write',
  'crm.schemas.contacts.write',
  'crm.schemas.carts.write',
  'crm.schemas.companies.write',
  'crm.objects.tickets.sensitive.write',
  'crm.schemas.subscriptions.write',
  'crm.schemas.custom.write',
  'crm.schemas.listings.write',
  'crm.pipelines.orders.write',
  'crm.objects.users.write',
  'tickets.highly_sensitive.v2',
  'crm.schemas.services.write',
  'crm.objects.orders.write',
  'crm.schemas.projects.write',
  'crm.schemas.deals.write',
  'crm.objects.carts.write',
  'crm.schemas.tickets.write',
  'crm.objects.tickets.highly_sensitive.write'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-09/crm-pipelines-v2026-09.json PUT /crm/pipelines/2026-09/{objectType}/{pipelineId}/stages/{stageId}
openapi: 3.0.1
info:
  title: CRM Pipelines
  description: Basepom for all HubSpot Projects
  version: 2026-09
  x-hubspot-product-tier-requirements:
    marketing: FREE
    sales: FREE
    service: FREE
    cms: FREE
    commerce: FREE
    crmHub: FREE
    dataHub: FREE
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Basic
paths:
  /crm/pipelines/2026-09/{objectType}/{pipelineId}/stages/{stageId}:
    put:
      tags:
        - Basic
      summary: Mettre à jour l'étape
      description: >-
        Mettez à jour une étape spécifique au sein d'un pipeline pour un type
        d'objet donné dans HubSpot. Ce point de terminaison vous permet de
        modifier les détails d'une étape, tels que son libellé, son ordre
        d'affichage et ses métadonnées. Utilisez-le pour maintenir vos étapes de
        pipeline à jour et alignées sur vos processus métier.
      operationId: put-/crm/pipelines/2026-09/{objectType}/{pipelineId}/stages/{stageId}
      parameters:
        - name: objectType
          in: path
          description: >-
            Le type d'objet auquel appartient le pipeline, tel que les
            transactions ou les tickets.
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: pipelineId
          in: path
          description: L'identifiant unique du pipeline contenant l'étape.
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: stageId
          in: path
          description: L'identifiant unique de l'étape à mettre à jour.
          required: true
          style: simple
          explode: false
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PipelineStageReplaceInput'
        required: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PipelineStage'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - crm.schemas.quotes.write
        - oauth2:
            - crm.schemas.invoices.write
        - oauth2:
            - crm.schemas.orders.write
        - oauth2:
            - crm.schemas.commercepayments.write
        - oauth2:
            - crm.schemas.courses.write
        - oauth2:
            - tickets.sensitive.v2
        - oauth2:
            - e-commerce
        - oauth2:
            - crm.schemas.appointments.write
        - oauth2:
            - crm.schemas.tasks.write
        - oauth2:
            - crm.schemas.contacts.write
        - oauth2:
            - crm.schemas.carts.write
        - oauth2:
            - crm.schemas.companies.write
        - oauth2:
            - crm.objects.tickets.sensitive.write
        - oauth2:
            - crm.schemas.subscriptions.write
        - oauth2:
            - crm.schemas.emails.write
        - oauth2:
            - crm.schemas.custom.write
        - oauth2:
            - crm.schemas.listings.write
        - oauth2:
            - crm.pipelines.orders.write
        - oauth2:
            - crm.objects.users.write
        - oauth2:
            - tickets.highly_sensitive.v2
        - oauth2:
            - crm.schemas.services.write
        - oauth2:
            - crm.schemas.notes.write
        - oauth2:
            - crm.objects.orders.write
        - oauth2:
            - crm.schemas.meetings.write
        - oauth2:
            - crm.schemas.deals.write
        - oauth2:
            - crm.schemas.calls.write
        - oauth2:
            - crm.objects.carts.write
        - oauth2:
            - crm.objects.tickets.highly_sensitive.write
components:
  schemas:
    PipelineStageReplaceInput:
      required:
        - displayOrder
        - label
        - metadata
      type: object
      properties:
        displayOrder:
          type: integer
          description: Un entier indiquant la position de l'étape dans le pipeline.
          format: int32
        label:
          type: string
          description: >-
            Le nom de l'étape du pipeline, représenté sous forme de chaîne de
            caractères.
        metadata:
          type: object
          additionalProperties:
            type: string
          description: >-
            Un objet contenant des propriétés supplémentaires liées à l'étape,
            où chaque propriété est une chaîne de caractères.
    PipelineStage:
      required:
        - archived
        - createdAt
        - displayOrder
        - id
        - label
        - metadata
        - updatedAt
        - writePermissions
      type: object
      properties:
        archived:
          type: boolean
          description: Un booléen indiquant si l'étape est archivée.
        archivedAt:
          type: string
          description: La date et l'heure d'archivage de l'étape, au format ISO 8601.
          format: date-time
        createdAt:
          type: string
          description: La date et l'heure de création de l'étape, au format ISO 8601.
          format: date-time
        displayOrder:
          type: integer
          description: >-
            Un entier indiquant la position de cette étape dans le pipeline,
            déterminant son ordre par rapport aux autres étapes.
          format: int32
        id:
          type: string
          description: Un identifiant de chaîne unique pour l'étape du pipeline.
        label:
          type: string
          description: >-
            Le nom ou le titre de l'étape du pipeline, représenté sous forme de
            chaîne de caractères.
        metadata:
          type: object
          additionalProperties:
            type: string
          description: >-
            Un objet contenant des métadonnées supplémentaires pour l'étape,
            avec des valeurs de chaîne pour chaque propriété.
        updatedAt:
          type: string
          description: >-
            La date et l'heure de la dernière mise à jour de l'étape, au format
            ISO 8601.
          format: date-time
        writePermissions:
          type: string
          description: "Une chaîne indiquant les permissions d'écriture pour l'étape. Les valeurs valides incluent «\_CRM_PERMISSIONS_ENFORCEMENT\_», «\_READ_ONLY\_» et «\_INTERNAL_ONLY\_»."
          enum:
            - CRM_PERMISSIONS_ENFORCEMENT
            - INTERNAL_ONLY
            - READ_ONLY
    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 de la condition d'erreur, représenté sous la forme d'un
            objet avec des propriétés supplémentaires.
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            Un identifiant unique pour la demande. Incluez cette valeur dans
            tous les rapports d'erreur ou tickets d'assistance.
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: >-
            Information supplémentaire sur l'erreur, représentée sous forme de
            tableau d'objets ErrorDetail.
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            Une carte des noms de liens vers les URI associés contenant la
            documentation sur l'erreur ou les étapes de remédiation
            recommandées.
        message:
          type: string
          description: >-
            Un message lisible par la personne décrivant l'erreur ainsi que les
            étapes de remédiation appropriées, 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. Il s'agit d'une propriété de type chaîne de caractères.
      description: >-
        Représente une réponse d'erreur renvoyée par l'API lorsqu'une opération
        échoue. Ce composant est utilisé dans divers points de terminaison pour
        fournir des informations détaillées sur l'erreur rencontrée.
      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
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: >-
            Le code de statut associé au détail de l'erreur. Il s'agit d'une
            propriété de type chaîne de caractères.
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            Contexte de la condition d'erreur, représenté sous la forme d'un
            objet avec des propriétés supplémentaires qui sont des tableaux de
            chaînes de caractères.
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: >-
            Le nom du champ ou du paramètre dans lequel l'erreur a été détectée.
            Il s'agit d'une propriété de type chaîne de caractères.
        message:
          type: string
          description: >-
            Un message lisible par la personne décrivant l'erreur ainsi que les
            étapes de remédiation appropriées, le cas échéant.
        subCategory:
          type: string
          description: >-
            Une catégorie spécifique qui contient des détails plus précis sur
            l'erreur. Il s'agit d'une propriété de type chaîne de caractères.
      description: >-
        Représente des informations détaillées sur une erreur survenue dans
        l'API. Ce composant est utilisé pour fournir un contexte et des
        spécificités supplémentaires sur les erreurs, généralement dans le cadre
        d'une réponse d'erreur.
  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:
            automation: ''
            cpq.quotes.read: ''
            cpq.quotes.write: ''
            crm.objects.appointments.read: ''
            crm.objects.appointments.sensitive.read.v2: ''
            crm.objects.appointments.sensitive.write.v2: ''
            crm.objects.appointments.write: ''
            crm.objects.calls.read: ''
            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.emails.read: ''
            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.meetings.read: ''
            crm.objects.notes.read: ''
            crm.objects.orders.read: ''
            crm.objects.orders.write: ''
            crm.objects.owners.read: ''
            crm.objects.products.write: ''
            crm.objects.projects.highly_sensitive.read: ''
            crm.objects.projects.highly_sensitive.write: ''
            crm.objects.projects.read: ''
            crm.objects.projects.sensitive.read: ''
            crm.objects.projects.sensitive.write: ''
            crm.objects.projects.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.tasks.read: ''
            crm.objects.tickets.highly_sensitive.read: ''
            crm.objects.tickets.highly_sensitive.write: ''
            crm.objects.tickets.sensitive.read: ''
            crm.objects.tickets.sensitive.write: ''
            crm.objects.users.read: ''
            crm.objects.users.write: ''
            crm.pipelines.approval.read: ''
            crm.pipelines.orders.read: ''
            crm.pipelines.orders.write: ''
            crm.schemas.appointments.read: ''
            crm.schemas.appointments.write: ''
            crm.schemas.calls.read: ''
            crm.schemas.calls.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.custom.write: ''
            crm.schemas.deals.read: ''
            crm.schemas.deals.write: ''
            crm.schemas.emails.read: ''
            crm.schemas.emails.write: ''
            crm.schemas.invoices.read: ''
            crm.schemas.invoices.write: ''
            crm.schemas.line_items.read: ''
            crm.schemas.listings.read: ''
            crm.schemas.listings.write: ''
            crm.schemas.meetings.read: ''
            crm.schemas.meetings.write: ''
            crm.schemas.notes.read: ''
            crm.schemas.notes.write: ''
            crm.schemas.orders.read: ''
            crm.schemas.orders.write: ''
            crm.schemas.projects.read: ''
            crm.schemas.quotes.read: ''
            crm.schemas.quotes.write: ''
            crm.schemas.services.read: ''
            crm.schemas.services.write: ''
            crm.schemas.subscriptions.read: ''
            crm.schemas.subscriptions.write: ''
            crm.schemas.tasks.read: ''
            crm.schemas.tasks.write: ''
            e-commerce: ''
            media_bridge.read: ''
            tickets.highly_sensitive.v2: ''
            tickets.sensitive.v2: ''

````