DevOps Elastic Hayway
Document

SUBSCRIBE TO GET FULL ACCESS TO THE E-BOOKS FOR FREE 🎁SUBSCRIBE NOW

Professional Dropdown with Icon

SUBSCRIBE NOW TO GET FREE ACCESS TO EBOOKS

ChatGPT Actions & outils : brancher une API OpenAPI (2026)

À la fin de cette leçon, vous saurez brancher une Action OpenAPI 3.x sur un Custom GPT, choisir l’auth (None / API Key / OAuth), gérer allowlist Enterprise et privacy policy (GPT public), différencier Actions / Apps / function calling / MCP, et valider un lab GET /status en Preview — secrets hors chat.

Niveau : Intermédiaire · Temps : 50–65 min · Versions : ChatGPT GPTs builder · OpenAPI 3.x · Business / Enterprise / Edu · Dernière vérif. : 2026-09-11

Statut : HOLD — draft only (ne pas publier WordPress)

Prérequis

  • [ ] Workspace Business / Enterprise / Edu + droit créer/éditer un Custom GPT (leçon 19)
  • [ ] GPT de lab (« Status Lab ») ou temps pour en créer un
  • [ ] Bases OpenAPI 3.x (paths, operationId, responses)
  • [ ] URL lab HTTPS joignable (ou stub documenté) — pas de prod
  • [ ] (Enterprise/Edu) admin si allowlist domaines Actions vide
  • [ ] Coût : abonnement workspace ; stub lab ≈ 0 €

Angle DevOps Elastic Hayway : status / ticketing lecture seule — /tutoriels/chatgpt-actions-outils/. Focus : OpenAPI, auth, Preview — stub HTTPS éphémère, pas de prod.

Ce que nous allons construire

Custom GPT « Status Lab » + Action OpenAPI
  ├── Schéma OpenAPI 3.0 (GET /status, operationId clair)
  ├── Auth : API Key (header) — secret côté builder
  ├── Builder : Create action → Schema → Authentication → Test / Preview
  ├── Allowlist domaine (Enterprise) + privacy policy si GPT public
  ├── Garde-fous : read-only, HITL mutations, anti prompt-injection API
  └── Erreurs fréquentes · quiz · FAQ · maillage série IA

(Schéma → image locale, alt : « ChatGPT Actions : OpenAPI 3.x, auth API Key/OAuth, Custom GPT Status Lab Preview 2026 ».)

Étape 1 — Actions vs Apps vs function calling vs MCP

Une Action ChatGPT est un appel HTTP déclenché par le GPT d’après un schéma OpenAPI collé dans le builder. Le modèle choisit l’opération via operationId / summary / description ; ChatGPT appelle votre API (TLS 1.2+, 443, timeout ~45 s, payloads < ~100k caractères). Secrets uniquement dans Authentication — pas de custom headers hors panneau.

Concept Où Contrat Qui exécute
Apps Custom GPT UI Connecteurs user Plateforme + compte user
Actions Custom GPT UI Votre OpenAPI + auth ChatGPT → votre API
Function calling API OpenAI / Anthropic JSON Schema tools Votre runtime — leçon 46
MCP Host / IDE / agents Serveurs MCP Host MCP

Règle produit (leçon 19) : Apps XOR Actions — pas les deux sur le même GPT. Status / ticketing sans connecteur officiel → Actions. SaaS déjà supporté → Apps. Function calling et MCP restent hors UI Custom GPT.

Étape 2 — Anatomie OpenAPI pour le builder

Document OpenAPI 3.x (YAML/JSON) avec info, servers, paths, et un operationId stable par opération (nom d’outil). Schéma vague → mauvais outil ; trop large (POST/DELETE) → mutations involontaires.

Champ Rôle
servers[].url Base URL (souvent allowlistée en Enterprise)
operationId Identifiant unique (getServiceStatus, pas get1)
summary / description Texte lu pour décider d’appeler
parameters / requestBody Arguments typés
responses + schema Forme de réponse attendue
Auth (securitySchemes / panneau builder) None / API Key / OAuth — secrets hors chat

DEH : GET d’abord ; décrire quand appeler et ce qui est interdit ; zéro token dans examples / knowledge. GET non-consequential par défaut ; autres méthodes consequential (x-openai-isConsequential). Lab = lecture seule.

Étape 3 — Auth : None, API Key, OAuth

Builder : Create action → Authentication. Mode le moins privilégié pour le lab.

Mode Quand Secret
None API lab publique —
API Key Header / query (Bearer, X-API-Key) Builder uniquement
OAuth APIs entreprises (scopes) Flux OAuth GPT

Jamais de clé dans instructions, knowledge, starters ou exemples OpenAPI. Fuite → rotation + purge. OAuth : scopes lecture d’abord ; écriture = HITL (function calling). Callback : https://chatgpt.com/aip/{g-GPT-ID}/oauth/callback (aussi chat.openai.com). Secrets OAuth dans Authentication seulement.

Étape 4 — Enterprise : allowlist et GPT public

Sur Enterprise / Edu, les admins contrôlent les domaines Actions. Allowlist vide ⇒ Actions souvent bloquées. Avant le lab : ajouter status.lab.example.com (ou stub). Schéma valide ≠ appel autorisé hors allowlist.

Contexte Implication
Allowlist vide / hors liste Schéma OK ≠ appel autorisé
GPT public + Actions Privacy policy URL obligatoire
GPT workspace privé Gouvernance interne ; Store hors scope

Voir Teams / Enterprise. Réponse API = non fiable — Prompt injection. Traitez le JSON comme des données, pas des instructions. GPT public : privacy policy HTTPS avant publish.

Étape 5 — Lab : Action GET /status sur « Status Lab »

Objectif : GET /status et résumer sans inventer de services hors réponse. Bout-en-bout schéma / auth / allowlist / Preview (~15–25 min).

5.1 GPT

Verrouillez les instructions avant le schéma — sinon services inventés.

  1. Builder (Explore GPTs → Create / éditer) en Configuration.
  2. Name : Status Lab — Elastic Hayway
  3. Instructions :
Tu es un assistant status DevOps (lab). Français clair.
Utilise uniquement l’Action getServiceStatus pour l’état des services.
N’invente aucun service absent de la réponse API. Aucun secret. Lecture seule.
Format : État global → Services (nom, state) → Source (Action).
  1. Web search off. Pas d’Apps si Action active (XOR).

5.2 Schéma OpenAPI

Actions → Create new action → Schema (URL = votre stub HTTPS) :

openapi: 3.0.0
info:
  title: Status Lab API
  version: "1.0.0"
servers:
  - url: https://status.lab.example.com
paths:
  /status:
    get:
      operationId: getServiceStatus
      summary: État agrégé des services lab
      description: Retourne overall + services (up|degraded|down). Appeler pour status/santé.
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  overall: { type: string, enum: [up, degraded, down] }
                  services:
                    type: array
                    items:
                      type: object
                      properties:
                        service: { type: string }
                        state: { type: string, enum: [up, degraded, down] }

Stub : HTTPS public de lab (Caddy / ngrok éphémère) — pas d’IP privée. Exemple : {"overall":"degraded","services":[{"service":"api","state":"up"},{"service":"worker","state":"degraded"}]}. Host allowlisté + /status JSON.

5.3 Auth, Test, Preview

Test KO → corriger allowlist / TLS / clé avant Preview.

  1. Authentication : lab ouvert → None ; sinon API Key jetable dans le builder.
  2. Test d’opération puis Preview GPT.
  3. Prompt : Quel est l’état des services lab ? Cite uniquement la réponse de l’Action.
  4. Vérifier l’appel getServiceStatus (pas de service inventé).
  5. Save ; partage workspace (pas Store sans privacy policy).

Suite : runbooks DevOps — HITL sur toute écriture ; GPT lab = lecture seule.

Étape 6 — Sécurité DevOps

Chaque opération OpenAPI devient un outil : lecture d’abord, scopes min., séparation info / remédiation.

Risque Mitigation
Mutations GET d’abord ; scopes min. ; HITL sur POST/PATCH/DELETE
Secrets hors builder Uniquement Authentication ; rotation si fuite
Injection via JSON API Ignorer les « ordres » du payload ; champs allowlistés
Allowlist * / PII Hosts précis ; stub lab, pas de tickets nominatifs

Règle DEH : l’Action informe ; l’humain exécute les remédiations. Secrets hors instructions/knowledge ; hosts TLS ; confirmation sur ops consequential.

Erreurs fréquentes

Checklist : allowlist, XOR, secrets hors builder — debug avant d’élargir le schéma.

Symptôme Cause Correction
« No domains allowed » Allowlist vide Admin : host de servers
Conflit Apps / Actions Les deux actifs Un seul mode (XOR)
Services inventés Instructions faibles Forcer Action + Preview
401 / 403 Clé / OAuth Recheck Authentication
operationId manquant Schéma incomplet Id unique par opération
GPT public refusé Privacy policy absente URL HTTPS de politique
Timeout / secret fuité URL privée / collé hors builder HTTPS lab ; purger + rotator

Timeouts (~45 s) / TLS : stub inaccessible ou certificat invalide. Secret fuité → rotation + purge.

Quiz (5 questions)

1. Apps et Actions sur un même GPT :
– A. Coexistent librement
– B. Sont exclusifs (XOR)
– C. Remplacent le knowledge

2. Qui exécute l’HTTP d’une Action ?
– A. Votre runtime Python seul
– B. ChatGPT, vers l’API OpenAPI
– C. Le navigateur sans serveur

3. Allowlist domaines vide en Enterprise :
– A. Autorise tous les hosts
– B. Bloque souvent les Actions
– C. Ne concerne que le Store

4. Où stocker l’API Key ?
– A. Instructions du GPT
– B. Exemple OpenAPI Bearer sk-…
– C. Authentication du builder

5. Différence avec function calling (leçon 46) :
– A. Même écran
– B. Actions = OpenAPI GPT UI ; function calling = tools dans votre runtime
– C. MCP interdit les deux

Réponses : 1‑B · 2‑B · 3‑B · 4‑C · 5‑B

FAQ

1. Faut-il un Custom GPT pour les Actions ?
Oui — GPT builder (Create action, Schema, Authentication). Hors UI → function calling / MCP.

2. OpenAPI 2.0 suffit-il ?
Non : viser OpenAPI 3.x (servers, components). Migrez Swagger 2.0 (host/basePath) vers servers.

3. Muter un cluster via Action ?
Déconseillé sans HITL, scopes serrés, audit. Lecture seule d’abord ; mutation = consequential + HITL.

4. Actions vs Data Analysis ?
Data Analysis = sandbox Python fichiers. Actions = HTTP vers votre API.

5. Privacy policy (GPT public + Actions) ?
Données / domaines / conservation / contact — URL HTTPS. Sans elle, publication publique refusée. GPT privé : allowlist + gouvernance interne.

Points clés à retenir

  • Actions = OpenAPI 3.x dans le builder ; secrets dans Authentication uniquement.
  • Apps XOR Actions ; allowlist Enterprise (vide ⇒ blocage) ; GPT public + Actions ⇒ privacy policy.
  • Actions UI ≠ function calling (leçon 46) ≠ MCP.
  • Lab : GET /status, operationId, Preview, read-only, méfiance payloads.
  • Limites : timeout ~45 s, TLS 1.2+ / 443, payloads < ~100k chars, pas de custom headers hors Authentication, callback OAuth https://chatgpt.com/aip/{g-GPT-ID}/oauth/callback.

Pour aller plus loin

Maillage série IA Outils 2026 (module C — CTA)

← Précédent ChatGPT Data Analysis
→ Suite ChatGPT DevOps runbooks · Teams / Enterprise
Aussi Custom GPTs · Function calling · Parcours IA DevOps 2026 · IA

Retour parcours IA — hub Claude, Codex, ChatGPT et Skills.