{
  "source": {
    "repository": "https://github.com/APIOpsCycles/apiops-cycles-method-data",
    "commit": "4418d7ccff492f591957f0e53fd9d476354041d7"
  },
  "locales": [
    "en",
    "fi",
    "fr",
    "de",
    "pt"
  ],
  "defaultLocale": "en",
  "generatedAt": "2026-07-24T13:03:14.377Z",
  "translations": {
    "fr": {
      "labels": {
        "stations": "Stations",
        "why_it_matters": "Pourquoi cette station existe ?",
        "outcomes": "Résultats",
        "how_it_works": "Comment cela fonctionne-t-il ?",
        "steps": "Étapes",
        "apply_in_work": "Voici à quoi ressemble le succès",
        "related_metrolines": "Inclus dans ces lignes de métro",
        "entry_criteria_title": "Signaux de départ",
        "exit_criteria_title": "Bien fait quand",
        "cycles.title": "Vues de cycle",
        "cycles.description": "Vues adaptées aux publics sur le méthode APIOps Cycles.",
        "cycle.capability-productization-cycle.title": "Cycle de productisation des capacités",
        "cycle.capability-productization-cycle.description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre.",
        "cycle.capability-productization-cycle.purpose": "Identifier et productiser des capacites numeriques reutilisables avant de choisir un mode de mise en oeuvre API, evenement, fichier, flux, produit de donnees, service avec IA, integration directe ou hybride.",
        "cycle.api-productization-cycle.title": "Cycle de productisation des API",
        "cycle.api-productization-cycle.description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API.",
        "cycle.api-productization-cycle.purpose": "Parcours méthodologique centré sur les API pour les équipes qui savent déjà que le mode de mise en œuvre prévu est un produit API.",
        "cycle.integration-productization-cycle.title": "Cycle de productisation des capacités d’intégration",
        "cycle.integration-productization-cycle.description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre.",
        "cycle.integration-productization-cycle.purpose": "Guider la conception de capacites d integration reutilisables avant de choisir un mode de mise en oeuvre API, evenement, fichier, flux, produit de donnees, integration directe ou hybride.",
        "cycle.station.capability-strategy": "Stratégie de capacité",
        "cycle.station.consumer-requirements-onboarding": "Exigences utilisateurs & onboarding",
        "cycle.station.architecture-platform-decisions": "Architecture & décisions de plateforme",
        "cycle.station.solution-interface-design": "Conception de solution & d’interface",
        "cycle.station.delivery-operations": "Mise à disposition & opérations",
        "cycle.station.quality-readiness-assurance": "Assurance qualité & préparation",
        "cycle.station.publishing-enablement": "Publication & enablement",
        "cycle.station.monitoring-improvement": "Suivi & amélioration",
        "cycle.station.api-product-strategy": "Stratégie produit API",
        "cycle.station.api-consumer-experience": "Expérience utilisateur API",
        "cycle.station.api-platform-architecture": "Architecture de plateforme API",
        "cycle.station.api-design": "Conception d’API",
        "cycle.station.api-delivery": "Livraison d’API",
        "cycle.station.api-audit": "Audit API",
        "cycle.station.api-publishing": "Publication d’API",
        "cycle.station.monitoring-and-improving": "Suivi & amelioration API",
        "cycle.station.integration-capability-strategy": "Stratégie de capacité d’intégration",
        "cycle.station.integration-consumer-requirements-onboarding": "Exigences des utilisateurs d’intégration & onboarding",
        "cycle.station.integration-architecture-decision": "Architecture d integration & decisions de plateforme",
        "cycle.station.integration-solution-design": "Conception de solution d’intégration",
        "cycle.station.integration-delivery-operations": "Livraison & opérations d’intégration",
        "cycle.station.integration-readiness-assurance": "Assurance qualité des intégrations",
        "cycle.station.capability-publishing": "Publication & enablement de l integration",
        "cycle.station.integration-monitoring-improvement": "Suivi & amélioration des intégrations",
        "cycle.capability-productization-cycle.station.api-product-strategy.description": "Cadrer le besoin metier comme une capacite reutilisable avec une valeur, des utilisateurs, une responsabilite et des objectifs metier clairs avant de choisir le mode de mise en oeuvre.",
        "cycle.capability-productization-cycle.station.api-consumer-experience.description": "Capturez les exigences des utilisateurs, les besoins d’onboarding, les contraintes, les attentes de service et les responsabilités des fournisseurs.",
        "cycle.capability-productization-cycle.station.api-platform-architecture.description": "Utiliser les exigences et contraintes pour choisir le mode de mise en oeuvre, le pattern d architecture et les capacites de plateforme necessaires.",
        "cycle.capability-productization-cycle.station.api-design.description": "Concevoir le contrat d interface et le modele d interaction pour le mode de mise en oeuvre choisi.",
        "cycle.capability-productization-cycle.station.api-delivery.description": "Construire, tester, deployer et exploiter la capacite avec le mode de mise en oeuvre choisi et le contrat d interface valide.",
        "cycle.capability-productization-cycle.station.api-audit.description": "Valider le contrat d interface, les controles, la documentation, le modele de support et la preparation operationnelle avant publication.",
        "cycle.capability-productization-cycle.station.api-publishing.description": "Publier la capacite afin que les utilisateurs puissent la decouvrir, l evaluer, demander l acces, terminer l onboarding, l utiliser et obtenir du support.",
        "cycle.capability-productization-cycle.station.monitoring-and-improving.description": "Suivez la santé de la capacité, les résultats utilisateurs, la fiabilité, la réutilisation et les opportunités d’amélioration.",
        "cycle.owner.business-owner": "Responsable métier",
        "cycle.owner.domain-expert": "Expert domaine",
        "cycle.owner.capability-owner": "Responsable de capacité",
        "cycle.owner.consumer-representative": "Représentant des utilisateurs",
        "cycle.owner.enterprise-architect": "Architecte d’entreprise",
        "cycle.owner.platform-owner": "Responsable plateforme",
        "cycle.owner.api-product-owner": "Product owner API",
        "cycle.owner.api-platform-owner": "Responsable plateforme API",
        "cycle.owner.integration-architect": "Architecte d’intégration",
        "cycle.owner.solution-architect": "Architecte solution",
        "cycle.api-productization-cycle.station.api-product-strategy.description": "Avant de construire quoi que ce soit, définissez dès le départ la valeur de votre API, ses utilisateurs et ses objectifs métier.",
        "cycle.api-productization-cycle.station.api-consumer-experience.description": "Veillez à ce que votre API soit découvrable, compréhensible et utilisable - avant et après le lancement.",
        "cycle.api-productization-cycle.station.api-platform-architecture.description": "Assurez l'évolutivité, la réutilisation et la gouvernance de vos composants d'API et de plateforme.",
        "cycle.api-productization-cycle.station.api-design.description": "Créer des architectures d'API cohérentes, réutilisables et fondées sur les objectifs métier et des normes communes.",
        "cycle.api-productization-cycle.station.api-delivery.description": "Construire, tester et publier des API en utilisant des pipelines de livraison modernes et les meilleures pratiques d'ingénierie.",
        "cycle.api-productization-cycle.station.api-audit.description": "Vérifiez que les API répondent aux normes métier, de conception et opérationnelles avant leur publication et leur mise à disposition.",
        "cycle.api-productization-cycle.station.api-publishing.description": "Exposer les API de manière sûre et claire au bon public avec la bonne documentation et les bons processus.",
        "cycle.api-productization-cycle.station.monitoring-and-improving.description": "Utiliser les mesures et le retour d'information pour suivre les performances de l'API et favoriser l'amélioration continue.",
        "cycle.integration-productization-cycle.station.api-product-strategy.description": "Cadrer la capacite d integration reutilisable, le besoin metier, la responsabilite et la reutilisation attendue avant de choisir le mode de mise en oeuvre.",
        "cycle.integration-productization-cycle.station.api-consumer-experience.description": "Capturez les utilisateurs d’intégration, les responsabilités des fournisseurs, les besoins d’onboarding, les attentes de service et les contraintes opérationnelles.",
        "cycle.integration-productization-cycle.station.api-platform-architecture.description": "Choisir l architecture d integration, le mode de mise en oeuvre et les capacites de plateforme en tenant compte des contraintes et du modele de gouvernance.",
        "cycle.integration-productization-cycle.station.api-design.description": "Concevoir le contrat d interface, les schemas, les payloads et les modeles d interaction pour le style d integration choisi.",
        "cycle.integration-productization-cycle.station.api-delivery.description": "Construire, tester, automatiser, deployer et exploiter la capacite d integration avec le mode de mise en oeuvre choisi et le contrat d interface valide.",
        "cycle.integration-productization-cycle.station.api-audit.description": "Assurez la préparation, la gouvernance, la qualité, la sécurité, la conformité et les preuves opérationnelles de l’intégration avant publication.",
        "cycle.integration-productization-cycle.station.api-publishing.description": "Publier la capacite d integration afin que les equipes puissent la decouvrir, l evaluer, demander l acces, terminer l onboarding, la reutiliser et obtenir du support.",
        "cycle.integration-productization-cycle.station.monitoring-and-improving.description": "Suivez la fiabilité, la réutilisation, les incidents, la performance, les résultats utilisateurs et les besoins d’amélioration de l’intégration.",
        "cycle.automation-cycle.title": "Cycle d’automatisation",
        "cycle.automation-cycle.description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation.",
        "cycle.automation-cycle.purpose": "Productiser les opportunités d’automatisation en workflows gouvernés avec des utilisateurs, plateformes, contrôles, chemins de livraison, enablement et suivi clairement définis.",
        "cycle.audience.automation-owners": "Responsables automatisation",
        "cycle.audience.process-owners": "Responsables de processus",
        "cycle.audience.automation-teams": "Équipes d’automatisation",
        "cycle.station.automation-opportunity-strategy": "Stratégie d’opportunité d’automatisation",
        "cycle.station.process-user-requirements": "Exigences processus & utilisateur",
        "cycle.station.automation-platform-decision": "Décision de plateforme d’automatisation",
        "cycle.station.automation-workflow-design": "Conception de workflow d’automatisation",
        "cycle.station.automation-delivery": "Livraison & operations de l automatisation",
        "cycle.station.automation-readiness-review": "Revue de préparation de l’automatisation",
        "cycle.station.automation-enablement": "Deploiement & enablement de l automatisation",
        "cycle.station.automation-monitoring-improvement": "Suivi & amélioration de l’automatisation",
        "cycle.automation-cycle.station.api-product-strategy.description": "Identifiez et priorisez les opportunités d’automatisation selon la valeur, la faisabilité, le risque, la responsabilité et l’impact attendu sur le processus.",
        "cycle.automation-cycle.station.api-consumer-experience.description": "Capturez les utilisateurs du processus, les rôles, les transferts, les exceptions, les contraintes et les attentes de service avant de concevoir l’automatisation.",
        "cycle.automation-cycle.station.api-platform-architecture.description": "Choisir la plateforme d automatisation, le runtime, l approche d integration, les controles de gouvernance et les contraintes operationnelles.",
        "cycle.automation-cycle.station.api-design.description": "Concevoir le workflow d automatisation, les declencheurs, les points de decision, les integrations, le traitement des donnees, les contrats d interface pertinents et les chemins d exception.",
        "cycle.automation-cycle.station.api-delivery.description": "Construisez, testez, déployez, documentez et exploitez l’automatisation avec une responsabilité et des chemins de rollback clairs.",
        "cycle.automation-cycle.station.api-audit.description": "Revoyez la préparation, la qualité, les risques, la conformité, la supervision humaine, les preuves et les critères de publication de l’automatisation.",
        "cycle.automation-cycle.station.api-publishing.description": "Enablez les utilisateurs et opérateurs avec découverte, onboarding, instructions d’exploitation, chemins de support et communication de changement.",
        "cycle.automation-cycle.station.monitoring-and-improving.description": "Suivez la performance de l’automatisation, les exceptions, la fiabilité, les résultats utilisateurs, l’impact opérationnel et les opportunités d’amélioration.",
        "group.core-stations.title": "Stations centrales du cycle de vie des capacités",
        "group.core-stations.description": "Les stations centrales du graphe de méthode APIOps Cycles, où les équipes apprennent à concevoir, fournir, gouverner et améliorer des capacités réutilisables via des API, événements, fichiers, flux, produits de données et autres modes d'intégration.",
        "group.sub-stations.title": "Stations de soutien",
        "group.sub-stations.description": "Stations de soutien qui fournissent des pratiques, points de décision et ressources réutilisables dans différents parcours APIOps Cycles.",
        "station.api-product-strategy.title": "Stratégie de capacité",
        "station.api-product-strategy.description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre.",
        "station.api-product-strategy.why_it_matters": "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe.",
        "station.api-product-strategy.apply_in_work": "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
        "station.api-product-strategy.outcomes": "Une opportunité de capacité indépendante de la technologie",
        "station.api-product-strategy.how_it_works": "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
        "station.api-consumer-experience.title": "Exigences utilisateurs & onboarding",
        "station.api-consumer-experience.description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs.",
        "station.api-consumer-experience.why_it_matters": "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur.",
        "station.api-consumer-experience.how_it_works": "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
        "station.api-consumer-experience.how_it_works.1": "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
        "station.api-consumer-experience.how_it_works.2": "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
        "station.api-consumer-experience.apply_in_work": "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
        "station.api-consumer-experience.outcomes": "Exigences utilisateurs et attentes d'onboarding explicites",
        "station.api-platform-architecture.title": "Architecture & décisions de plateforme",
        "station.api-platform-architecture.description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel.",
        "station.api-platform-architecture.why_it_matters": "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes.",
        "station.api-platform-architecture.apply_in_work": "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
        "station.api-platform-architecture.outcomes": "Décision d'architecture et de plateforme validée",
        "station.api-platform-architecture.how_it_works": "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
        "station.api-design.title": "Conception de solution & d'interface",
        "station.api-design.description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation.",
        "station.api-design.why_it_matters": "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs.",
        "station.api-design.apply_in_work": "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
        "station.api-design.outcomes": "Un contrat d'interface validé pour le mode de mise en œuvre choisi",
        "station.api-design.how_it_works": "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
        "station.api-delivery.title": "Mise à disposition & opérations",
        "station.api-delivery.description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation.",
        "station.api-delivery.why_it_matters": "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe.",
        "station.api-delivery.apply_in_work": "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
        "station.api-delivery.outcomes": "Une capacité livrée conformément au contrat d'interface validé",
        "station.api-delivery.how_it_works": "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
        "station.api-audit.title": "Assurance qualité & préparation",
        "station.api-audit.description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication.",
        "station.api-audit.why_it_matters": "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production.",
        "station.api-audit.apply_in_work": "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
        "station.api-audit.outcomes": "Préparation documentée pour la publication et la réutilisation",
        "station.api-audit.how_it_works": "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
        "station.api-publishing.title": "Publication & enablement",
        "station.api-publishing.description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support.",
        "station.api-publishing.why_it_matters": "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie.",
        "station.api-publishing.apply_in_work": "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
        "station.api-publishing.outcomes": "Une capacité découvrable et utilisable",
        "station.api-publishing.how_it_works": "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
        "station.monitoring-and-improving.title": "Suivi & amélioration",
        "station.monitoring-and-improving.description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication.",
        "station.monitoring-and-improving.why_it_matters": "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent.",
        "station.monitoring-and-improving.apply_in_work": "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
        "station.monitoring-and-improving.outcomes": "Santé et contribution de valeur de la capacité mesurées",
        "station.monitoring-and-improving.how_it_works": "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
        "station.user-experience.title": "Expérience utilisateur - Concevoir des API en pensant à l'utilisateur",
        "station.user-experience.description": "Veiller à ce que les API soient conçues en pensant à l'utilisateur final, en lui offrant une expérience transparente et intuitive.",
        "station.user-experience.why_it_matters": "Les API ne sont pas seulement des produits techniques, ce sont des produits orientés vers l'utilisateur. Une mauvaise expérience utilisateur peut entraîner une faible adoption et de la frustration. Cette station aide les équipes à concevoir des API conviviales et répondant aux besoins des utilisateurs.",
        "station.user-experience.apply_in_work": "Fournir des lignes directrices, des modèles et des outils en matière d'expérience utilisateur pour la conception d'API. Veiller à ce que les équipes suivent des pratiques de conception centrées sur l'utilisateur et intègrent les commentaires des utilisateurs dans les itérations de l'API.",
        "station.user-experience.outcomes": "Des API conçues en fonction des besoins des utilisateurs",
        "station.user-experience.how_it_works": "Utiliser des profils d'utilisateurs pour comprendre les besoins et les attentes des utilisateurs finaux.",
        "station.market-insights.title": "Aperçus du marché - Comprendre le paysage de l'API",
        "station.market-insights.description": "Analyser les tendances du marché, les API des concurrents et les normes du secteur afin d'éclairer la stratégie en matière d'API.",
        "station.market-insights.why_it_matters": "Comprendre le paysage du marché aide les équipes à identifier les opportunités, à éviter les pièges et à aligner leurs API sur les normes de l'industrie. Cette station fournit des outils pour analyser les tendances du marché et les offres des concurrents.",
        "station.market-insights.apply_in_work": "Fournir des outils d'étude de marché, des modèles d'analyse de la concurrence et des ressources sur les normes industrielles. Veiller à ce que les équipes se tiennent informées des tendances du marché et intègrent les informations dans la stratégie API.",
        "station.market-insights.outcomes": "Analyse des tendances du marché et des API des concurrents",
        "station.market-insights.how_it_works": "Réaliser des études de marché pour identifier les tendances, les opportunités et les menaces dans le domaine des API.",
        "station.business-goals.title": "Objectifs de l'entreprise - Aligner les API sur les objectifs de l'entreprise",
        "station.business-goals.description": "Veiller à ce que les API soient alignées sur les objectifs de l'entreprise et contribuent aux objectifs généraux de l'organisation.",
        "station.business-goals.why_it_matters": "Les API ne doivent pas être conçues de manière isolée ; elles doivent soutenir et stimuler les objectifs de l'entreprise. Cette station aide les équipes à aligner leurs API sur les objectifs stratégiques, en veillant à ce qu'elles apportent une réelle valeur ajoutée à l'entreprise.",
        "station.business-goals.apply_in_work": "Fournir des cadres, des modèles et des outils d'alignement commercial pour définir la valeur métier des API. Veiller à ce que les équipes examinent et alignent régulièrement les API sur l'évolution des objectifs de l'entreprise.",
        "station.business-goals.outcomes": "Des API alignées sur les objectifs de l'entreprise",
        "station.business-goals.how_it_works": "Définissez les objectifs de l'entreprise et la manière dont les API peuvent les soutenir en utilisant **le Business Model Canvas**. Si votre activité consiste à fournir des API, passez par *la station API Product Strategy* et remplissez **l'API Business Model Canvas**.",
        "station.competitive-analysis.title": "Analyse concurrentielle - Garder une longueur d'avance sur le marché des API",
        "station.competitive-analysis.description": "Analyser les API des concurrents pour identifier les forces, les faiblesses et les possibilités de différenciation.",
        "station.competitive-analysis.why_it_matters": "Comprendre le paysage concurrentiel aide les équipes à identifier les lacunes, les opportunités et les domaines d'amélioration de leurs API. Cette station fournit des outils pour analyser les concurrents et informer la stratégie API.",
        "station.competitive-analysis.apply_in_work": "Fournir des outils, des modèles et des ressources d'analyse de la concurrence. Veiller à ce que les équipes analysent régulièrement les concurrents et intègrent les informations dans la stratégie et la conception de l'API.",
        "station.competitive-analysis.outcomes": "Analyse des forces et des faiblesses des API concurrentes",
        "station.competitive-analysis.how_it_works": "Effectuer une analyse concurrentielle afin d'identifier les principaux concurrents, leurs offres d'API, ainsi que leurs forces et faiblesses.",
        "station.ecosystem-vision.title": "Vision de l'écosystème - Créer des API pour un écosystème prospère",
        "station.ecosystem-vision.description": "Créez une vision de la manière dont vos API s'intègrent dans un écosystème plus large, favorisant la collaboration et l'innovation.",
        "station.ecosystem-vision.why_it_matters": "Les API ne sont pas des produits autonomes ; elles font partie d'un écosystème plus large. Cette station aide les équipes à définir comment leurs API interagissent avec d'autres systèmes, plateformes et services afin de créer un écosystème prospère qui favorise la collaboration et l'innovation.",
        "station.ecosystem-vision.apply_in_work": "Fournir des cadres de vision de l'écosystème, des stratégies d'engagement des partenaires et des lignes directrices en matière d'intégration. Veiller à ce que les équipes conçoivent les API en tenant compte de l'écosystème et favorisent la collaboration entre les partenaires.",
        "station.ecosystem-vision.outcomes": "Une vision claire de l'écosystème est définie pour les API",
        "station.ecosystem-vision.how_it_works": "Définissez la vision de l'écosystème pour vos API, y compris la manière dont elles interagiront avec d'autres systèmes et plateformes.",
        "station.scalable-infrastructure.title": "Infrastructure évolutive - Créer des API sur une base solide",
        "station.scalable-infrastructure.description": "Veillez à ce que votre infrastructure API puisse évoluer pour répondre à la demande croissante et prendre en charge la haute disponibilité.",
        "station.scalable-infrastructure.why_it_matters": "Les API doivent être construites sur une infrastructure robuste capable de gérer un trafic croissant et d'assurer une haute disponibilité. Cette station fournit des lignes directrices pour la conception et la mise en œuvre d'une infrastructure évolutive qui prend en charge la croissance et les performances des API.",
        "station.scalable-infrastructure.apply_in_work": "Fournir des lignes directrices pour la conception de l'infrastructure, des modèles \"cloud-native\" et des outils de surveillance. Veiller à ce que les équipes mettent en œuvre une infrastructure évolutive capable de s'adapter à l'évolution de la demande et de prendre en charge les performances de l'API.",
        "station.scalable-infrastructure.outcomes": "Infrastructure API évolutive et résiliente",
        "station.scalable-infrastructure.how_it_works": "Concevoir une infrastructure d'API évolutive et résiliente, en utilisant des modèles et des technologies \"cloud-native\".",
        "station.legal-and-compliance.title": "Juridique et conformité - S'assurer que les API respectent les normes réglementaires",
        "station.legal-and-compliance.description": "Veillez à ce que les API soient conformes aux exigences légales et réglementaires, afin de protéger votre organisation et vos utilisateurs.",
        "station.legal-and-compliance.why_it_matters": "Les API doivent respecter les normes légales et réglementaires afin de protéger votre organisation et vos utilisateurs. Cette station fournit des outils et des lignes directrices pour s'assurer que les API respectent les exigences de conformité, réduisent les risques juridiques et garantissent la protection des données.",
        "station.legal-and-compliance.apply_in_work": "Fournir des cadres juridiques et de conformité, des listes de contrôle et des outils pour garantir la conformité des API. Veiller à ce que les équipes comprennent et mettent en œuvre les exigences juridiques dans la conception, le développement et la publication des API.",
        "station.legal-and-compliance.outcomes": "API conformes aux normes légales et réglementaires",
        "station.legal-and-compliance.how_it_works": "Identifier les exigences légales et réglementaires qui s'appliquent à vos API, telles que les normes de protection des données, de confidentialité et de sécurité.",
        "station.security-and-privacy.title": "Sécurité et confidentialité - Protégez vos API et vos utilisateurs",
        "station.security-and-privacy.description": "Mettre en œuvre des mesures de sécurité et de confidentialité pour protéger les API et les données des utilisateurs contre les menaces et les violations.",
        "station.security-and-privacy.why_it_matters": "Les API sont vulnérables aux menaces de sécurité et aux violations de données. Cette station fournit des lignes directrices pour la mise en œuvre de mesures de sécurité et de confidentialité qui protègent les API et les données des utilisateurs, garantissant ainsi la confiance et la conformité.",
        "station.security-and-privacy.apply_in_work": "Fournir des cadres de sécurité, des outils et des meilleures pratiques pour la sécurité et la confidentialité des API. Veiller à ce que les équipes mettent en œuvre des mesures de sécurité tout au long du cycle de vie de l'API, de la conception à la publication et à la surveillance.",
        "station.security-and-privacy.outcomes": "API sécurisées contre les menaces et les vulnérabilités",
        "station.security-and-privacy.how_it_works": "Mettre en œuvre des mesures de sécurité telles que l'authentification, l'autorisation, le cryptage et la limitation du débit pour protéger les API contre les menaces.",
        "station.design-standards.title": "Normes de conception - Garantir une conception cohérente et de haute qualité de l'API",
        "station.design-standards.description": "Établir des normes et des lignes directrices en matière de conception afin de garantir une conception cohérente et de haute qualité de l'API dans l'ensemble de l'organisation.",
        "station.design-standards.why_it_matters": "Une conception cohérente et de haute qualité des API est essentielle pour la convivialité, la maintenabilité et l'évolutivité. Cette station fournit des normes de conception et des lignes directrices qui aident les équipes à créer des API faciles à utiliser, à comprendre et à maintenir.",
        "station.design-standards.apply_in_work": "Fournir une documentation sur les normes de conception, les composants réutilisables et les processus de révision de la conception. Veiller à ce que les équipes respectent les normes de conception et procèdent à des révisions régulières afin de maintenir une conception d'API de haute qualité.",
        "station.design-standards.outcomes": "Conception cohérente de l'API dans l'ensemble de l'organisation",
        "station.design-standards.how_it_works": "Définir des normes et des lignes directrices pour la conception des API, y compris les conventions de dénomination, les formats de réponse et la gestion des erreurs.",
        "station.vendor-management.title": "Gestion des fournisseurs - Gestion des intégrations d'API de tiers",
        "station.vendor-management.description": "Gérer efficacement les fournisseurs d'API tiers et les intégrations pour garantir la fiabilité et la conformité.",
        "station.vendor-management.why_it_matters": "Les API tierces peuvent présenter des risques et des dépendances qui ont un impact sur votre écosystème d'API. Ce station fournit des lignes directrices pour gérer les relations avec les fournisseurs, garantir la fiabilité, la conformité et l'alignement sur votre stratégie d'API.",
        "station.vendor-management.apply_in_work": "Fournir des cadres de gestion des fournisseurs, des critères d'évaluation et des outils de suivi. Veiller à ce que les équipes gèrent efficacement les fournisseurs d'API tiers, en garantissant la fiabilité, la conformité et l'alignement sur les normes de l'organisation.",
        "station.vendor-management.outcomes": "Mise en place de processus efficaces de gestion des fournisseurs",
        "station.vendor-management.how_it_works": "Mettre en place des processus de gestion des fournisseurs afin d'évaluer, d'intégrer et de contrôler les fournisseurs d'API tiers.",
        "station.contract-design.title": "Conception des contrats - Définir des contrats API clairs",
        "station.contract-design.description": "Créer des contrats d'interface clairs et bien définis qui décrivent les attentes, les responsabilités et les directives d'utilisation.",
        "station.contract-design.why_it_matters": "Les contrats d'interface sont essentiels pour garantir la clarté et l'alignement entre les fournisseurs d'API et les utilisateurs. Cette station fournit des lignes directrices pour la conception de contrats d'interface clairs, complets et faciles à comprendre.",
        "station.contract-design.apply_in_work": "Fournir des modèles de conception de contrats, des formats normalisés et des processus d'examen. Veiller à ce que les équipes créent des contrats d'interface clairs et bien définis qui décrivent les attentes, les responsabilités et les directives d'utilisation.",
        "station.contract-design.outcomes": "Contrats d'interface clairs définis pour chaque API",
        "station.contract-design.how_it_works": "Définir des contrats d'interface qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
        "station.development.title": "Développement - Construire des API avec les meilleures pratiques",
        "station.development.description": "Mettre en œuvre des API en utilisant les meilleures pratiques et les meilleurs cadres afin de garantir la qualité, la maintenabilité et l'évolutivité.",
        "station.development.why_it_matters": "Le développement de l'API est une phase critique qui détermine la qualité et la fiabilité de l'API. Cette station fournit les meilleures pratiques et les cadres pour le développement d'API, garantissant que les API sont construites selon des normes élevées et qu'elles peuvent être maintenues et mises à l'échelle efficacement.",
        "station.development.apply_in_work": "Fournir des frameworks de développement, des bibliothèques et des normes de codage pour la mise en œuvre de l'API. Veiller à ce que les équipes suivent les meilleures pratiques et effectuent des révisions de code afin de maintenir un développement d'API de haute qualité.",
        "station.development.outcomes": "API développées à l'aide des meilleures pratiques et des meilleurs cadres",
        "station.development.how_it_works": "Utiliser des cadres et des bibliothèques établis pour mettre en œuvre les API, en veillant à ce qu'elles soient réutilisables et faciles à entretenir.",
        "station.ci-cd.title": "CI/CD - Automatiser la livraison des API",
        "station.ci-cd.description": "Mettre en œuvre des pipelines d'intégration continue et de livraison continue (CI/CD) pour automatiser la livraison des API et garantir une qualité constante.",
        "station.ci-cd.why_it_matters": "CI/CD est essentiel pour garantir que les API sont livrées rapidement, de manière fiable et avec une qualité élevée. Cette station fournit des lignes directrices pour la mise en œuvre de pipelines CI/CD qui automatisent les processus de construction, de test et de déploiement des API.",
        "station.ci-cd.apply_in_work": "Fournir des cadres, des outils et des meilleures pratiques CI/CD pour la livraison d'API. S'assurer que les équipes mettent en œuvre des pipelines automatisés qui prennent en charge l'intégration, le test et le déploiement continus des API.",
        "station.ci-cd.outcomes": "Mise en place de pipelines automatisés CI/CD pour la livraison d'API",
        "station.ci-cd.how_it_works": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
        "station.test-automation.title": "Automatisation des tests - Assurer la qualité de l'API",
        "station.test-automation.description": "Mettre en œuvre des pratiques de test automatisées pour garantir la qualité, la fiabilité et les performances de l'API.",
        "station.test-automation.why_it_matters": "Les tests automatisés sont essentiels pour garantir que les API fonctionnent correctement et répondent aux normes de qualité. Cette station fournit des lignes directrices pour la mise en œuvre de pratiques de tests automatisés qui couvrent les tests fonctionnels, de sécurité et de performance pour les API.",
        "station.test-automation.apply_in_work": "Fournir des cadres d'automatisation des tests, des outils et des meilleures pratiques pour les tests d'API. Veiller à ce que les équipes mettent en œuvre des tests automatisés qui couvrent les aspects fonctionnels, de sécurité et de performance des API.",
        "station.test-automation.outcomes": "Mise en œuvre de pratiques de tests automatisés pour les API",
        "station.test-automation.how_it_works": "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API.",
        "station.release-management.title": "Gestion des versions - Gérer efficacement les versions de l'API",
        "station.release-management.description": "Mettre en œuvre des pratiques de gestion des versions afin de garantir des versions d'API fluides et contrôlées.",
        "station.release-management.why_it_matters": "Une gestion efficace des versions est essentielle pour garantir que les versions de l'API sont harmonieuses, contrôlées et alignées sur les besoins de l'entreprise. Cette station fournit des lignes directrices pour la gestion des versions d'API, notamment en ce qui concerne les versions, les stratégies de déploiement et les procédures de retour en arrière.",
        "station.release-management.apply_in_work": "Fournir des cadres de gestion des versions, des lignes directrices en matière de versions et des stratégies de déploiement. Veiller à ce que les équipes suivent les meilleures pratiques pour gérer les versions de l'API, y compris les procédures de version, de déploiement et de retour en arrière.",
        "station.release-management.outcomes": "Des versions contrôlées et fluides de l'API",
        "station.release-management.how_it_works": "Définir des stratégies de versionnement pour les API afin de gérer les changements et d'assurer la compatibilité ascendante.",
        "station.service-agreements.title": "Accords de service - Définir les niveaux de service de l'API",
        "station.service-agreements.description": "Établir des accords de service qui définissent les attentes, les niveaux de service et les responsabilités des fournisseurs et des utilisateurs.",
        "station.service-agreements.why_it_matters": "Les accords de service sont essentiels pour garantir la clarté et l'alignement entre les fournisseurs d'API et les utilisateurs. Cette station fournit des lignes directrices pour la création d'accords de service qui décrivent les attentes, les niveaux de service et les responsabilités, réduisant ainsi les malentendus et les litiges.",
        "station.service-agreements.apply_in_work": "Fournir des modèles d'accords de service, des formats normalisés et des processus d'examen. Veiller à ce que les équipes créent des accords de service clairs et bien définis qui décrivent les attentes, les niveaux de service et les responsabilités des fournisseurs d'API et des utilisateurs.",
        "station.service-agreements.outcomes": "Des accords de service clairs définis pour chaque API",
        "station.service-agreements.how_it_works": "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
        "station.api-consumer-adoption.title": "Adoption de l'API par les utilisateurs - Favoriser l'utilisation de l'API",
        "station.api-consumer-adoption.description": "Mettre en œuvre des stratégies visant à favoriser l'adoption et l'engagement des utilisateurs d'API, en veillant à ce que les API soient utilisées efficacement.",
        "station.api-consumer-adoption.why_it_matters": "Il est essentiel de favoriser l'adoption par les utilisateurs pour réaliser la valeur des API. Cette station fournit des stratégies et des meilleures pratiques pour engager les utilisateurs, en s'assurant qu'ils comprennent comment utiliser efficacement les API et en tirer de la valeur.",
        "station.api-consumer-adoption.apply_in_work": "Fournir des ressources d'accueil, du matériel pédagogique et des stratégies d'engagement pour les utilisateurs. Veiller à ce que les équipes mettent en œuvre des stratégies qui favorisent l'adoption, l'engagement et la satisfaction des utilisateurs.",
        "station.api-consumer-adoption.outcomes": "Mise en œuvre de stratégies d'adoption de l'API par les utilisateurs",
        "station.api-consumer-adoption.how_it_works": "Développer des processus et des ressources d'intégration pour aider les utilisateurs à comprendre comment utiliser efficacement les API.",
        "station.api-promotion.title": "Promotion de l'API - Augmenter la visibilité et l'utilisation de l'API",
        "station.api-promotion.description": "Promouvoir les API afin d'accroître la visibilité, l'utilisation et l'adoption parmi les publics cibles.",
        "station.api-promotion.why_it_matters": "La promotion des API est essentielle pour accroître leur visibilité et favoriser leur utilisation. Cette station propose des stratégies et des bonnes pratiques pour promouvoir efficacement les API auprès des publics cibles, en veillant à ce qu'ils connaissent les API et comprennent leur valeur.",
        "station.api-promotion.apply_in_work": "Fournir des stratégies de marketing, du matériel promotionnel et des ressources d'engagement communautaire. Veiller à ce que les équipes mettent en œuvre des stratégies efficaces de promotion de l'API qui augmentent la visibilité, l'utilisation et l'adoption parmi les publics cibles.",
        "station.api-promotion.outcomes": "Mise en œuvre de stratégies de promotion de l'API",
        "station.api-promotion.how_it_works": "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
        "station.partner-integration.title": "Intégration des partenaires - Collaborer avec les partenaires",
        "station.partner-integration.description": "Faciliter l'intégration des partenaires afin d'améliorer les capacités de l'API et d'étendre la portée.",
        "station.partner-integration.why_it_matters": "Les intégrations de partenaires peuvent améliorer les capacités des API et étendre leur portée. Cette station fournit des lignes directrices pour collaborer avec des partenaires afin d'intégrer leurs API, garantissant ainsi une interopérabilité transparente et la création de valeur.",
        "station.partner-integration.apply_in_work": "Fournir des cadres, des lignes directrices et des outils de suivi pour l'intégration des partenaires. Veiller à ce que les équipes collaborent efficacement avec les partenaires afin d'améliorer les capacités de l'API, d'étendre la portée et de stimuler l'innovation.",
        "station.partner-integration.outcomes": "Mise en place de processus d'intégration des partenaires",
        "station.partner-integration.how_it_works": "Identifier les partenaires potentiels dont les API peuvent améliorer vos capacités en matière d'API et votre proposition de valeur.",
        "station.api-mindset.title": "L'état d'esprit de l'API - Favoriser une culture axée sur l'API",
        "station.api-mindset.description": "Cultiver un état d'esprit \"API-first\" dans l'ensemble de l'organisation afin de stimuler l'innovation et la collaboration.",
        "station.api-mindset.why_it_matters": "Un état d'esprit axé sur les API est essentiel pour favoriser l'innovation et la collaboration au sein de l'entreprise. Cette station fournit des stratégies pour cultiver une culture API-first, en veillant à ce que les API soient considérées comme des actifs stratégiques qui génèrent de la valeur pour l'entreprise.",
        "station.api-mindset.apply_in_work": "Fournir des programmes de formation, des ressources et des stratégies de communication pour favoriser une culture de l'API. S'assurer que les équipes comprennent la valeur des API et sont habilitées à conduire la stratégie et les initiatives en matière d'API.",
        "station.api-mindset.outcomes": "Culture de la priorité aux API établie dans l'ensemble de l'organisation",
        "station.api-mindset.how_it_works": "Promouvoir la valeur des API en tant qu'actifs stratégiques qui génèrent de la valeur métier et de l'innovation.",
        "station.roles-and-responsibilities.title": "Rôles et responsabilités - Définir les structures de l'équipe API",
        "station.roles-and-responsibilities.description": "Définir clairement les rôles et les responsabilités des équipes chargées de l'API afin de garantir une collaboration et une responsabilisation efficaces.",
        "station.roles-and-responsibilities.why_it_matters": "Des rôles et des responsabilités clairs sont essentiels pour une collaboration et une responsabilisation efficaces au sein des équipes de l'API. Cette station fournit des lignes directrices pour définir les structures, les rôles et les responsabilités des équipes, en veillant à ce que chacun comprenne sa contribution aux initiatives de l'API.",
        "station.roles-and-responsibilities.apply_in_work": "Fournir des lignes directrices sur la structure des équipes, des définitions des rôles et des stratégies de communication. Veiller à ce que les équipes aient des rôles et des responsabilités clairs qui favorisent une collaboration et une responsabilisation efficaces dans le cadre des initiatives de l'API.",
        "station.roles-and-responsibilities.outcomes": "Rôles et responsabilités clairement définis pour les équipes API",
        "station.roles-and-responsibilities.how_it_works": "Définir les structures et les rôles des équipes API, y compris les propriétaires de produits API, les développeurs, les architectes et les opérations.",
        "station.upskilling.title": "Upkilling - Améliorer les compétences et les connaissances en matière d'API",
        "station.upskilling.description": "Fournir des formations et des ressources pour améliorer les compétences et les connaissances en matière d'API dans l'ensemble de l'organisation.",
        "station.upskilling.why_it_matters": "L'apprentissage continu et le perfectionnement sont essentiels pour que les équipes chargées des API soient au fait des dernières technologies, pratiques et tendances. Cette station propose des programmes de formation et des ressources pour améliorer les compétences et les connaissances en matière d'API, afin que les équipes soient en mesure de fournir des API de haute qualité.",
        "station.upskilling.apply_in_work": "Fournir des programmes de formation, des ressources et des outils d'évaluation pour améliorer les compétences et les connaissances en matière d'API. Veiller à ce que les équipes aient accès à des possibilités d'apprentissage continu qui leur permettent de stimuler l'innovation et la qualité de l'API.",
        "station.upskilling.outcomes": "Amélioration des compétences et des connaissances en matière d'API dans l'ensemble de l'organisation",
        "station.upskilling.how_it_works": "Identifier les compétences et les connaissances clés en matière d'API qui doivent être améliorées, telles que la conception, la sécurité et les performances des API.",
        "station.operating-guidelines.title": "Lignes directrices opérationnelles - Établir une gouvernance de l'API",
        "station.operating-guidelines.description": "Établir des lignes directrices opérationnelles et des pratiques de gouvernance pour garantir une gestion et une qualité cohérentes de l'API.",
        "station.operating-guidelines.why_it_matters": "Une gouvernance efficace des API est essentielle pour garantir une gestion, une qualité et une conformité cohérentes des API. Cette station fournit des lignes directrices opérationnelles et des pratiques de gouvernance qui aident les équipes à gérer efficacement les API, en veillant à ce qu'elles s'alignent sur les normes et les meilleures pratiques de l'organisation.",
        "station.operating-guidelines.apply_in_work": "Fournir des lignes directrices opérationnelles, des cadres de gouvernance et des outils de surveillance pour la gestion des API. Veiller à ce que les équipes suivent les pratiques établies qui favorisent une gestion cohérente de l'API, la qualité et la conformité avec les normes de l'organisation.",
        "station.operating-guidelines.outcomes": "Mise en place de pratiques de gouvernance de l'API",
        "station.operating-guidelines.how_it_works": "Définir des lignes directrices opérationnelles basées sur les cycles APIOps qui décrivent les processus, les normes et les meilleures pratiques pour la gestion de l'API.",
        "station.portfolio-management.title": "Gestion de portefeuille - Gérer efficacement le portefeuille d'API",
        "station.portfolio-management.description": "Gérer efficacement le portefeuille d'API afin de garantir l'alignement sur les objectifs de l'entreprise et les initiatives stratégiques.",
        "station.portfolio-management.why_it_matters": "Une gestion efficace du portefeuille d'API est essentielle pour garantir que les API s'alignent sur les objectifs de l'entreprise et les initiatives stratégiques. Ce station fournit des lignes directrices pour la gestion du portefeuille d'API, en veillant à ce que les API soient classées par ordre de priorité, contrôlées et optimisées pour offrir une valeur maximale.",
        "station.portfolio-management.apply_in_work": "Fournir des cadres de gestion de portefeuille, des critères de priorisation et des outils de suivi pour la gestion des API. Veiller à ce que les équipes gèrent efficacement le portefeuille d'API, en assurant l'alignement sur les objectifs de l'entreprise, les initiatives stratégiques et la fourniture d'une valeur maximale.",
        "station.portfolio-management.outcomes": "Mise en place de pratiques de gestion du portefeuille API",
        "station.portfolio-management.how_it_works": "Définir des pratiques de gestion de portefeuille qui décrivent les processus de gestion du portefeuille d'API, y compris l'établissement de priorités, le suivi et l'optimisation.",
        "station.budget-and-resource-management.title": "Gestion du budget et des ressources - Optimiser les investissements dans l'API",
        "station.budget-and-resource-management.description": "Optimiser la gestion du budget et des ressources pour les initiatives API afin de garantir l'efficacité des investissements et de l'affectation des ressources.",
        "station.budget-and-resource-management.why_it_matters": "Une gestion efficace du budget et des ressources est essentielle pour garantir que les initiatives en matière d'API sont bien financées et disposent des ressources nécessaires. Ce station fournit des lignes directrices pour optimiser la gestion du budget et des ressources, en veillant à ce que les initiatives en matière d'API soient alignées sur les objectifs de l'entreprise et apportent une valeur maximale.",
        "station.budget-and-resource-management.apply_in_work": "Fournir des cadres de gestion budgétaire, des critères de priorisation et des outils de suivi pour les initiatives API. Veiller à ce que les équipes gèrent efficacement les budgets et les ressources, en optimisant les investissements dans le développement et la gestion des API afin d'obtenir une valeur maximale.",
        "station.budget-and-resource-management.outcomes": "Pratiques de gestion du budget et des ressources établies pour les initiatives de l'API",
        "station.budget-and-resource-management.how_it_works": "Définir des pratiques de gestion du budget et des ressources qui décrivent les processus de gestion des budgets et des ressources pour les initiatives de l'API.",
        "station.api-product-strategy.outcomes.1": "Un langage commun entre le produit, le design et la technologie",
        "station.api-product-strategy.outcomes.2": "Un argumentaire ou un dossier solide pour le financement/l'approbation",
        "station.api-product-strategy.how_it_works.1": "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
        "station.api-product-strategy.how_it_works.2": "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
        "station.api-product-strategy.how_it_works.3": "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
        "station.api-consumer-experience.outcomes.1": "Définir le parcours de l'expérience API",
        "station.api-consumer-experience.outcomes.2": "Planifier l'intégration, la documentation et le retour d'information",
        "station.api-consumer-experience.outcomes.3": "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)",
        "station.api-platform-architecture.outcomes.1": "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
        "station.api-platform-architecture.outcomes.2": "Conception en vue d'une réutilisation interne et d'une évolutivité externe",
        "station.api-platform-architecture.how_it_works.1": "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
        "station.api-platform-architecture.how_it_works.2": "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
        "station.api-platform-architecture.how_it_works.3": "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
        "station.api-design.outcomes.1": "Contrats d'interface réutilisables et validés",
        "station.api-design.outcomes.2": "Conceptions alignées sur les modèles de domaine et les modèles d'interaction",
        "station.api-design.outcomes.3": "Traçabilité de la conception à la valeur métier",
        "station.api-design.how_it_works.1": "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
        "station.api-design.how_it_works.2": "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
        "station.api-design.how_it_works.3": "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
        "station.api-design.how_it_works.4": "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
        "station.api-design.how_it_works.5": "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
        "station.api-design.how_it_works.6": "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
        "station.api-design.how_it_works.7": "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
        "station.api-delivery.outcomes.1": "Pipelines CI/CD fiables et automatisés",
        "station.api-delivery.outcomes.2": "Tests fonctionnels et non fonctionnels intégrés",
        "station.api-delivery.outcomes.3": "Pipelines de livraison sécurisés et conformes",
        "station.api-delivery.how_it_works.1": "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
        "station.api-delivery.how_it_works.2": "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
        "station.api-delivery.how_it_works.3": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
        "station.api-delivery.how_it_works.4": "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
        "station.api-delivery.how_it_works.5": "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
        "station.api-audit.outcomes.1": "Documentation claire des décisions relatives à la conception et à la mise en œuvre de l'API",
        "station.api-audit.outcomes.2": "Sécurité, performance et conformité validées",
        "station.api-audit.outcomes.3": "Réduction du risque de problèmes en production",
        "station.api-audit.how_it_works.1": "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
        "station.api-audit.how_it_works.2": "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
        "station.api-publishing.outcomes.1": "Des processus clairs d'intégration et d'enregistrement de l'API",
        "station.api-publishing.outcomes.2": "Documentation, modèles de sécurité et politiques disponibles",
        "station.api-publishing.outcomes.3": "Des API prêtes pour l'échelle et la gouvernance",
        "station.api-publishing.how_it_works.1": "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
        "station.api-publishing.how_it_works.2": "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
        "station.monitoring-and-improving.outcomes.1": "Boucles de rétroaction des développeurs en place",
        "station.monitoring-and-improving.outcomes.2": "Questions identifiées et traitées en permanence",
        "station.monitoring-and-improving.outcomes.3": "Itération de l'API alignée sur les besoins des utilisateurs",
        "station.monitoring-and-improving.how_it_works.1": "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
        "station.monitoring-and-improving.how_it_works.2": "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
        "station.user-experience.outcomes.1": "Interfaces utilisateur intuitives et cohérentes",
        "station.user-experience.outcomes.2": "Le retour d'information des utilisateurs est intégré dans la conception de l'API",
        "station.user-experience.outcomes.3": "Amélioration de la satisfaction et de l'adoption des utilisateurs",
        "station.user-experience.how_it_works.1": "Mener des études sur les utilisateurs pour comprendre comment les utilisateurs interagissent avec les services de l'écosystème ou avec vos applications consommatrices d'API.",
        "station.user-experience.how_it_works.2": "Documenter les exigences en matière d'expérience utilisateur afin qu'elles puissent être utilisées dans la conception de l'API, en veillant à ce qu'elles soient intuitives et faciles à utiliser.",
        "station.market-insights.outcomes.1": "Identification des normes industrielles et des meilleures pratiques",
        "station.market-insights.outcomes.2": "Stratégie API alignée sur les besoins du marché",
        "station.market-insights.outcomes.3": "Une prise de décision éclairée basée sur la connaissance du marché",
        "station.market-insights.how_it_works.1": "Analyser les API des concurrents pour comprendre leurs forces, leurs faiblesses et leurs arguments de vente uniques.",
        "station.market-insights.how_it_works.2": "Identifier les normes et les meilleures pratiques du secteur pour garantir la compétitivité et la conformité des API.",
        "station.business-goals.outcomes.1": "Valeur métier clairement définie pour chaque API",
        "station.business-goals.outcomes.2": "Adhésion et soutien des parties prenantes aux initiatives API",
        "station.business-goals.outcomes.3": "Les API contribuent au succès de l'organisation",
        "station.business-goals.how_it_works.1": "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
        "station.business-goals.how_it_works.2": "Engager les parties prenantes pour assurer l'alignement et le soutien des initiatives API.",
        "station.competitive-analysis.outcomes.1": "Identification des possibilités de différenciation",
        "station.competitive-analysis.outcomes.2": "Stratégie API fondée sur la connaissance de la concurrence",
        "station.competitive-analysis.outcomes.3": "Compétitivité accrue sur le marché des API",
        "station.competitive-analysis.how_it_works.1": "Identifier les lacunes du marché que vos API peuvent combler, en se basant sur les offres des concurrents.",
        "station.competitive-analysis.how_it_works.2": "Élaborer une stratégie de différenciation qui mette en évidence les caractéristiques et les avantages uniques de vos API.",
        "station.ecosystem-vision.outcomes.1": "Des API conçues pour permettre la collaboration et l'intégration",
        "station.ecosystem-vision.outcomes.2": "Identification et engagement des partenaires de l'écosystème",
        "station.ecosystem-vision.outcomes.3": "Les API contribuent à un écosystème dynamique",
        "station.ecosystem-vision.how_it_works.1": "Identifier les principaux partenaires de l'écosystème et les parties prenantes qui bénéficieront de l'écosystème ou y contribueront.",
        "station.ecosystem-vision.how_it_works.2": "Concevoir des API pour permettre une intégration et une collaboration transparentes au sein de l'écosystème.",
        "station.scalable-infrastructure.outcomes.1": "Haute disponibilité et performance sous charge",
        "station.scalable-infrastructure.outcomes.2": "Des infrastructures conçues pour la croissance future",
        "station.scalable-infrastructure.outcomes.3": "Réduction des temps d'arrêt et amélioration de l'expérience des utilisateurs",
        "station.scalable-infrastructure.how_it_works.1": "Mettre en œuvre l'équilibrage des charges, la mise en cache et d'autres techniques pour garantir une disponibilité et des performances élevées. Recueillir les besoins en infrastructure des équipes API à l'aide de Capacity Canvas.",
        "station.scalable-infrastructure.how_it_works.2": "Contrôler les performances et la capacité de l'infrastructure pour s'assurer qu'elle peut répondre à une demande croissante.",
        "station.legal-and-compliance.outcomes.1": "Respect des exigences en matière de protection des données et de la vie privée",
        "station.legal-and-compliance.outcomes.2": "Risques juridiques identifiés et atténués",
        "station.legal-and-compliance.outcomes.3": "Documentation claire des mesures de conformité",
        "station.legal-and-compliance.how_it_works.1": "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
        "station.legal-and-compliance.how_it_works.2": "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux utilisateurs.",
        "station.security-and-privacy.outcomes.1": "Les données des utilisateurs sont protégées par des mesures de protection de la vie privée",
        "station.security-and-privacy.outcomes.2": "Mise en œuvre des meilleures pratiques de sécurité dans la conception et le développement des API",
        "station.security-and-privacy.outcomes.3": "Respect des normes et réglementations en matière de sécurité",
        "station.security-and-privacy.how_it_works.1": "Garantir la confidentialité des données des utilisateurs en mettant en œuvre des mesures de protection des données, telles que l'anonymisation et les contrôles d'accès.",
        "station.security-and-privacy.how_it_works.2": "Mener régulièrement des audits de sécurité et des évaluations de la vulnérabilité afin d'identifier et d'atténuer les risques.",
        "station.design-standards.outcomes.1": "Des API de haute qualité qui répondent aux besoins des utilisateurs",
        "station.design-standards.outcomes.2": "Modèles et composants de conception réutilisables",
        "station.design-standards.outcomes.3": "Réduction des incohérences de conception et de la dette technique",
        "station.design-standards.how_it_works.1": "Créer des modèles de conception et des composants réutilisables que les équipes peuvent exploiter pour garantir la cohérence et la qualité.",
        "station.design-standards.how_it_works.2": "Procéder à des examens et à des audits de la conception afin de garantir le respect des normes de conception et d'identifier les domaines susceptibles d'être améliorés.",
        "station.vendor-management.outcomes.1": "Intégration fiable et sécurisée des API de tiers",
        "station.vendor-management.outcomes.2": "Conformité du fournisseur aux normes de l'organisation",
        "station.vendor-management.outcomes.3": "Réduction des risques liés aux dépendances avec des tiers",
        "station.vendor-management.how_it_works.1": "Définir les critères d'évaluation des API des fournisseurs, y compris la fiabilité, la sécurité et la conformité.",
        "station.vendor-management.how_it_works.2": "Contrôler les performances des fournisseurs et le respect des accords de niveau de service (SLA) et des normes de l'organisation.",
        "station.contract-design.outcomes.1": "Attentes et responsabilités des fournisseurs d'API et des utilisateurs",
        "station.contract-design.outcomes.2": "Directives d'utilisation et bonnes pratiques documentées",
        "station.contract-design.outcomes.3": "Réduction des malentendus et des litiges concernant l'utilisation de l'API",
        "station.contract-design.how_it_works.1": "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'interface lisibles par machine, faciles à partager et à valider.",
        "station.contract-design.how_it_works.2": "Veiller à ce que les contrats API soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté.",
        "station.development.outcomes.1": "Des API de haute qualité, faciles à entretenir et évolutives",
        "station.development.outcomes.2": "Respect des normes et pratiques de codage cohérentes",
        "station.development.outcomes.3": "Réduction du temps de développement et de la dette technique",
        "station.development.how_it_works.1": "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'interface sont validés avant leur mise en œuvre.",
        "station.development.how_it_works.2": "Respecter les normes de codage et les meilleures pratiques afin d'assurer un développement cohérent et de haute qualité de l'API.",
        "station.ci-cd.outcomes.1": "Qualité et traçabilité constantes dans la livraison des API",
        "station.ci-cd.outcomes.2": "Des itérations plus rapides et une réduction du temps de mise sur le marché",
        "station.ci-cd.outcomes.3": "Amélioration de la collaboration et des boucles de rétroaction dans le développement des API",
        "station.ci-cd.how_it_works.1": "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
        "station.ci-cd.how_it_works.2": "Mettre en œuvre des contrôles de sécurité automatisés et des validations de conformité dans le pipeline CI/CD pour s'assurer que les API sont sécurisées et conformes.",
        "station.test-automation.outcomes.1": "Tests fonctionnels, de sécurité et de performance automatisés",
        "station.test-automation.outcomes.2": "Réduction de l'effort de test manuel et augmentation de la couverture des tests",
        "station.test-automation.outcomes.3": "Amélioration de la fiabilité et de la qualité de l'API",
        "station.test-automation.how_it_works.1": "Mettre en œuvre des cadres d'automatisation des tests qui prennent en charge les tests de contrat, les tests d'intégration et les tests de bout en bout.",
        "station.test-automation.how_it_works.2": "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
        "station.release-management.outcomes.1": "Définition des stratégies de version et de déploiement",
        "station.release-management.outcomes.2": "Procédures d'annulation établies pour les versions de l'API",
        "station.release-management.outcomes.3": "Réduction des risques liés aux changements d'API",
        "station.release-management.how_it_works.1": "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
        "station.release-management.how_it_works.2": "Mettre en place des procédures de retour en arrière pour revenir rapidement sur les modifications en cas de problèmes lors des mises à jour de l'API.",
        "station.service-agreements.outcomes.1": "Attentes et niveaux de service définis pour les fournisseurs d'API et les utilisateurs",
        "station.service-agreements.outcomes.2": "Responsabilités et processus de soutien documentés",
        "station.service-agreements.outcomes.3": "Amélioration de la communication et de la collaboration entre les équipes API",
        "station.service-agreements.how_it_works.1": "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
        "station.service-agreements.how_it_works.2": "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté.",
        "station.api-consumer-adoption.outcomes.1": "Augmentation de l'utilisation de l'API et de l'engagement",
        "station.api-consumer-adoption.outcomes.2": "Les utilisateurs sont informés des caractéristiques et des avantages de l'API",
        "station.api-consumer-adoption.outcomes.3": "Amélioration de la satisfaction et de la fidélité des utilisateurs",
        "station.api-consumer-adoption.how_it_works.1": "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
        "station.api-consumer-adoption.how_it_works.2": "S'engager auprès des utilisateurs par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
        "station.api-promotion.outcomes.1": "Augmentation de la visibilité et de la notoriété de l'API",
        "station.api-promotion.outcomes.2": "Taux d'utilisation et d'adoption de l'API plus élevés",
        "station.api-promotion.outcomes.3": "Amélioration de l'engagement et de la satisfaction des utilisateurs",
        "station.api-promotion.how_it_works.1": "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
        "station.api-promotion.how_it_works.2": "S'impliquer dans les communautés et les forums API pour partager les mises à jour de l'API, recueillir des commentaires et promouvoir l'utilisation de l'API.",
        "station.partner-integration.outcomes.1": "Capacités API améliorées grâce aux API des partenaires",
        "station.partner-integration.outcomes.2": "Élargissement de la portée et des débouchés grâce à des partenariats",
        "station.partner-integration.outcomes.3": "Amélioration de la collaboration et de l'innovation avec les partenaires",
        "station.partner-integration.how_it_works.1": "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
        "station.partner-integration.how_it_works.2": "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API.",
        "station.api-mindset.outcomes.1": "Amélioration de l'innovation et de la collaboration grâce aux API",
        "station.api-mindset.outcomes.2": "Des équipes API habilitées à piloter la stratégie et les initiatives en matière d'API",
        "station.api-mindset.outcomes.3": "Amélioration de l'alignement entre les objectifs de l'entreprise et le développement de l'API",
        "station.api-mindset.how_it_works.1": "Encourager la collaboration interfonctionnelle entre les équipes API, les unités opérationnelles et les parties prenantes afin d'aligner les initiatives API sur les objectifs de l'entreprise.",
        "station.api-mindset.how_it_works.2": "Fournir des formations et des ressources pour aider les équipes à adopter un état d'esprit \"API-first\" et à comprendre les avantages des API.",
        "station.roles-and-responsibilities.outcomes.1": "Collaboration efficace et responsabilité au sein des équipes API",
        "station.roles-and-responsibilities.outcomes.2": "Amélioration de la communication et de l'alignement entre les membres de l'équipe",
        "station.roles-and-responsibilities.outcomes.3": "Réduction de la confusion et du chevauchement des responsabilités",
        "station.roles-and-responsibilities.how_it_works.1": "Établir des responsabilités claires pour chaque rôle, notamment en ce qui concerne la conception, le développement, les essais et les opérations de l'API.",
        "station.roles-and-responsibilities.how_it_works.2": "Veiller à ce que les rôles et les responsabilités soient communiqués à tous les membres de l'équipe et aux parties prenantes afin de garantir l'alignement.",
        "station.upskilling.outcomes.1": "Compétences accrues en matière de conception, de développement et de gestion des API",
        "station.upskilling.outcomes.2": "Amélioration de la capacité à adopter de nouvelles technologies et pratiques",
        "station.upskilling.outcomes.3": "Des équipes responsabilisées pour favoriser l'innovation et la qualité de l'API",
        "station.operating-guidelines.outcomes.1": "Gestion et qualité cohérentes de l'API dans l'ensemble de l'organisation",
        "station.operating-guidelines.outcomes.2": "Respect des normes et des meilleures pratiques de l'organisation",
        "station.operating-guidelines.outcomes.3": "Amélioration de la visibilité et du contrôle des initiatives en matière d'API",
        "station.operating-guidelines.how_it_works.1": "Mettre en place des pratiques de gouvernance qui garantissent une gestion cohérente des API, y compris des examens, des audits et des contrôles de conformité.",
        "station.operating-guidelines.how_it_works.2": "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance.",
        "station.portfolio-management.outcomes.1": "Des API alignées sur les objectifs de l'entreprise et les initiatives stratégiques",
        "station.portfolio-management.outcomes.2": "Hiérarchisation et optimisation des API en fonction de leur valeur et de leur impact",
        "station.portfolio-management.outcomes.3": "Amélioration de la visibilité et du contrôle du portefeuille d'API",
        "station.budget-and-resource-management.outcomes.1": "Affectation efficace des ressources aux initiatives de l'API",
        "station.budget-and-resource-management.outcomes.2": "Optimisation des investissements dans le développement et la gestion des API",
        "station.budget-and-resource-management.outcomes.3": "Amélioration de la visibilité financière et du contrôle des initiatives API",
        "cycle.api-productization-cycle.station.api-product-strategy.title": "Stratégie produit API - Transformer les API en produits stratégiques",
        "cycle.api-productization-cycle.station.api-product-strategy.why_it_matters": "De nombreuses organisations considèrent les API comme des projets technologiques et non comme des produits. Le résultat ? Des utilisateurs désorientés, une adoption médiocre et un gaspillage d'efforts.\n\nCette station vous aide à définir l'objectif, le public cible et les critères de réussite de votre API, afin que les équipes puissent fournir des API qui résolvent des problèmes réels.",
        "cycle.api-productization-cycle.station.api-product-strategy.apply_in_work": "Fournir des lignes directrices et des modèles pour la création de modèles commerciaux, de propositions de valeur et de feuilles de route pour les API.",
        "cycle.api-productization-cycle.station.api-product-strategy.outcomes": "Une proposition de valeur et un public simples pour l'API",
        "cycle.api-productization-cycle.station.api-product-strategy.how_it_works": "Explorez le problème du client ou du partenaire que vous comptez résoudre avec les API. Dressez la carte des parties prenantes, de leurs parcours et de leurs résultats à l'aide du Customer Journey canvas.",
        "cycle.api-productization-cycle.station.api-product-strategy.outcomes.1": "Un langage commun entre le produit, le design et la technologie",
        "cycle.api-productization-cycle.station.api-product-strategy.outcomes.2": "Un argumentaire ou un dossier solide pour le financement/l'approbation",
        "cycle.api-productization-cycle.station.api-product-strategy.how_it_works.1": "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
        "cycle.api-productization-cycle.station.api-product-strategy.how_it_works.2": "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
        "cycle.api-productization-cycle.station.api-product-strategy.how_it_works.3": "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
        "cycle.api-productization-cycle.station.api-consumer-experience.title": "API Consumer Experience - Concevoir pour les vrais utilisateurs de votre API",
        "cycle.api-productization-cycle.station.api-consumer-experience.why_it_matters": "Les meilleures API ne se contentent pas de fonctionner, elles sont intuitives. Que votre utilisateur soit un développeur interne, un partenaire externe ou un agent d'intelligence artificielle, c'est son expérience qui détermine l'adoption.\n\nSans un plan d'expérience clair :\n- Les meilleures API restent inutilisées\n- Les équipes perdent du temps à deviner comment utiliser votre API.\n- Les boucles de rétroaction sont brisées ou manquantes.\n\nCette station vous aide à voir votre API à travers les yeux de ses utilisateurs.",
        "cycle.api-productization-cycle.station.api-consumer-experience.how_it_works": "Examinez l'API Value Proposition Canvas du point de vue de l'utilisateur. Veillez à la stabilité des tâches métier prises en charge et enrichissez les fonctionnalités qui simplifient et optimisent l'expérience utilisateur en intégrant les préoccupations des utilisateurs afin d'orienter les décisions de conception ultérieures.",
        "cycle.api-productization-cycle.station.api-consumer-experience.how_it_works.1": "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
        "cycle.api-productization-cycle.station.api-consumer-experience.how_it_works.2": "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
        "cycle.api-productization-cycle.station.api-consumer-experience.apply_in_work": "Fournir des lignes directrices, des outils et des mécanismes de retour d'information pour comprendre, analyser et améliorer l'expérience interne et externe des développeurs et des partenaires.",
        "cycle.api-productization-cycle.station.api-consumer-experience.outcomes": "Identifier et hiérarchiser les utilisateurs",
        "cycle.api-productization-cycle.station.api-consumer-experience.outcomes.1": "Définir le parcours de l'expérience API",
        "cycle.api-productization-cycle.station.api-consumer-experience.outcomes.2": "Planifier l'intégration, la documentation et le retour d'information",
        "cycle.api-productization-cycle.station.api-consumer-experience.outcomes.3": "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)",
        "cycle.api-productization-cycle.station.api-platform-architecture.title": "Architecture de la plateforme API - Architecturer les API pour l'évolutivité et la réutilisation",
        "cycle.api-productization-cycle.station.api-platform-architecture.why_it_matters": "Lorsque les API s'étendent à plusieurs équipes, votre plateforme doit permettre la gouvernance et la réutilisation sans bloquer la vitesse. Cette station montre comment architecturer les API pour assurer leur longévité, leur sécurité et leur efficacité.",
        "cycle.api-productization-cycle.station.api-platform-architecture.apply_in_work": "Mettre en place une infrastructure évolutive, sécurisée et conforme pour les opérations API. Fournir des lignes directrices sur les meilleures pratiques en matière d'architecture.",
        "cycle.api-productization-cycle.station.api-platform-architecture.outcomes": "Supprimer les API redondantes et réduire les coûts de la plateforme en nuage",
        "cycle.api-productization-cycle.station.api-platform-architecture.how_it_works": "Le Business Impact Canvas permet d'identifier et d'atténuer les risques liés à la disponibilité, à la sécurité et à la fonctionnalité de l'API afin de prendre des décisions éclairées en matière d'architecture.",
        "cycle.api-productization-cycle.station.api-platform-architecture.outcomes.1": "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
        "cycle.api-productization-cycle.station.api-platform-architecture.outcomes.2": "Conception en vue d'une réutilisation interne et d'une évolutivité externe",
        "cycle.api-productization-cycle.station.api-platform-architecture.how_it_works.1": "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
        "cycle.api-productization-cycle.station.api-platform-architecture.how_it_works.2": "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
        "cycle.api-productization-cycle.station.api-platform-architecture.how_it_works.3": "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
        "cycle.api-productization-cycle.station.api-design.title": "Conception d'API - Concevoir des API qui apportent de la valeur",
        "cycle.api-productization-cycle.station.api-design.why_it_matters": "La conception d'API ne se limite pas à nommer des points de terminaison. Une bonne conception garantit que les API sont utilisables, cohérentes et alignées sur les objectifs métier et techniques. Une mauvaise conception entraîne un couplage étroit, une faible réutilisation et des retouches coûteuses entre les équipes.",
        "cycle.api-productization-cycle.station.api-design.apply_in_work": "Fournir des modèles de conception réutilisables, des normes communes et des outils de validation pour les spécifications d'API. S'assurer que les décisions de conception sont cohérentes, examinées dès le début et alignées sur les objectifs métier.",
        "cycle.api-productization-cycle.station.api-design.outcomes": "Des conceptions d'API bien documentées et cohérentes",
        "cycle.api-productization-cycle.station.api-design.how_it_works": "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API.",
        "cycle.api-productization-cycle.station.api-design.outcomes.1": "Contrats d'interface API réutilisables et validés",
        "cycle.api-productization-cycle.station.api-design.outcomes.2": "Conceptions alignées sur les modèles de domaine et les modèles d'interaction",
        "cycle.api-productization-cycle.station.api-design.outcomes.3": "Traçabilité de la conception à la valeur métier",
        "cycle.api-productization-cycle.station.api-design.how_it_works.1": "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
        "cycle.api-productization-cycle.station.api-design.how_it_works.2": "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
        "cycle.api-productization-cycle.station.api-design.how_it_works.3": "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
        "cycle.api-productization-cycle.station.api-design.how_it_works.4": "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
        "cycle.api-productization-cycle.station.api-design.how_it_works.5": "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
        "cycle.api-productization-cycle.station.api-design.how_it_works.6": "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat d'interface API avant sa mise en œuvre.",
        "cycle.api-productization-cycle.station.api-design.how_it_works.7": "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
        "cycle.api-productization-cycle.station.api-delivery.title": "Livraison d'API - Fournir des API sécurisées et fiables",
        "cycle.api-productization-cycle.station.api-delivery.why_it_matters": "Même les meilleures conceptions d'API échouent si la livraison est incohérente. Cette station garantit que vos API sont construites avec qualité, testées de manière approfondie et déployées de manière fiable, ce qui permet des itérations plus rapides et une plus grande confiance.",
        "cycle.api-productization-cycle.station.api-delivery.apply_in_work": "Fournir des frameworks de développement, des bibliothèques et des normes pour la mise en œuvre des API. Mettre en œuvre des pipelines CI/CD, des cadres d'assurance qualité et des outils d'automatisation du déploiement.",
        "cycle.api-productization-cycle.station.api-delivery.outcomes": "API mises en œuvre à l'aide de cadres et de modèles testés",
        "cycle.api-productization-cycle.station.api-delivery.how_it_works": "Utilisez les meilleures pratiques de développement d'API comme guide pour mettre en œuvre le contrat d'interface validé à l'aide de frameworks et de bibliothèques établis, en veillant à ce que le résultat soit réutilisable et maintenable.",
        "cycle.api-productization-cycle.station.api-delivery.outcomes.1": "Pipelines CI/CD fiables et automatisés",
        "cycle.api-productization-cycle.station.api-delivery.outcomes.2": "Tests fonctionnels et non fonctionnels intégrés",
        "cycle.api-productization-cycle.station.api-delivery.outcomes.3": "Pipelines de livraison sécurisés et conformes",
        "cycle.api-productization-cycle.station.api-delivery.how_it_works.1": "Construisez l'implémentation de l'API à partir du contrat d'interface validé en utilisant des frameworks, des bibliothèques et des standards d'équipe établis.",
        "cycle.api-productization-cycle.station.api-delivery.how_it_works.2": "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
        "cycle.api-productization-cycle.station.api-delivery.how_it_works.3": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
        "cycle.api-productization-cycle.station.api-delivery.how_it_works.4": "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
        "cycle.api-productization-cycle.station.api-delivery.how_it_works.5": "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
        "cycle.api-productization-cycle.station.api-audit.title": "Audit API - Audit de conformité et de qualité des API",
        "cycle.api-productization-cycle.station.api-audit.why_it_matters": "Les API sont des produits à longue durée de vie et doivent répondre aux attentes en matière de qualité, de cohérence et de conformité. L'audit relie les décisions de conception, la mise en œuvre et l'état de préparation opérationnelle à des normes définies, réduisant ainsi les risques avant la mise à disposition.",
        "cycle.api-productization-cycle.station.api-audit.apply_in_work": "Mettez en place un processus d'audit cohérent qui évalue l'état de préparation des API à toutes les étapes du cycle de vie à l'aide de critères, de preuves et de normes définis. Assurez-vous que les lacunes sont identifiées tôt et résolues avant la publication.",
        "cycle.api-productization-cycle.station.api-audit.outcomes": "Les API sont conformes aux normes internes et externes",
        "cycle.api-productization-cycle.station.api-audit.how_it_works": "Mener des audits pour s'assurer que les API respectent les normes organisationnelles, techniques et juridiques avant d'être publiées.",
        "cycle.api-productization-cycle.station.api-audit.outcomes.1": "Documentation claire des décisions relatives à la conception et à la mise en œuvre de l'API",
        "cycle.api-productization-cycle.station.api-audit.outcomes.2": "Sécurité, performance et conformité validées",
        "cycle.api-productization-cycle.station.api-audit.outcomes.3": "Réduction du risque de problèmes en production",
        "cycle.api-productization-cycle.station.api-audit.how_it_works.1": "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
        "cycle.api-productization-cycle.station.api-audit.how_it_works.2": "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
        "cycle.api-productization-cycle.station.api-publishing.title": "Publication d'API - Publier des API en toute confiance",
        "cycle.api-productization-cycle.station.api-publishing.why_it_matters": "La publication va plus loin que le déploiement - il s'agit de la découvrabilité, de l'accès et de l'assistance. Si les API ne sont pas publiées correctement, elles ne seront pas utilisées, réutilisées ou sécurisées efficacement.",
        "cycle.api-productization-cycle.station.api-publishing.apply_in_work": "Permettre aux API d'être publiées dans l'environnement approprié et disposer de mécanismes d'enregistrement et d'accès clairs (par exemple, clés API, OAuth, plans d'abonnement) en fonction des segments de utilisateurs et des exigences en matière de sécurité et de conformité.",
        "cycle.api-productization-cycle.station.api-publishing.outcomes": "API publiées dans le bon environnement (privé, partenaire, public)",
        "cycle.api-productization-cycle.station.api-publishing.how_it_works": "Publier les API dans les passerelles et les environnements appropriés afin de favoriser la réutilisation pour de multiples utilisateurs.",
        "cycle.api-productization-cycle.station.api-publishing.outcomes.1": "Des processus clairs d'intégration et d'enregistrement de l'API",
        "cycle.api-productization-cycle.station.api-publishing.outcomes.2": "Documentation, modèles de sécurité et politiques disponibles",
        "cycle.api-productization-cycle.station.api-publishing.outcomes.3": "Des API prêtes pour l'échelle et la gouvernance",
        "cycle.api-productization-cycle.station.api-publishing.how_it_works.1": "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
        "cycle.api-productization-cycle.station.api-publishing.how_it_works.2": "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
        "cycle.api-productization-cycle.station.monitoring-and-improving.title": "Suivi et amélioration - pour la valeur de l'API",
        "cycle.api-productization-cycle.station.monitoring-and-improving.why_it_matters": "La livraison d'API ne s'arrête pas au lancement. Sans surveillance, les équipes ne peuvent pas améliorer l'adoption, les performances ou le retour sur investissement. Cette station garantit que les API restent utiles, sécurisées et qu'elles évoluent avec les besoins de l'entreprise.",
        "cycle.api-productization-cycle.station.monitoring-and-improving.apply_in_work": "Mettre en place des cadres d'analyse pour suivre les performances et l'engagement. Développer des boucles de rétroaction, des outils d'analyse et des stratégies d'engagement pour les API.",
        "cycle.api-productization-cycle.station.monitoring-and-improving.outcomes": "Définition et suivi des indicateurs de performance et d'utilisation",
        "cycle.api-productization-cycle.station.monitoring-and-improving.how_it_works": "Contrôler les indicateurs de performance (par exemple, les appels à l'API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
        "cycle.api-productization-cycle.station.monitoring-and-improving.outcomes.1": "Boucles de rétroaction des développeurs en place",
        "cycle.api-productization-cycle.station.monitoring-and-improving.outcomes.2": "Questions identifiées et traitées en permanence",
        "cycle.api-productization-cycle.station.monitoring-and-improving.outcomes.3": "Itération de l'API alignée sur les besoins des utilisateurs",
        "cycle.api-productization-cycle.station.monitoring-and-improving.how_it_works.1": "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
        "cycle.api-productization-cycle.station.monitoring-and-improving.how_it_works.2": "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
        "resource.api-community-engagement-strategies.title": "Stratégies d'engagement de la communauté de l'API",
        "resource.api-community-engagement-strategies.description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
        "resource.api-community-engagement-strategies.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
        "resource.api-community-engagement-strategies.steps": "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
        "resource.api-community-engagement-strategies.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-compliance-best-practices.title": "Meilleures pratiques en matière de conformité de l'API",
        "resource.api-compliance-best-practices.description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
        "resource.api-compliance-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
        "resource.api-compliance-best-practices.steps": "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
        "resource.api-compliance-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-development-best-practices.title": "Meilleures pratiques en matière de développement d'API",
        "resource.api-development-best-practices.description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
        "resource.api-development-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
        "resource.api-development-best-practices.steps": "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
        "resource.api-development-best-practices.tips": "Utilisez cette ressource comme guide de mise en œuvre et outil d'évaluation plutôt que comme un artefact autonome obligatoire",
        "resource.api-metrics-and-analytics.title": "Mesures et analyses de l'API",
        "resource.api-metrics-and-analytics.description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
        "resource.api-metrics-and-analytics.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
        "resource.api-metrics-and-analytics.steps": "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
        "resource.api-metrics-and-analytics.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-onboarding-best-practices.title": "Meilleures pratiques en matière d'intégration de l'API",
        "resource.api-onboarding-best-practices.description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
        "resource.api-onboarding-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
        "resource.api-onboarding-best-practices.steps": "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
        "resource.api-onboarding-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-portfolio-management-guidelines.title": "Lignes directrices pour la gestion du portefeuille de l'API",
        "resource.api-portfolio-management-guidelines.description": "Un guide pour gérer stratégiquement la suite d'API d'une organisation - en donnant la priorité aux API, en allouant des ressources et en contrôlant les performances tout au long du cycle de vie.",
        "resource.api-portfolio-management-guidelines.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices pour la gestion du portefeuille de l'API »",
        "resource.api-portfolio-management-guidelines.steps": "Définir des pratiques de gestion de portefeuille qui décrivent les processus de gestion du portefeuille d'API, y compris l'établissement de priorités, le suivi et l'optimisation.",
        "resource.api-portfolio-management-guidelines.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-security-best-practices.title": "Meilleures pratiques en matière de sécurité des API",
        "resource.api-security-best-practices.description": "Un ensemble de contrôles exploitables pour sécuriser les API, y compris l'authentification, l'autorisation, le cryptage, la limitation du débit et les contrôles de conformité au niveau du pipeline.",
        "resource.api-security-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de sécurité des API »",
        "resource.api-security-best-practices.steps": "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
        "resource.api-security-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-team-structure-guidelines.title": "Lignes directrices relatives à la structure des équipes de l'API",
        "resource.api-team-structure-guidelines.description": "Orientation organisationnelle pour définir les rôles et les responsabilités au sein des équipes API afin de garantir la clarté, la collaboration et la responsabilité.",
        "resource.api-team-structure-guidelines.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices relatives à la structure des équipes de l'API »",
        "resource.api-team-structure-guidelines.steps": "Définir les structures et les rôles des équipes API, y compris les propriétaires de produits API, les développeurs, les architectes et les opérations.",
        "resource.api-team-structure-guidelines.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-testing-best-practices.title": "Meilleures pratiques de test de l'API",
        "resource.api-testing-best-practices.description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
        "resource.api-testing-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
        "resource.api-testing-best-practices.steps": "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
        "resource.api-testing-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-training-programs.title": "Programmes de formation de l'API",
        "resource.api-training-programs.description": "Une feuille de route pour l'amélioration des compétences des équipes avec des parcours d'apprentissage structurés en matière de conception, de gouvernance, de performance et de sécurité des API.",
        "resource.api-training-programs.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Programmes de formation de l'API »",
        "resource.api-training-programs.steps": "Identifier les compétences et les connaissances clés en matière d'API qui doivent être améliorées, telles que la conception, la sécurité et les performances des API.",
        "resource.api-training-programs.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-versioning-best-practices.title": "Meilleures pratiques en matière de versionnement de l'API",
        "resource.api-versioning-best-practices.description": "Stratégies d'introduction, de maintenance et de retrait des versions de l'API tout en préservant la compatibilité ascendante et la confiance des consommateurs.",
        "resource.api-versioning-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de versionnement de l'API »",
        "resource.api-versioning-best-practices.steps": "Définir des stratégies de versionnement pour les API afin de gérer les changements et d'assurer la compatibilité ascendante.",
        "resource.api-versioning-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.apiops-CI-CD-for-apis.title": "APIOps CI/CD pour les API",
        "resource.apiops-CI-CD-for-apis.description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
        "resource.apiops-CI-CD-for-apis.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
        "resource.apiops-CI-CD-for-apis.steps": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
        "resource.apiops-CI-CD-for-apis.tips": "Adaptez cette ressource à votre contexte.",
        "resource.competitor-analysis-template.title": "Modèle d'analyse des concurrents",
        "resource.competitor-analysis-template.description": "Une feuille de travail structurée pour comparer vos offres d'API à celles de vos concurrents en identifiant les forces, les faiblesses et les différentiateurs de valeur.",
        "resource.competitor-analysis-template.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Modèle d'analyse des concurrents »",
        "resource.competitor-analysis-template.steps": "Effectuer une analyse concurrentielle afin d'identifier les principaux concurrents et leurs offres d'API.",
        "resource.competitor-analysis-template.tips": "Adaptez cette ressource à votre contexte.",
        "resource.contract-first-design.title": "Contrat de première conception",
        "resource.contract-first-design.description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
        "resource.contract-first-design.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
        "resource.contract-first-design.steps": "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
        "resource.contract-first-design.tips": "Adaptez cette ressource à votre contexte.",
        "resource.cross-functional-collaboration-best-practices.title": "Meilleures pratiques en matière de collaboration interfonctionnelle",
        "resource.cross-functional-collaboration-best-practices.description": "Pratiques visant à faciliter la communication et l'alignement entre les équipes commerciales et techniques lors de la planification ou de la fourniture d'API.",
        "resource.cross-functional-collaboration-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de collaboration interfonctionnelle »",
        "resource.cross-functional-collaboration-best-practices.steps": "Encourager la collaboration interfonctionnelle entre les équipes API, les unités opérationnelles et les parties prenantes afin d'aligner les initiatives API sur les objectifs de l'entreprise.",
        "resource.cross-functional-collaboration-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.data-privacy-guidelines.title": "Lignes directrices sur la protection des données",
        "resource.data-privacy-guidelines.description": "Les considérations de conception pour s'assurer que les API respectent les réglementations sur la protection des données comme le GDPR grâce à l'anonymisation et aux contrôles d'accès.",
        "resource.data-privacy-guidelines.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices sur la protection des données »",
        "resource.data-privacy-guidelines.steps": "Garantir la confidentialité des données des utilisateurs en mettant en œuvre des mesures de protection des données, telles que l'anonymisation et les contrôles d'accès.",
        "resource.data-privacy-guidelines.tips": "Adaptez cette ressource à votre contexte.",
        "resource.domain-canvas.title": "Domain Canvas",
        "resource.domain-canvas.description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
        "resource.domain-canvas.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
        "resource.domain-canvas.steps": "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API.",
        "resource.domain-canvas.tips": "Adaptez cette ressource à votre contexte.",
        "resource.ecosystem-vision-template.title": "Modèle de vision de l'écosystème",
        "resource.ecosystem-vision-template.description": "Un outil de planification stratégique pour définir l'écosystème de l'API, y compris les partenaires cibles, les chaînes de valeur et les possibilités d'intégration.",
        "resource.ecosystem-vision-template.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de vision de l'écosystème »",
        "resource.ecosystem-vision-template.steps": "Réaliser des études de marché pour identifier les tendances, les opportunités et les menaces dans le domaine des API.",
        "resource.ecosystem-vision-template.tips": "Adaptez cette ressource à votre contexte.",
        "resource.industry-standards-and-best-practices.title": "Normes industrielles et meilleures pratiques",
        "resource.industry-standards-and-best-practices.description": "Une ressource de référence pour aligner la conception et le fonctionnement de l'API sur des cadres et des spécifications largement reconnus dans l'industrie.",
        "resource.industry-standards-and-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Normes industrielles et meilleures pratiques »",
        "resource.industry-standards-and-best-practices.steps": "Identifier les normes et les meilleures pratiques du secteur pour s'assurer que les API sont compétitives et conformes.",
        "resource.industry-standards-and-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.partner-integration-guidelines.title": "Lignes directrices pour l'intégration des partenaires",
        "resource.partner-integration-guidelines.description": "Listes de contrôle de l'intégration et modèles de communication pour gérer les aspects techniques et juridiques des relations avec des API tierces.",
        "resource.partner-integration-guidelines.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices pour l'intégration des partenaires »",
        "resource.partner-integration-guidelines.steps": "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
        "resource.partner-integration-guidelines.tips": "Adaptez cette ressource à votre contexte.",
        "resource.role-communication-best-practices.title": "Meilleures pratiques en matière de communication sur les rôles",
        "resource.role-communication-best-practices.description": "Outils permettant de définir et de documenter les responsabilités de chacun dans le cadre des initiatives API, afin de garantir la clarté des transferts et des responsabilités.",
        "resource.role-communication-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de communication sur les rôles »",
        "resource.role-communication-best-practices.steps": "Établir des responsabilités claires pour chaque rôle, notamment en ce qui concerne la conception, le développement, les tests et les opérations de l'API.",
        "resource.role-communication-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.scalable-infrastructure-best-practices.title": "Meilleures pratiques en matière d'infrastructure évolutive",
        "resource.scalable-infrastructure-best-practices.description": "Des conseils architecturaux pour s'assurer que les API sont déployées sur une infrastructure capable de gérer avec élasticité les pics d'utilisation et la croissance.",
        "resource.scalable-infrastructure-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'infrastructure évolutive »",
        "resource.scalable-infrastructure-best-practices.steps": "Concevoir une infrastructure d'API évolutive et résiliente, en utilisant des modèles et des technologies \"cloud-native\".",
        "resource.scalable-infrastructure-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.service-agreement-template.title": "Modèle de contrat de service",
        "resource.service-agreement-template.description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
        "resource.service-agreement-template.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
        "resource.service-agreement-template.steps": "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
        "resource.service-agreement-template.tips": "Adaptez cette ressource à votre contexte.",
        "resource.stakeholder-engagement-best-practices.title": "Meilleures pratiques en matière d'engagement des parties prenantes",
        "resource.stakeholder-engagement-best-practices.description": "Tactiques d'engagement pour aligner les parties prenantes internes et externes sur les objectifs, la valeur et la gouvernance partagés de l'API.",
        "resource.stakeholder-engagement-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'engagement des parties prenantes »",
        "resource.stakeholder-engagement-best-practices.steps": "Engager les parties prenantes pour assurer l'alignement et le soutien des initiatives API.",
        "resource.stakeholder-engagement-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.test-automation-frameworks.title": "Cadres d'automatisation des tests",
        "resource.test-automation-frameworks.description": "Outils et modèles recommandés pour automatiser les tests de contrat, de régression et d'intégration des API dans les différents environnements.",
        "resource.test-automation-frameworks.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Cadres d'automatisation des tests »",
        "resource.test-automation-frameworks.steps": "Mettre en œuvre des cadres d'automatisation des tests qui prennent en charge les tests de contrat, les tests d'intégration et les tests de bout en bout.",
        "resource.test-automation-frameworks.tips": "Adaptez cette ressource à votre contexte.",
        "resource.vendor-management-best-practices.title": "Meilleures pratiques de gestion des fournisseurs",
        "resource.vendor-management-best-practices.description": "Cadre pour l'évaluation et la gestion des fournisseurs d'API externes et des intégrations de tiers en fonction des risques, des performances et de la conformité.",
        "resource.vendor-management-best-practices.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de gestion des fournisseurs »",
        "resource.vendor-management-best-practices.steps": "Mettre en place des processus de gestion des fournisseurs afin d'évaluer, d'intégrer et de contrôler les fournisseurs d'API tiers.",
        "resource.vendor-management-best-practices.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-audit-checklist.title": "Liste de contrôle de l'audit de l'API",
        "resource.api-audit-checklist.description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
        "resource.api-audit-checklist.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
        "resource.api-audit-checklist.steps": "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
        "resource.api-audit-checklist.tips": "Chaque élément d'audit relie les tâches du cycle de vie (étapes), les directives applicables et les preuves à l'appui afin de fournir une vision claire de l'état de préparation de l'API.",
        "resource.api-business-model-canvas.title": "API Business Model Canvas",
        "resource.api-business-model-canvas.description": "Évaluer stratégiquement la viabilité de l'activité API en établissant une cartographie des propositions de valeur, des segments de consommateurs et des ressources clés.",
        "resource.api-business-model-canvas.outcomes": "Une stratégie commerciale claire pour les API",
        "resource.api-business-model-canvas.steps": "Résumer la proposition de valeur de l'API",
        "resource.api-business-model-canvas.tips": "Commencer par une seule API pour plus de clarté",
        "resource.api-design-principles.title": "Principes de conception de l'API",
        "resource.api-design-principles.description": "Un guide concis sur l'ergonomie, la facilité de découverte et la cohérence des API, fondé sur des règles de conception communes et les besoins réels des consommateurs.",
        "resource.api-design-principles.outcomes": "Compréhension partagée de l’objectif et de l’utilisation de « Principes de conception de l'API »",
        "resource.api-design-principles.steps": "**Consumer-first design:** commencer chaque cycle APIOps en rassemblant les objectifs des utilisateurs et les termes du domaine afin que les APIs résolvent des problèmes réels.",
        "resource.api-design-principles.tips": "Adaptez cette ressource à votre contexte.",
        "resource.api-value-proposition-canvas.title": "API Value Proposition Canvas",
        "resource.api-value-proposition-canvas.description": "Aligner les fonctionnalités de l'API sur les besoins des utilisateurs en établissant une correspondance entre les tâches, les douleurs et les gains et les produits de l'API.",
        "resource.api-value-proposition-canvas.outcomes": "Développement de fonctionnalités ciblées",
        "resource.api-value-proposition-canvas.steps": "Liste des tâches liées au parcours de l'utilisateur",
        "resource.api-value-proposition-canvas.tips": "Utiliser les données du Customer Journey Canvas",
        "resource.business-impact-canvas.title": "Business Impact Canvas",
        "resource.business-impact-canvas.description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
        "resource.business-impact-canvas.outcomes": "Évaluation documentée des impacts métier et opérationnels",
        "resource.business-impact-canvas.steps": "Risques liés à la disponibilité : Identifier les risques et les impacts.",
        "resource.business-impact-canvas.tips": "Complétez ce canvas avant de sélectionner ou de confirmer le mode de mise en œuvre.",
        "resource.capacity-canvas.title": "Capacity Canvas",
        "resource.capacity-canvas.description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
        "resource.capacity-canvas.outcomes": "Exigences de capacité alignées sur la demande métier attendue",
        "resource.capacity-canvas.steps": "Documenter les volumes d'affaires actuels",
        "resource.capacity-canvas.tips": "Complétez ce canvas avant de finaliser les décisions d’architecture et de plateforme.",
        "resource.customer-journey-canvas.title": "Customer Journey Canvas",
        "resource.customer-journey-canvas.description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
        "resource.customer-journey-canvas.outcomes": "Compréhension partagée du parcours client, partenaire ou utilisateur",
        "resource.customer-journey-canvas.steps": "Définir le profil du client",
        "resource.customer-journey-canvas.tips": "Validez le parcours avec les personnes qui le réalisent ou le vivent.",
        "resource.event-canvas.title": "Event Canvas",
        "resource.event-canvas.description": "Concevez des interfaces et intégrations événementielles en définissant les événements, déclencheurs, schémas, producteurs, utilisateurs et logiques de traitement.",
        "resource.event-canvas.outcomes": "Modèle d’interaction événementiel défini",
        "resource.event-canvas.steps": "Identifier les événements clés du système",
        "resource.event-canvas.tips": "Utiliser des schémas d'événements pour normaliser les formats d'événements",
        "resource.graphql-canvas.title": "GraphQL Canvas",
        "resource.graphql-canvas.description": "Concevoir des API GraphQL en définissant des types, des requêtes, des mutations et des abonnements.",
        "resource.graphql-canvas.outcomes": "Conception d'une API GraphQL structurée",
        "resource.graphql-canvas.steps": "Quels sont les problèmes que les consommateurs d'API tentent de résoudre ? De quelles données ont-ils besoin ?",
        "resource.graphql-canvas.tips": "Utiliser l'introspection pour valider les définitions de type",
        "resource.interaction-canvas.title": "Interaction Canvas",
        "resource.interaction-canvas.description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
        "resource.interaction-canvas.outcomes": "Modèle d’interaction défini pour la capacité choisie",
        "resource.interaction-canvas.steps": "Associer les interactions de l'API aux tâches de l'utilisateur",
        "resource.interaction-canvas.tips": "Commencer par les cas d'utilisation courants avant de traiter les cas marginaux",
        "resource.location-canvas.title": "Location Canvas",
        "resource.location-canvas.description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
        "resource.location-canvas.outcomes": "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
        "resource.location-canvas.steps": "Carte des emplacements des fournisseurs d'API.",
        "resource.location-canvas.tips": "Collaborer avec les équipes juridiques et de conformité",
        "resource.rest-canvas.title": "REST Canvas",
        "resource.rest-canvas.description": "Concevoir des API en utilisant les principes RESTful, en définissant des ressources, des verbes et des exemples de requêtes et de réponses.",
        "resource.rest-canvas.outcomes": "Conception cohérente de l'API RESTful",
        "resource.rest-canvas.steps": "Identifier les ressources clés exposées par l'API",
        "resource.rest-canvas.tips": "Utiliser les méthodes HTTP standard (GET, POST, PUT, DELETE)",
        "resource.api-community-engagement-strategies.outcomes.1": "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
        "resource.api-community-engagement-strategies.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-community-engagement-strategies.steps.1": "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
        "resource.api-community-engagement-strategies.steps.2": "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
        "resource.api-community-engagement-strategies.steps.3": "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
        "resource.api-community-engagement-strategies.steps.4": "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
        "resource.api-community-engagement-strategies.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-compliance-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
        "resource.api-compliance-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-compliance-best-practices.steps.1": "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
        "resource.api-compliance-best-practices.steps.2": "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
        "resource.api-compliance-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-development-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
        "resource.api-development-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-development-best-practices.steps.1": "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable.",
        "resource.api-development-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-metrics-and-analytics.outcomes.1": "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
        "resource.api-metrics-and-analytics.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-metrics-and-analytics.steps.1": "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
        "resource.api-metrics-and-analytics.steps.2": "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance.",
        "resource.api-metrics-and-analytics.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-onboarding-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
        "resource.api-onboarding-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-onboarding-best-practices.steps.1": "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
        "resource.api-onboarding-best-practices.steps.2": "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
        "resource.api-onboarding-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-portfolio-management-guidelines.outcomes.1": "Approche cohérente pour appliquer « Lignes directrices pour la gestion du portefeuille de l'API »",
        "resource.api-portfolio-management-guidelines.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-portfolio-management-guidelines.steps.1": "Définir des pratiques de gestion du budget et des ressources qui décrivent les processus de gestion des budgets et des ressources pour les initiatives de l'API.",
        "resource.api-portfolio-management-guidelines.steps.2": "Établir des critères d'évaluation et de hiérarchisation des affectations budgétaires en fonction de la valeur commerciale, de l'impact et de l'alignement sur les initiatives stratégiques.",
        "resource.api-portfolio-management-guidelines.steps.3": "Contrôler le portefeuille d'API pour s'assurer que les API apportent de la valeur, répondent aux attentes en matière de performances et s'alignent sur les objectifs de l'entreprise.",
        "resource.api-portfolio-management-guidelines.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-security-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière de sécurité des API »",
        "resource.api-security-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-security-best-practices.steps.1": "Mettre en œuvre des mesures de sécurité telles que l'authentification, l'autorisation, le cryptage et la limitation du débit pour protéger les API contre les menaces.",
        "resource.api-security-best-practices.steps.2": "Mettre en œuvre des contrôles de sécurité automatisés et des validations de conformité dans le pipeline CI/CD pour s'assurer que les API sont sécurisées et conformes.",
        "resource.api-security-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-team-structure-guidelines.outcomes.1": "Approche cohérente pour appliquer « Lignes directrices relatives à la structure des équipes de l'API »",
        "resource.api-team-structure-guidelines.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-team-structure-guidelines.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-testing-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
        "resource.api-testing-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-testing-best-practices.steps.1": "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
        "resource.api-testing-best-practices.steps.2": "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API.",
        "resource.api-testing-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-training-programs.outcomes.1": "Approche cohérente pour appliquer « Programmes de formation de l'API »",
        "resource.api-training-programs.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-training-programs.steps.1": "Encourager la formation continue par des cours en ligne, des certifications et l'engagement communautaire.",
        "resource.api-training-programs.steps.2": "Fournir des formations et des ressources pour aider les équipes à adopter un état d'esprit \"API-first\" et à comprendre les avantages des API.",
        "resource.api-training-programs.steps.3": "Fournir des programmes de formation, des ateliers et des ressources pour aider les équipes à améliorer leurs compétences et leurs connaissances en matière d'API.",
        "resource.api-training-programs.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-versioning-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière de versionnement de l'API »",
        "resource.api-versioning-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-versioning-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.apiops-CI-CD-for-apis.outcomes.1": "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
        "resource.apiops-CI-CD-for-apis.outcomes.2": "Meilleure application des pratiques associées",
        "resource.apiops-CI-CD-for-apis.steps.1": "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
        "resource.apiops-CI-CD-for-apis.steps.2": "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
        "resource.apiops-CI-CD-for-apis.steps.3": "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
        "resource.apiops-CI-CD-for-apis.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.competitor-analysis-template.outcomes.1": "Approche cohérente pour appliquer « Modèle d'analyse des concurrents »",
        "resource.competitor-analysis-template.outcomes.2": "Meilleure application des pratiques associées",
        "resource.competitor-analysis-template.steps.1": "Analyser les API des concurrents pour comprendre leurs forces, leurs faiblesses et leurs arguments de vente uniques.",
        "resource.competitor-analysis-template.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.contract-first-design.outcomes.1": "Approche cohérente pour appliquer « Contrat de première conception »",
        "resource.contract-first-design.outcomes.2": "Meilleure application des pratiques associées",
        "resource.contract-first-design.steps.1": "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
        "resource.contract-first-design.steps.2": "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider.",
        "resource.contract-first-design.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.cross-functional-collaboration-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière de collaboration interfonctionnelle »",
        "resource.cross-functional-collaboration-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.cross-functional-collaboration-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.data-privacy-guidelines.outcomes.1": "Approche cohérente pour appliquer « Lignes directrices sur la protection des données »",
        "resource.data-privacy-guidelines.outcomes.2": "Meilleure application des pratiques associées",
        "resource.data-privacy-guidelines.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.domain-canvas.outcomes.1": "Approche cohérente pour appliquer « Domain Canvas »",
        "resource.domain-canvas.outcomes.2": "Meilleure application des pratiques associées",
        "resource.domain-canvas.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.ecosystem-vision-template.outcomes.1": "Approche cohérente pour appliquer « Modèle de vision de l'écosystème »",
        "resource.ecosystem-vision-template.outcomes.2": "Meilleure application des pratiques associées",
        "resource.ecosystem-vision-template.steps.1": "Identifier les principaux partenaires de l'écosystème et les parties prenantes qui bénéficieront de l'écosystème ou y contribueront.",
        "resource.ecosystem-vision-template.steps.2": "Identifier les lacunes du marché que vos API peuvent combler, en se basant sur les offres des concurrents.",
        "resource.ecosystem-vision-template.steps.3": "Identifier les partenaires potentiels dont les API peuvent améliorer vos capacités en matière d'API et votre proposition de valeur.",
        "resource.ecosystem-vision-template.steps.4": "Élaborer une stratégie de différenciation qui mette en évidence les caractéristiques et les avantages uniques de vos API.",
        "resource.ecosystem-vision-template.steps.5": "Définissez la vision de l'écosystème pour vos API, y compris la manière dont elles interagiront avec d'autres systèmes et plateformes.",
        "resource.ecosystem-vision-template.steps.6": "Concevoir des API pour permettre une intégration et une collaboration transparentes au sein de l'écosystème.",
        "resource.ecosystem-vision-template.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.industry-standards-and-best-practices.outcomes.1": "Approche cohérente pour appliquer « Normes industrielles et meilleures pratiques »",
        "resource.industry-standards-and-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.industry-standards-and-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.partner-integration-guidelines.outcomes.1": "Approche cohérente pour appliquer « Lignes directrices pour l'intégration des partenaires »",
        "resource.partner-integration-guidelines.outcomes.2": "Meilleure application des pratiques associées",
        "resource.partner-integration-guidelines.steps.1": "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API.",
        "resource.partner-integration-guidelines.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.role-communication-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière de communication sur les rôles »",
        "resource.role-communication-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.role-communication-best-practices.steps.1": "Veiller à ce que les rôles et les responsabilités soient communiqués à tous les membres de l'équipe et aux parties prenantes afin d'assurer l'alignement.",
        "resource.role-communication-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.scalable-infrastructure-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière d'infrastructure évolutive »",
        "resource.scalable-infrastructure-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.scalable-infrastructure-best-practices.steps.1": "Contrôler les performances et la capacité de l'infrastructure pour s'assurer qu'elle peut répondre à une demande croissante.",
        "resource.scalable-infrastructure-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.service-agreement-template.outcomes.1": "Approche cohérente pour appliquer « Modèle de contrat de service »",
        "resource.service-agreement-template.outcomes.2": "Meilleure application des pratiques associées",
        "resource.service-agreement-template.steps.1": "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
        "resource.service-agreement-template.steps.2": "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté.",
        "resource.service-agreement-template.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.stakeholder-engagement-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques en matière d'engagement des parties prenantes »",
        "resource.stakeholder-engagement-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.stakeholder-engagement-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.test-automation-frameworks.outcomes.1": "Approche cohérente pour appliquer « Cadres d'automatisation des tests »",
        "resource.test-automation-frameworks.outcomes.2": "Meilleure application des pratiques associées",
        "resource.test-automation-frameworks.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.vendor-management-best-practices.outcomes.1": "Approche cohérente pour appliquer « Meilleures pratiques de gestion des fournisseurs »",
        "resource.vendor-management-best-practices.outcomes.2": "Meilleure application des pratiques associées",
        "resource.vendor-management-best-practices.steps.1": "Définir les critères d'évaluation des API des fournisseurs, y compris la fiabilité, la sécurité et la conformité.",
        "resource.vendor-management-best-practices.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-audit-checklist.outcomes.1": "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
        "resource.api-audit-checklist.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-audit-checklist.steps.1": "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
        "resource.api-audit-checklist.steps.2": "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves.",
        "resource.api-audit-checklist.tips.1": "Utilisez la liste de contrôle d'audit des API de manière collaborative entre les rôles métier et techniques",
        "resource.api-business-model-canvas.outcomes.1": "Identification des ressources et des partenaires clés",
        "resource.api-business-model-canvas.outcomes.2": "Alignement des fonctionnalités de l'API sur les objectifs de l'entreprise",
        "resource.api-business-model-canvas.steps.1": "Définir les segments de consommateurs",
        "resource.api-business-model-canvas.steps.2": "Identifier les stratégies de relations avec les développeurs",
        "resource.api-business-model-canvas.steps.3": "Cartographier les canaux de distribution",
        "resource.api-business-model-canvas.steps.4": "Documentez les ressources et activités clés.",
        "resource.api-business-model-canvas.steps.5": "Identifier les principaux partenaires et parties prenantes",
        "resource.api-business-model-canvas.steps.6": "Mettre en évidence les avantages et les coûts",
        "resource.api-business-model-canvas.tips.1": "Utiliser des mesures telles que le rapport coût/bénéfice pour hiérarchiser les opportunités",
        "resource.api-business-model-canvas.tips.2": "Valider les résultats avec les principales parties prenantes",
        "resource.api-design-principles.outcomes.1": "Approche cohérente pour appliquer « Principes de conception de l'API »",
        "resource.api-design-principles.outcomes.2": "Meilleure application des pratiques associées",
        "resource.api-design-principles.steps.1": "**Noms et comportements cohérents:** appliquer des conventions partagées pour les ressources, les erreurs et les formats afin de rendre les API prévisibles.",
        "resource.api-design-principles.steps.2": "**Dirigé par le contrat:** capturer l'interface avec OpenAPI ou AsyncAPI avant le codage pour aligner les équipes et permettre l'automatisation.",
        "resource.api-design-principles.steps.3": "**Utilisabilité et facilité de découverte:** fournir une documentation et des exemples clairs afin que les développeurs comprennent rapidement comment utiliser l'API.",
        "resource.api-design-principles.steps.4": "**Itérer en sécurité :** faites évoluer les conceptions par petits incréments versionnés afin que les changements ne perturbent pas les utilisateurs existants.",
        "resource.api-design-principles.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-value-proposition-canvas.outcomes.1": "Alignement sur les besoins des utilisateurs",
        "resource.api-value-proposition-canvas.outcomes.2": "Amélioration de la satisfaction des consommateurs d'API",
        "resource.api-value-proposition-canvas.steps.1": "Identifier les caractéristiques permettant d'obtenir les gains escomptés",
        "resource.api-value-proposition-canvas.steps.2": "Définir des caractéristiques permettant de relever les défis",
        "resource.api-value-proposition-canvas.steps.3": "Cartographier les caractéristiques des produits de l'API",
        "resource.api-value-proposition-canvas.tips.1": "Mettre en évidence les caractéristiques qui soulagent les douleurs ou améliorent les gains",
        "resource.api-value-proposition-canvas.tips.2": "Valider les caractéristiques avec les consommateurs d'API pour garantir l'alignement",
        "resource.business-impact-canvas.outcomes.1": "Risques et mesures d’atténuation priorisés",
        "resource.business-impact-canvas.outcomes.2": "Éléments probants pour les décisions d’architecture et de plateforme",
        "resource.business-impact-canvas.steps.1": "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
        "resource.business-impact-canvas.steps.2": "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
        "resource.business-impact-canvas.steps.3": "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
        "resource.business-impact-canvas.steps.4": "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
        "resource.business-impact-canvas.steps.5": "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données.",
        "resource.business-impact-canvas.tips.1": "Examinez les risques avec les parties prenantes métier et techniques.",
        "resource.business-impact-canvas.tips.2": "Utilisez les incidents passés et les données opérationnelles pour remettre en question les hypothèses.",
        "resource.capacity-canvas.outcomes.1": "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
        "resource.capacity-canvas.outcomes.2": "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies",
        "resource.capacity-canvas.steps.1": "Prévoir les tendances futures de la consommation",
        "resource.capacity-canvas.steps.2": "Planifier les pics de charge et les exigences de disponibilité",
        "resource.capacity-canvas.steps.3": "Définir les stratégies de mise en cache et de limitation du débit",
        "resource.capacity-canvas.steps.4": "Proposer des stratégies de mise à l'échelle",
        "resource.capacity-canvas.tips.1": "Utilisez des données mesurées lorsqu’elles sont disponibles et explicitez les hypothèses.",
        "resource.capacity-canvas.tips.2": "Réexaminez le canvas après les pilotes ou tout changement significatif de la demande.",
        "resource.customer-journey-canvas.outcomes.1": "Besoins, irritants, gains, entrées et sorties documentés",
        "resource.customer-journey-canvas.outcomes.2": "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture",
        "resource.customer-journey-canvas.steps.1": "Identifier les éléments déclencheurs du voyage",
        "resource.customer-journey-canvas.steps.2": "Décrire la fin du voyage",
        "resource.customer-journey-canvas.steps.3": "Cartographier les étapes du voyage avec les intrants et les extrants",
        "resource.customer-journey-canvas.steps.4": "Identifier les problèmes des clients",
        "resource.customer-journey-canvas.steps.5": "Résumer les gains pour les clients",
        "resource.customer-journey-canvas.steps.6": "Définir les intrants nécessaires et les résultats qui en découlent",
        "resource.customer-journey-canvas.steps.7": "Définir les interactions API pour chaque étape",
        "resource.customer-journey-canvas.tips.1": "Utilisez les résultats pour alimenter le travail sur la proposition de valeur, le domaine, les exigences et l’architecture.",
        "resource.event-canvas.outcomes.1": "Événements, déclencheurs, schémas, producteurs et utilisateurs clarifiés",
        "resource.event-canvas.outcomes.2": "Attentes de traitement, d’accusé de réception et de gestion des échecs documentées",
        "resource.event-canvas.steps.1": "Définir des déclencheurs pour chaque événement",
        "resource.event-canvas.steps.2": "Décrivez le traitement des événements, les changements d’état et la gestion des échecs.",
        "resource.event-canvas.steps.3": "Préciser les résultats obtenus ou les remerciements",
        "resource.event-canvas.tips.1": "Documentez les flux d’événements, les responsabilités, les hypothèses d’ordre et les dépendances.",
        "resource.event-canvas.tips.2": "Valider le traitement des événements à l'aide de cas de test",
        "resource.graphql-canvas.outcomes.1": "Types définis et leurs relations",
        "resource.graphql-canvas.outcomes.2": "Des requêtes, des mutations et des abonnements clairs",
        "resource.graphql-canvas.steps.1": "Définir les types GraphQL et leurs attributs : Quels sont les principaux types exposés (par exemple, Utilisateur, Commande, Produit) ?",
        "resource.graphql-canvas.steps.2": "Cartographier les relations entre les types : Comment les types sont-ils liés les uns aux autres dans les requêtes imbriquées ?",
        "resource.graphql-canvas.steps.3": "Spécifier les requêtes pour l'extraction des données",
        "resource.graphql-canvas.steps.4": "Définir les mutations pour la modification des données : Quelles sont les opérations qui modifient les données (par exemple, création, mise à jour, suppression) ?",
        "resource.graphql-canvas.steps.5": "Abonnements aux grandes lignes pour des mises à jour en temps réel",
        "resource.graphql-canvas.steps.6": "Définir l'authentification et l'autorisation : Qui peut accéder à quels champs ou types ?",
        "resource.graphql-canvas.steps.7": "Tenez compte des contraintes de pagination, de filtrage ou de limitation du débit.",
        "resource.graphql-canvas.tips.1": "Documentez des exemples de requêtes et de mutations.",
        "resource.graphql-canvas.tips.2": "Veiller à ce que les noms des types soient descriptifs et cohérents",
        "resource.interaction-canvas.outcomes.1": "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
        "resource.interaction-canvas.outcomes.2": "Règles de validation et attentes d’interaction convenues",
        "resource.interaction-canvas.steps.1": "Définir des points finaux pour chaque interaction",
        "resource.interaction-canvas.steps.2": "Documentez les entrées et les sorties de chaque interaction.",
        "resource.interaction-canvas.steps.3": "Spécifier les règles et contraintes de validation",
        "resource.interaction-canvas.steps.4": "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements.",
        "resource.interaction-canvas.tips.1": "Simuler des interactions avec des données fictives pour valider les flux de travail",
        "resource.interaction-canvas.tips.2": "Documentez les réponses attendues pour les interactions réussies, échouées et exceptionnelles.",
        "resource.location-canvas.outcomes.1": "Contraintes régionales de performance et d’accessibilité identifiées",
        "resource.location-canvas.outcomes.2": "Résidence des données, limites de confiance et réglementations applicables clarifiées",
        "resource.location-canvas.steps.1": "Documenter l'emplacement des consommateurs.",
        "resource.location-canvas.steps.2": "Identifier les réglementations applicables.",
        "resource.location-canvas.steps.3": "Documenter l'endroit où les données doivent être stockées.",
        "resource.location-canvas.steps.4": "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
        "resource.location-canvas.steps.5": "Valider les performances du réseau dans les différentes régions.",
        "resource.location-canvas.tips.1": "Valider les performances du réseau dans les régions clés",
        "resource.location-canvas.tips.2": "Résoudre de manière proactive les contraintes liées à la localisation",
        "resource.rest-canvas.outcomes.1": "Ressources définies et leurs interactions",
        "resource.rest-canvas.outcomes.2": "Exemples de demandes et de réponses pour plus de clarté",
        "resource.rest-canvas.steps.1": "Définir la structure du modèle de ressources de l'API",
        "resource.rest-canvas.steps.2": "Spécifier les verbes HTTP utilisés pour interagir avec les ressources",
        "resource.rest-canvas.steps.3": "Fournir des exemples de demandes et de réponses pour chaque verbe",
        "resource.rest-canvas.tips.1": "Veiller à ce que les URI des ressources soient intuitifs et cohérents",
        "resource.rest-canvas.tips.2": "Documentez la gestion des erreurs et les codes de réponse.",
        "resource.capability-value-proposition-canvas.title": "Capability Value Proposition Canvas",
        "resource.capability-value-proposition-canvas.description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
        "resource.capability-value-proposition-canvas.outcomes": "Proposition de valeur claire pour une capacité réutilisable",
        "resource.capability-value-proposition-canvas.outcomes.1": "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
        "resource.capability-value-proposition-canvas.outcomes.2": "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture",
        "resource.capability-value-proposition-canvas.steps": "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
        "resource.capability-value-proposition-canvas.steps.1": "Identifiez les caractéristiques de capacité qui permettent les gains.",
        "resource.capability-value-proposition-canvas.steps.2": "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
        "resource.capability-value-proposition-canvas.steps.3": "Regroupez les caractéristiques en capacités réutilisables candidates.",
        "resource.capability-value-proposition-canvas.tips": "Restez indépendant de la technologie jusqu’à ce que les exigences indiquent un mode de mise en œuvre adapté.",
        "resource.capability-value-proposition-canvas.tips.1": "Utilisez ce canvas à la place de l’API Value Proposition Canvas lorsqu’une API n’est pas encore le mode de mise en œuvre retenu.",
        "resource.capability-business-model-canvas.title": "Capability Business Model Canvas",
        "resource.capability-business-model-canvas.description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
        "resource.capability-business-model-canvas.outcomes": "Modèle opérationnel viable pour une capacité réutilisable",
        "resource.capability-business-model-canvas.outcomes.1": "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
        "resource.capability-business-model-canvas.outcomes.2": "Coûts et bénéfices visibles avant l’engagement architectural",
        "resource.capability-business-model-canvas.steps": "Résumez la proposition de valeur de la capacité.",
        "resource.capability-business-model-canvas.steps.1": "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
        "resource.capability-business-model-canvas.steps.2": "Définissez les activités, ressources et partenaires clés.",
        "resource.capability-business-model-canvas.steps.3": "Documentez les coûts et les bénéfices.",
        "resource.capability-business-model-canvas.steps.4": "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
        "resource.capability-business-model-canvas.steps.5": "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance.",
        "resource.capability-business-model-canvas.tips": "Utilisez ce canvas à la place de l’API Business Model Canvas tant que le mode de mise en œuvre reste ouvert.",
        "resource.capability-business-model-canvas.tips.1": "Concentrez-vous sur la viabilité d’une capacité réutilisable, et non sur une connexion ponctuelle.",
        "resource.consumer-experience-requirements-canvas.title": "Consumer Experience Requirements Canvas",
        "resource.consumer-experience-requirements-canvas.description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
        "resource.consumer-experience-requirements-canvas.outcomes": "Exigences utilisateurs et de service indépendantes de la technologie",
        "resource.consumer-experience-requirements-canvas.outcomes.1": "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
        "resource.consumer-experience-requirements-canvas.outcomes.2": "Impacts architecturaux documentés pour le choix du mode de mise en œuvre",
        "resource.consumer-experience-requirements-canvas.steps": "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
        "resource.consumer-experience-requirements-canvas.steps.1": "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
        "resource.consumer-experience-requirements-canvas.steps.2": "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
        "resource.consumer-experience-requirements-canvas.steps.3": "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles.",
        "resource.consumer-experience-requirements-canvas.tips": "Utilisez ce canvas comme lien entre la valeur de la capacité et la décision d’architecture.",
        "resource.consumer-experience-requirements-canvas.tips.1": "Ne choisissez pas API, événement, fichier, flux, produit de données, intégration directe ou style hybride avant que les exigences n’indiquent l’option la plus adaptée.",
        "resource.integration-style-selection-guide.title": "Guide de sélection du mode d’intégration",
        "resource.integration-style-selection-guide.description": "Guide pour choisir entre API, événement, fichier, flux, produit de données, intégration directe ou mode hybride selon les exigences et contraintes.",
        "resource.integration-style-selection-guide.outcomes": "Mode de mise en œuvre de l’intégration justifié",
        "resource.integration-style-selection-guide.outcomes.1": "Compromis documentés entre les différentes options",
        "resource.integration-style-selection-guide.outcomes.2": "Choix traçable aux exigences utilisateurs, plateforme, données et opérations",
        "resource.integration-style-selection-guide.steps": "Comparez les modes viables selon la latence, le volume, le couplage, la responsabilité des données, la fraîcheur, la gouvernance et l’exploitabilité.",
        "resource.integration-style-selection-guide.steps.1": "Identifiez les options adaptées au cas d’usage.",
        "resource.integration-style-selection-guide.steps.2": "Documentez contraintes, risques et dépendances de plateforme.",
        "resource.integration-style-selection-guide.steps.3": "Consignez les raisons du rejet des alternatives.",
        "resource.process-workflow-design-guide.title": "Guide de conception des processus et workflows",
        "resource.process-workflow-design-guide.description": "Guide pour modéliser étapes, rôles, transferts, décisions, états, entrées, sorties et exceptions d’un workflow automatisé.",
        "resource.process-workflow-design-guide.outcomes": "Conception claire du workflow automatisé",
        "resource.process-workflow-design-guide.outcomes.1": "Étapes et transferts documentés avant mise en œuvre",
        "resource.process-workflow-design-guide.outcomes.2": "États, entrées, sorties et exceptions compris",
        "resource.process-workflow-design-guide.steps": "Cartographiez le processus actuel et cible, avec les responsabilités humaines et système.",
        "resource.process-workflow-design-guide.steps.1": "Identifiez déclencheurs, états, décisions, données, sorties et critères de fin.",
        "resource.process-workflow-design-guide.steps.2": "Documentez les transferts entre utilisateurs, systèmes, opérations et support.",
        "resource.process-workflow-design-guide.steps.3": "Confirmez les étapes automatisées et celles nécessitant un jugement humain.",
        "resource.decision-business-rules-guide.title": "Guide des décisions et règles métier",
        "resource.decision-business-rules-guide.description": "Guide pour capturer règles, seuils, décisions, validations, critères d’éligibilité et responsabilités.",
        "resource.decision-business-rules-guide.outcomes": "Décisions et règles métier explicites",
        "resource.decision-business-rules-guide.outcomes.1": "Règles et seuils documentés avec leurs responsables",
        "resource.decision-business-rules-guide.outcomes.2": "Décisions traçables aux politiques, processus ou objectifs métier",
        "resource.decision-business-rules-guide.steps": "Listez les décisions que l’automatisation doit prendre ou soutenir.",
        "resource.decision-business-rules-guide.steps.1": "Documentez conditions, seuils, exceptions, validations et escalades.",
        "resource.decision-business-rules-guide.steps.2": "Identifiez les responsables et la gouvernance des changements.",
        "resource.automation-trigger-handoff-exception-guide.title": "Guide des déclencheurs, transferts et exceptions",
        "resource.automation-trigger-handoff-exception-guide.description": "Guide pour définir déclencheurs, transferts humains, exceptions, reprises, actions compensatoires et escalades.",
        "resource.automation-trigger-handoff-exception-guide.outcomes": "Déclencheurs et chemins d’exception définis",
        "resource.automation-trigger-handoff-exception-guide.outcomes.1": "Transferts humains et escalades explicites",
        "resource.automation-trigger-handoff-exception-guide.outcomes.2": "Exceptions, reprises et compensations conçues avant livraison",
        "resource.automation-trigger-handoff-exception-guide.steps": "Définissez événements, horaires, actions utilisateur ou états système déclencheurs.",
        "resource.automation-trigger-handoff-exception-guide.steps.1": "Cartographiez les transferts vers utilisateurs, opérateurs ou support.",
        "resource.automation-trigger-handoff-exception-guide.steps.2": "Documentez exceptions, reprises, délais et solutions de repli.",
        "resource.automation-trigger-handoff-exception-guide.steps.3": "Définissez alertes et seuils d’escalade.",
        "resource.automation-testing-guide.title": "Guide de test des automatisations",
        "resource.automation-testing-guide.description": "Guide pour tester workflows, décisions, intégrations, exceptions, rollback, supervision et impact utilisateur.",
        "resource.automation-testing-guide.outcomes": "Comportement de l’automatisation validé",
        "resource.automation-testing-guide.outcomes.1": "Tests des workflows, règles, exceptions et intégrations définis",
        "resource.automation-testing-guide.outcomes.2": "Confiance avant publication pour les parcours automatisés et assistés",
        "resource.automation-testing-guide.steps": "Créez des tests pour parcours nominaux, cas limites, exceptions, reprises et transferts.",
        "resource.automation-testing-guide.steps.1": "Validez règles métier et décisions avec des données représentatives.",
        "resource.automation-testing-guide.steps.2": "Testez rollback, reprise, observabilité et intervention manuelle.",
        "resource.automation-testing-guide.steps.3": "Impliquez utilisateurs et opérateurs dans les tests d’acceptation.",
        "resource.automation-operational-ownership-guide.title": "Guide de responsabilité opérationnelle",
        "resource.automation-operational-ownership-guide.description": "Guide pour définir responsabilité, runbooks, supervision, support, suivi, contrôle des changements et amélioration continue.",
        "resource.automation-operational-ownership-guide.outcomes": "Modèle opérationnel clair",
        "resource.automation-operational-ownership-guide.outcomes.1": "Responsabilités de propriété, support et escalade attribuées",
        "resource.automation-operational-ownership-guide.outcomes.2": "Pratiques de suivi et changement prêtes pour exploitation",
        "resource.automation-operational-ownership-guide.steps": "Définissez les responsables métier, techniques et opérationnels.",
        "resource.automation-operational-ownership-guide.steps.1": "Documentez runbooks, support, signaux de suivi, attentes de service et escalades.",
        "resource.automation-operational-ownership-guide.steps.2": "Définissez le contrôle des changements pour workflows, plateforme et règles.",
        "resource.automation-rollback-supervision-guide.title": "Guide de rollback et supervision",
        "resource.automation-rollback-supervision-guide.description": "Guide pour concevoir rollback, pause, dérogation manuelle, suivi, supervision et reprise.",
        "resource.automation-rollback-supervision-guide.outcomes": "Chemins de reprise contrôlés",
        "resource.automation-rollback-supervision-guide.outcomes.1": "Rollback, pause et dérogation documentés",
        "resource.automation-rollback-supervision-guide.outcomes.2": "Besoins de supervision et responsabilités de reprise définis",
        "resource.automation-rollback-supervision-guide.steps": "Identifiez les actions réversibles, suspendables ou remplaçables manuellement.",
        "resource.automation-rollback-supervision-guide.steps.1": "Définissez rollback, compensation et reprise.",
        "resource.automation-rollback-supervision-guide.steps.2": "Documentez seuils de supervision, alertes et décisions manuelles.",
        "resource.automation-rollback-supervision-guide.steps.3": "Validez les procédures de reprise avant publication.",
        "resource.automation-readiness-checklist.title": "Checklist de préparation des automatisations",
        "resource.automation-readiness-checklist.description": "Checklist pour valider workflow, contrôles, risques, conformité, supervision humaine, preuves de test, rollback, opérations et préparation.",
        "resource.automation-readiness-checklist.outcomes": "Préparation de l’automatisation documentée",
        "resource.automation-readiness-checklist.outcomes.1": "Écarts et mesures d’atténuation connus avant publication",
        "resource.automation-readiness-checklist.outcomes.2": "Preuves pour qualité, risques, conformité, supervision et approbation",
        "resource.automation-readiness-checklist.steps": "Examinez workflow, règles métier, contrôles, accès, données et exceptions.",
        "resource.automation-readiness-checklist.steps.1": "Vérifiez preuves de test, rollback, supervision et support.",
        "resource.automation-readiness-checklist.steps.2": "Confirmez responsabilités, runbooks, suivi et contrôle des changements.",
        "resource.automation-readiness-checklist.steps.3": "Consignez les écarts, décisions et risques acceptés.",
        "resource.automation-rollout-enablement-guide.title": "Guide de déploiement et d’enablement",
        "resource.automation-rollout-enablement-guide.description": "Guide pour déployer les automatisations avec communication, onboarding, instructions d’exploitation, support, conduite du changement et feedback.",
        "resource.automation-rollout-enablement-guide.outcomes": "Utilisateurs et opérateurs préparés",
        "resource.automation-rollout-enablement-guide.outcomes.1": "Communication, onboarding et support préparés",
        "resource.automation-rollout-enablement-guide.outcomes.2": "Compréhension des changements de travail après publication",
        "resource.automation-rollout-enablement-guide.steps": "Définissez publics, calendrier, canaux et besoins de formation.",
        "resource.automation-rollout-enablement-guide.steps.1": "Publiez instructions, support, gestion des exceptions et contacts.",
        "resource.automation-rollout-enablement-guide.steps.2": "Planifiez l’accompagnement de transition.",
        "resource.automation-rollout-enablement-guide.steps.3": "Collectez les retours et alimentez le backlog.",
        "resource.integration-style-selection-guide.tips": "Adaptez cette ressource à votre contexte.",
        "resource.integration-style-selection-guide.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.process-workflow-design-guide.tips": "Adaptez cette ressource à votre contexte.",
        "resource.process-workflow-design-guide.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.decision-business-rules-guide.tips": "Adaptez cette ressource à votre contexte.",
        "resource.decision-business-rules-guide.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.automation-trigger-handoff-exception-guide.tips": "Adaptez cette ressource à votre contexte.",
        "resource.automation-trigger-handoff-exception-guide.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.automation-testing-guide.tips": "Adaptez cette ressource à votre contexte.",
        "resource.automation-testing-guide.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.automation-operational-ownership-guide.tips": "Adaptez cette ressource à votre contexte.",
        "resource.automation-operational-ownership-guide.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.automation-rollback-supervision-guide.tips": "Adaptez cette ressource à votre contexte.",
        "resource.automation-rollback-supervision-guide.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.automation-readiness-checklist.tips": "Adaptez cette ressource à votre contexte.",
        "resource.automation-readiness-checklist.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.automation-rollout-enablement-guide.tips": "Adaptez cette ressource à votre contexte.",
        "resource.automation-rollout-enablement-guide.tips.1": "Utilisez cette ressource avec les rôles métier et techniques concernés.",
        "resource.api-community-engagement-strategies.tips.2": "Utilisez cette ressource lorsque l’API est le mode de mise en œuvre retenu.",
        "resource.api-development-best-practices.tips.2": "Utilisez cette ressource lorsque l’API est le mode de mise en œuvre retenu.",
        "resource.api-metrics-and-analytics.tips.2": "Utilisez cette ressource lorsque l’API est le mode de mise en œuvre retenu.",
        "resource.api-testing-best-practices.tips.2": "Utilisez cette ressource lorsque l’API est le mode de mise en œuvre retenu.",
        "resource.apiops-CI-CD-for-apis.tips.2": "Utilisez cette ressource lorsque l’API est le mode de mise en œuvre retenu.",
        "resource.api-audit-checklist.tips.2": "Utilisez cette ressource lorsque l’API est le mode de mise en œuvre retenu.",
        "exit_criteria": "Critères de sortie",
        "entry_criteria": "Critères d'entrée",
        "criterion.metrics-feedback-available": "Des signaux de marché pertinents, des retours d'expérience ou des informations opérationnelles sont disponibles pour guider cette opportunité de capacité.",
        "criterion.business-goals-defined": "Les objectifs métier sont définis.",
        "criterion.market-research-done": "L'étude de marché identifie des opportunités de capacité.",
        "criterion.stakeholder-approval": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
        "criterion.api-opportunity-documented": "L'opportunité de capacité est identifiée et documentée.",
        "criterion.api-reusability": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
        "criterion.hide-backend-discrepancies": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
        "criterion.value-prop-validated": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
        "criterion.consumer-segments-identified": "Les segments d'utilisateurs sont identifiés.",
        "criterion.api-roadmap-defined": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
        "criterion.architecture-patterns-validated": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
        "criterion.design-reflects-business-value": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
        "criterion.api-consistency": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
        "criterion.api-contract-tested": "Le contrat d'interface a été validé et testé par rapport aux exigences fonctionnelles et non fonctionnelles.",
        "criterion.automation-workflow-validated": "Le workflow, les règles, les intégrations et les contrats d’interface pertinents ont été validés et testés.",
        "criterion.api-description-available": "L’interface et ses capacités sont documentées de manière suffisamment claire pour la revue, l’audit et l’onboarding.",
        "criterion.audit-passed": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
        "criterion.audit-reports-shared": "Les résultats d'audit et les décisions de correction sont partagés avec les parties prenantes concernées.",
        "criterion.api-ready-for-publishing": "La capacité est prête à être publiée ou mise à disposition via le mécanisme de livraison choisi.",
        "criterion.api-documentation-ready": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
        "criterion.consumer-support-ready": "Les processus d'onboarding, de support et de communication sont prêts pour les utilisateurs.",
        "criterion.legal-compliance-clear": "Les exigences juridiques, de confidentialité et de conformité liées à la publication ou à la mise à disposition sont définies et comprises.",
        "stakeholder.involvement.lead": "Responsable",
        "stakeholder.involvement.core": "Principal",
        "stakeholder.involvement.consulted": "Consulté",
        "stakeholder.business-owner.title": "Responsable métier",
        "stakeholder.business-owner.description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
        "stakeholder.api-program-owner.title": "Responsable du programme API",
        "stakeholder.api-program-owner.description": "Coordonne les pratiques du portefeuille API, l'alignement organisationnel et le développement à long terme des capacités API.",
        "stakeholder.api-product-owner.title": "Propriétaire du produit API",
        "stakeholder.api-product-owner.description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
        "stakeholder.capability-owner.title": "Responsable de capacité",
        "stakeholder.capability-owner.description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
        "stakeholder.domain-specialist.title": "Expert du domaine",
        "stakeholder.domain-specialist.description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
        "stakeholder.customer-specialist.title": "Représentant client ou partenaire",
        "stakeholder.customer-specialist.description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
        "stakeholder.api-consumer-specialist.title": "Représentant utilisateur API",
        "stakeholder.api-consumer-specialist.description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
        "stakeholder.platform-architect.title": "Architecte de la plateforme",
        "stakeholder.platform-architect.description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
        "stakeholder.api-architect.title": "Architecte API",
        "stakeholder.api-architect.description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
        "stakeholder.integration-architect.title": "Architecte d'intégration",
        "stakeholder.integration-architect.description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
        "stakeholder.platform-owner.title": "Responsable de plateforme",
        "stakeholder.platform-owner.description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
        "stakeholder.api-designer.title": "Designer API",
        "stakeholder.api-designer.description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
        "stakeholder.api-engineer.title": "Ingénieur de livraison",
        "stakeholder.api-engineer.description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
        "stakeholder.automation-owner.title": "Responsable de l'automatisation",
        "stakeholder.automation-owner.description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
        "stakeholder.process-owner.title": "Responsable de processus",
        "stakeholder.process-owner.description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
        "stakeholder.automation-engineer.title": "Ingénieur automatisation",
        "stakeholder.automation-engineer.description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
        "stakeholder.security-specialist.title": "Spécialiste en sécurité",
        "stakeholder.security-specialist.description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
        "stakeholder.compliance-specialist.title": "Spécialiste en conformité et juridique",
        "stakeholder.compliance-specialist.description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
        "stakeholder.governance-specialist.title": "Responsable gouvernance",
        "stakeholder.governance-specialist.description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
        "stakeholder.api-devrel-specialist.title": "Responsable Documentation & DevRel",
        "stakeholder.api-devrel-specialist.description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
        "stakeholder.operations-specialist.title": "Responsable support et opérations",
        "stakeholder.operations-specialist.description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
        "stakeholder.partner-specialist.title": "Gestionnaire de partenaires ou de fournisseurs",
        "stakeholder.partner-specialist.description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
        "lines.title": "Lignes de métro",
        "lines.description": "Lignes du métro APIOps Cycles qui guident la conception, la mise en œuvre et l'évolution des capacités, des API et des intégrations.",
        "line.business-opportunities-line.title": "Ligne des opportunités métier",
        "line.business-opportunities-line.description": "Se concentre sur l'identification, l'évaluation et la productisation des opportunités métier sous forme de capacités réutilisables.",
        "line.platform-architecture-line.title": "Ligne d'architecture de la plateforme",
        "line.platform-architecture-line.description": "Couvre les décisions d'architecture relatives aux plateformes, aux intégrations et aux interfaces.",
        "line.api-design-line.title": "Ligne de conception de l'API",
        "line.api-design-line.description": "Se concentre sur les principes et les bonnes pratiques de conception des interfaces et des solutions d'intégration.",
        "line.delivery-line.title": "Ligne de livraison",
        "line.delivery-line.description": "Couvre les pratiques de mise en œuvre, de test, d'automatisation et de livraison.",
        "line.publishing-and-adoption-line.title": "Ligne Publication & Enablement",
        "line.publishing-and-adoption-line.description": "Se concentre sur la publication des capacités, leur découvrabilité, leur onboarding et leur adoption.",
        "line.operating-model-line.title": "Ligne de modèle opérationnel",
        "line.operating-model-line.description": "Couvre la gouvernance, les responsabilités et le modèle opérationnel des capacités."
      },
      "cycles": [
        {
          "id": "capability-productization-cycle",
          "slug": "capability-productization-cycle",
          "title": "Cycle de productisation des capacités",
          "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre.",
          "purpose": "Identifier et productiser des capacites numeriques reutilisables avant de choisir un mode de mise en oeuvre API, evenement, fichier, flux, produit de donnees, service avec IA, integration directe ou hybride.",
          "audiences": [],
          "audienceStakeholders": [
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "capabilityValuePropositionCanvas",
                  "resourceTitle": "Capability Value Proposition Canvas",
                  "canvasId": "capabilityValuePropositionCanvas",
                  "role": "suggested-answer-owner"
                },
                {
                  "resourceId": "capabilityBusinessModelCanvas",
                  "resourceTitle": "Capability Business Model Canvas",
                  "canvasId": "capabilityBusinessModelCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "customer-specialist",
              "sourceKey": "customer-specialist",
              "sourceStakeholderId": "customer-specialist",
              "title": "Représentant client ou partenaire",
              "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "consumerExperienceRequirementsCanvas",
                  "resourceTitle": "Consumer Experience Requirements Canvas",
                  "canvasId": "consumerExperienceRequirementsCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "platform-owner",
              "sourceKey": "platform-owner",
              "sourceStakeholderId": "platform-owner",
              "title": "Responsable de plateforme",
              "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "capacityCanvas",
                  "resourceTitle": "Capacity Canvas",
                  "canvasId": "capacityCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-designer",
              "sourceKey": "api-designer",
              "sourceStakeholderId": "api-designer",
              "title": "Designer API",
              "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "governance-specialist",
              "sourceKey": "governance-specialist",
              "sourceStakeholderId": "governance-specialist",
              "title": "Responsable gouvernance",
              "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-devrel-specialist",
              "sourceKey": "api-devrel-specialist",
              "sourceStakeholderId": "api-devrel-specialist",
              "title": "Responsable Documentation & DevRel",
              "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
              "involvement": "core",
              "responsibilities": []
            }
          ],
          "entryCriteria": [
            "business-goals-defined",
            "stakeholder-approval"
          ],
          "exitCriteria": [
            "value-prop-validated",
            "architecture-patterns-validated",
            "audit-passed"
          ],
          "entryCriteriaDetails": [
            {
              "id": "business-goals-defined",
              "title": "Les objectifs métier sont définis.",
              "description": "Business goals are defined."
            },
            {
              "id": "stakeholder-approval",
              "title": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
              "description": "Relevant stakeholders agree this API opportunity is worth exploring and prioritizing."
            }
          ],
          "exitCriteriaDetails": [
            {
              "id": "value-prop-validated",
              "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
              "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
            },
            {
              "id": "architecture-patterns-validated",
              "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
              "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
            },
            {
              "id": "audit-passed",
              "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
              "description": "The API passes compliance, security, and audit checks."
            }
          ],
          "questionnaireResources": [
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie de capacité",
              "resourceId": "capabilityValuePropositionCanvas",
              "resourceTitle": "Capability Value Proposition Canvas",
              "canvasId": "capabilityValuePropositionCanvas",
              "suggestedAnswerOwner": {
                "id": "capability-owner",
                "sourceKey": "capability-owner",
                "sourceStakeholderId": "capability-owner",
                "title": "Responsable de capacité",
                "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                "involvement": "lead",
                "responsibilities": [
                  {
                    "resourceId": "capabilityValuePropositionCanvas",
                    "resourceTitle": "Capability Value Proposition Canvas",
                    "canvasId": "capabilityValuePropositionCanvas",
                    "role": "suggested-answer-owner"
                  },
                  {
                    "resourceId": "capabilityBusinessModelCanvas",
                    "resourceTitle": "Capability Business Model Canvas",
                    "canvasId": "capabilityBusinessModelCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie de capacité",
              "resourceId": "capabilityBusinessModelCanvas",
              "resourceTitle": "Capability Business Model Canvas",
              "canvasId": "capabilityBusinessModelCanvas",
              "suggestedAnswerOwner": {
                "id": "capability-owner",
                "sourceKey": "capability-owner",
                "sourceStakeholderId": "capability-owner",
                "title": "Responsable de capacité",
                "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                "involvement": "lead",
                "responsibilities": [
                  {
                    "resourceId": "capabilityValuePropositionCanvas",
                    "resourceTitle": "Capability Value Proposition Canvas",
                    "canvasId": "capabilityValuePropositionCanvas",
                    "role": "suggested-answer-owner"
                  },
                  {
                    "resourceId": "capabilityBusinessModelCanvas",
                    "resourceTitle": "Capability Business Model Canvas",
                    "canvasId": "capabilityBusinessModelCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie de capacité",
              "resourceId": "domainCanvas",
              "resourceTitle": "Domain Canvas",
              "canvasId": "domainCanvas",
              "suggestedAnswerOwner": {
                "id": "domain-specialist",
                "sourceKey": "domain-specialist",
                "sourceStakeholderId": "domain-specialist",
                "title": "Expert du domaine",
                "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "domainCanvas",
                    "resourceTitle": "Domain Canvas",
                    "canvasId": "domainCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie de capacité",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas",
              "suggestedAnswerOwner": {
                "id": "business-owner",
                "sourceKey": "business-owner",
                "sourceStakeholderId": "business-owner",
                "title": "Responsable métier",
                "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "customerJourneyCanvas",
                    "resourceTitle": "Customer Journey Canvas",
                    "canvasId": "customerJourneyCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-consumer-experience",
              "stationTitle": "Exigences utilisateurs & onboarding",
              "resourceId": "consumerExperienceRequirementsCanvas",
              "resourceTitle": "Consumer Experience Requirements Canvas",
              "canvasId": "consumerExperienceRequirementsCanvas",
              "suggestedAnswerOwner": {
                "id": "api-consumer-specialist",
                "sourceKey": "api-consumer-specialist",
                "sourceStakeholderId": "api-consumer-specialist",
                "title": "Représentant utilisateur API",
                "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "consumerExperienceRequirementsCanvas",
                    "resourceTitle": "Consumer Experience Requirements Canvas",
                    "canvasId": "consumerExperienceRequirementsCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture & décisions de plateforme",
              "resourceId": "locationsCanvas",
              "resourceTitle": "Location Canvas",
              "canvasId": "locationsCanvas",
              "suggestedAnswerOwner": {
                "id": "platform-architect",
                "sourceKey": "platform-architect",
                "sourceStakeholderId": "platform-architect",
                "title": "Architecte de la plateforme",
                "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                "involvement": "lead",
                "responsibilities": [
                  {
                    "resourceId": "locationsCanvas",
                    "resourceTitle": "Location Canvas",
                    "canvasId": "locationsCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture & décisions de plateforme",
              "resourceId": "businessImpactCanvas",
              "resourceTitle": "Business Impact Canvas",
              "canvasId": "businessImpactCanvas",
              "suggestedAnswerOwner": {
                "id": "capability-owner",
                "sourceKey": "capability-owner",
                "sourceStakeholderId": "capability-owner",
                "title": "Responsable de capacité",
                "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "businessImpactCanvas",
                    "resourceTitle": "Business Impact Canvas",
                    "canvasId": "businessImpactCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture & décisions de plateforme",
              "resourceId": "capacityCanvas",
              "resourceTitle": "Capacity Canvas",
              "canvasId": "capacityCanvas",
              "suggestedAnswerOwner": {
                "id": "platform-owner",
                "sourceKey": "platform-owner",
                "sourceStakeholderId": "platform-owner",
                "title": "Responsable de plateforme",
                "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "capacityCanvas",
                    "resourceTitle": "Capacity Canvas",
                    "canvasId": "capacityCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            }
          ],
          "stations": [
            {
              "index": 1,
              "id": "api-product-strategy",
              "slug": "method/api-product-strategy",
              "icon": "strategy-outline",
              "title": "Stratégie de capacité",
              "description": "Cadrer le besoin metier comme une capacite reutilisable avec une valeur, des utilisateurs, une responsabilite et des objectifs metier clairs avant de choisir le mode de mise en oeuvre.",
              "whyItMatters": "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe.",
              "applyInWork": "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
              "outcomes": [
                "Une opportunité de capacité indépendante de la technologie",
                "Un langage commun entre le produit, le design et la technologie",
                "Un argumentaire ou un dossier solide pour le financement/l'approbation"
              ],
              "steps": [
                {
                  "text": "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas"
                },
                {
                  "text": "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas"
                },
                {
                  "text": "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas"
                },
                {
                  "text": "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
                  "resourceId": "apiBusinessModelCanvas",
                  "resourceTitle": "API Business Model Canvas",
                  "canvasId": "apiBusinessModelCanvas"
                }
              ],
              "questions": [
                "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
                "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
                "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
                "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
                "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
                "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
              ],
              "criteria": [
                "metrics-feedback-available",
                "business-goals-defined",
                "market-research-done",
                "stakeholder-approval"
              ],
              "criteriaDetails": [
                {
                  "id": "metrics-feedback-available",
                  "title": "Des signaux de marché pertinents, des retours d'expérience ou des informations opérationnelles sont disponibles pour guider cette opportunité de capacité.",
                  "description": "Relevant market signals, feedback, or operational insights are available to guide this API opportunity."
                },
                {
                  "id": "business-goals-defined",
                  "title": "Les objectifs métier sont définis.",
                  "description": "Business goals are defined."
                },
                {
                  "id": "market-research-done",
                  "title": "L'étude de marché identifie des opportunités de capacité.",
                  "description": "Market research identifies API opportunities."
                },
                {
                  "id": "stakeholder-approval",
                  "title": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
                  "description": "Relevant stakeholders agree this API opportunity is worth exploring and prioritizing."
                }
              ],
              "baseTitle": "Stratégie de capacité",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "strategy",
              "stakeholders": [
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "lead",
                  "responsibilities": [
                    {
                      "resourceId": "capabilityValuePropositionCanvas",
                      "resourceTitle": "Capability Value Proposition Canvas",
                      "canvasId": "capabilityValuePropositionCanvas",
                      "role": "suggested-answer-owner"
                    },
                    {
                      "resourceId": "capabilityBusinessModelCanvas",
                      "resourceTitle": "Capability Business Model Canvas",
                      "canvasId": "capabilityBusinessModelCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "domainCanvas",
                      "resourceTitle": "Domain Canvas",
                      "canvasId": "domainCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "customer-specialist",
                  "sourceKey": "customer-specialist",
                  "sourceStakeholderId": "customer-specialist",
                  "title": "Représentant client ou partenaire",
                  "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "customerJourneyCanvas",
                      "resourceTitle": "Customer Journey Canvas",
                      "canvasId": "customerJourneyCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-program-owner",
                  "sourceKey": "api-program-owner",
                  "sourceStakeholderId": "api-program-owner",
                  "title": "Responsable du programme API",
                  "description": "Coordonne les pratiques du portefeuille API, l'alignement organisationnel et le développement à long terme des capacités API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "customerJourneyCanvas",
                  "slug": "resources/customer-journey-canvas",
                  "title": "Customer Journey Canvas",
                  "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 1,
                  "outcomes": [
                    "Compréhension partagée du parcours client, partenaire ou utilisateur",
                    "Besoins, irritants, gains, entrées et sorties documentés",
                    "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
                  ],
                  "steps": [
                    "Définir le profil du client",
                    "Identifier les éléments déclencheurs du voyage",
                    "Décrire la fin du voyage",
                    "Cartographier les étapes du voyage avec les intrants et les extrants",
                    "Identifier les problèmes des clients",
                    "Résumer les gains pour les clients",
                    "Définir les intrants nécessaires et les résultats qui en découlent",
                    "Définir les interactions API pour chaque étape"
                  ],
                  "canvasId": "customerJourneyCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "domainCanvas",
                  "slug": "resources/domain-canvas",
                  "title": "Domain Canvas",
                  "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 152,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                    "Approche cohérente pour appliquer « Domain Canvas »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
                  ],
                  "canvasId": "domainCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capabilityValuePropositionCanvas",
                  "slug": "resources/capability-value-proposition-canvas",
                  "title": "Capability Value Proposition Canvas",
                  "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 2.1,
                  "outcomes": [
                    "Proposition de valeur claire pour une capacité réutilisable",
                    "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                    "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
                  ],
                  "steps": [
                    "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                    "Identifiez les caractéristiques de capacité qui permettent les gains.",
                    "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                    "Regroupez les caractéristiques en capacités réutilisables candidates."
                  ],
                  "canvasId": "capabilityValuePropositionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capabilityBusinessModelCanvas",
                  "slug": "resources/capability-business-model-canvas",
                  "title": "Capability Business Model Canvas",
                  "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 3.1,
                  "outcomes": [
                    "Modèle opérationnel viable pour une capacité réutilisable",
                    "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                    "Coûts et bénéfices visibles avant l’engagement architectural"
                  ],
                  "steps": [
                    "Résumez la proposition de valeur de la capacité.",
                    "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                    "Définissez les activités, ressources et partenaires clés.",
                    "Documentez les coûts et les bénéfices.",
                    "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                    "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
                  ],
                  "canvasId": "capabilityBusinessModelCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                }
              ],
              "evidence": [
                "design-artifact",
                "documentation",
                "research",
                "roadmap"
              ]
            },
            {
              "index": 2,
              "id": "api-consumer-experience",
              "slug": "method/api-consumer-experience",
              "icon": "deployed-code-account-outline",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, les besoins d’onboarding, les contraintes, les attentes de service et les responsabilités des fournisseurs.",
              "whyItMatters": "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur.",
              "applyInWork": "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
              "outcomes": [
                "Exigences utilisateurs et attentes d'onboarding explicites",
                "Définir le parcours de l'expérience API",
                "Planifier l'intégration, la documentation et le retour d'information",
                "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)"
              ],
              "steps": [
                {
                  "text": "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas"
                },
                {
                  "text": "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas"
                },
                {
                  "text": "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
                  "resourceId": "api-onboarding-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
                "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
                "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
                "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
                "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur."
              ],
              "criteria": [
                "api-opportunity-documented",
                "api-reusability",
                "hide-backend-discrepancies",
                "value-prop-validated",
                "consumer-segments-identified",
                "api-roadmap-defined"
              ],
              "criteriaDetails": [
                {
                  "id": "api-opportunity-documented",
                  "title": "L'opportunité de capacité est identifiée et documentée.",
                  "description": "Individual API opportunities are identified and documented."
                },
                {
                  "id": "api-reusability",
                  "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
                  "description": "The API meets a clear business need and is reusable for multiple API consumers."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "value-prop-validated",
                  "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
                  "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
                },
                {
                  "id": "consumer-segments-identified",
                  "title": "Les segments d'utilisateurs sont identifiés.",
                  "description": "API consumer segments (internal and external) are identified."
                },
                {
                  "id": "api-roadmap-defined",
                  "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
                  "description": "High-level roadmaps for API development are established."
                }
              ],
              "baseTitle": "Exigences utilisateurs & onboarding",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "strategy",
              "stakeholders": [
                {
                  "id": "customer-specialist",
                  "sourceKey": "customer-specialist",
                  "sourceStakeholderId": "customer-specialist",
                  "title": "Représentant client ou partenaire",
                  "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "consumerExperienceRequirementsCanvas",
                      "resourceTitle": "Consumer Experience Requirements Canvas",
                      "canvasId": "consumerExperienceRequirementsCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "consumerExperienceRequirementsCanvas",
                  "slug": "resources/consumer-experience-requirements-canvas",
                  "title": "Consumer Experience Requirements Canvas",
                  "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 3.2,
                  "outcomes": [
                    "Exigences utilisateurs et de service indépendantes de la technologie",
                    "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                    "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
                  ],
                  "steps": [
                    "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                    "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                    "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                    "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
                  ],
                  "canvasId": "consumerExperienceRequirementsCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "api-onboarding-best-practices",
                  "slug": "resources/api-onboarding-best-practices",
                  "title": "Meilleures pratiques en matière d'intégration de l'API",
                  "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 121,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                    "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                    "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "design-artifact",
                "documentation",
                "consumer-feedback"
              ]
            },
            {
              "index": 3,
              "id": "api-platform-architecture",
              "slug": "method/api-platform-architecture",
              "icon": "code-blocks-outline",
              "title": "Architecture & décisions de plateforme",
              "description": "Utiliser les exigences et contraintes pour choisir le mode de mise en oeuvre, le pattern d architecture et les capacites de plateforme necessaires.",
              "whyItMatters": "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes.",
              "applyInWork": "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
              "outcomes": [
                "Décision d'architecture et de plateforme validée",
                "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
                "Conception en vue d'une réutilisation interne et d'une évolutivité externe"
              ],
              "steps": [
                {
                  "text": "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
                  "resourceId": "businessImpactCanvas",
                  "resourceTitle": "Business Impact Canvas",
                  "canvasId": "businessImpactCanvas"
                },
                {
                  "text": "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas"
                },
                {
                  "text": "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
                  "resourceId": "capacityCanvas",
                  "resourceTitle": "Capacity Canvas",
                  "canvasId": "capacityCanvas"
                },
                {
                  "text": "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                  "resourceId": "api-metrics-and-analytics",
                  "resourceTitle": "Mesures et analyses de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
                "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
                "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
                "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
              ],
              "criteria": [
                "api-reusability",
                "hide-backend-discrepancies",
                "value-prop-validated",
                "consumer-segments-identified",
                "api-roadmap-defined"
              ],
              "criteriaDetails": [
                {
                  "id": "api-reusability",
                  "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
                  "description": "The API meets a clear business need and is reusable for multiple API consumers."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "value-prop-validated",
                  "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
                  "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
                },
                {
                  "id": "consumer-segments-identified",
                  "title": "Les segments d'utilisateurs sont identifiés.",
                  "description": "API consumer segments (internal and external) are identified."
                },
                {
                  "id": "api-roadmap-defined",
                  "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
                  "description": "High-level roadmaps for API development are established."
                }
              ],
              "baseTitle": "Architecture & décisions de plateforme",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "architecture",
              "stakeholders": [
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "lead",
                  "responsibilities": [
                    {
                      "resourceId": "locationsCanvas",
                      "resourceTitle": "Location Canvas",
                      "canvasId": "locationsCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "businessImpactCanvas",
                      "resourceTitle": "Business Impact Canvas",
                      "canvasId": "businessImpactCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "platform-owner",
                  "sourceKey": "platform-owner",
                  "sourceStakeholderId": "platform-owner",
                  "title": "Responsable de plateforme",
                  "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "capacityCanvas",
                      "resourceTitle": "Capacity Canvas",
                      "canvasId": "capacityCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "businessImpactCanvas",
                  "slug": "resources/business-impact-canvas",
                  "title": "Business Impact Canvas",
                  "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 4,
                  "outcomes": [
                    "Évaluation documentée des impacts métier et opérationnels",
                    "Risques et mesures d’atténuation priorisés",
                    "Éléments probants pour les décisions d’architecture et de plateforme"
                  ],
                  "steps": [
                    "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                    "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                    "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                    "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                    "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                    "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
                  ],
                  "canvasId": "businessImpactCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "locationsCanvas",
                  "slug": "resources/location-canvas",
                  "title": "Location Canvas",
                  "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 6,
                  "outcomes": [
                    "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                    "Contraintes régionales de performance et d’accessibilité identifiées",
                    "Résidence des données, limites de confiance et réglementations applicables clarifiées"
                  ],
                  "steps": [
                    "Carte des emplacements des fournisseurs d'API.",
                    "Documenter l'emplacement des consommateurs.",
                    "Identifier les réglementations applicables.",
                    "Documenter l'endroit où les données doivent être stockées.",
                    "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                    "Valider les performances du réseau dans les différentes régions."
                  ],
                  "canvasId": "locationsCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capacityCanvas",
                  "slug": "resources/capacity-canvas",
                  "title": "Capacity Canvas",
                  "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 7,
                  "outcomes": [
                    "Exigences de capacité alignées sur la demande métier attendue",
                    "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                    "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
                  ],
                  "steps": [
                    "Documenter les volumes d'affaires actuels",
                    "Prévoir les tendances futures de la consommation",
                    "Planifier les pics de charge et les exigences de disponibilité",
                    "Définir les stratégies de mise en cache et de limitation du débit",
                    "Proposer des stratégies de mise à l'échelle"
                  ],
                  "canvasId": "capacityCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                }
              ],
              "evidence": [
                "architecture-decision",
                "documentation",
                "platform-config",
                "metrics"
              ]
            },
            {
              "index": 4,
              "id": "api-design",
              "slug": "method/api-design",
              "icon": "api",
              "title": "Conception de solution & d’interface",
              "description": "Concevoir le contrat d interface et le modele d interaction pour le mode de mise en oeuvre choisi.",
              "whyItMatters": "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs.",
              "applyInWork": "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
              "outcomes": [
                "Un contrat d'interface validé pour le mode de mise en œuvre choisi",
                "Contrats d'interface réutilisables et validés",
                "Conceptions alignées sur les modèles de domaine et les modèles d'interaction",
                "Traçabilité de la conception à la valeur métier"
              ],
              "steps": [
                {
                  "text": "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas"
                },
                {
                  "text": "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
                  "resourceId": "interactionCanvas",
                  "resourceTitle": "Interaction Canvas",
                  "canvasId": "interactionCanvas"
                },
                {
                  "text": "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "restCanvas",
                  "resourceTitle": "REST Canvas",
                  "canvasId": "restCanvas"
                },
                {
                  "text": "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "eventCanvas",
                  "resourceTitle": "Event Canvas",
                  "canvasId": "eventCanvas"
                },
                {
                  "text": "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "graphqlCanvas",
                  "resourceTitle": "GraphQL Canvas",
                  "canvasId": "graphqlCanvas"
                },
                {
                  "text": "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
                  "resourceId": "api-design-principles",
                  "resourceTitle": "Principes de conception de l'API",
                  "canvasId": null
                },
                {
                  "text": "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
                  "resourceId": "contract-first-design",
                  "resourceTitle": "Contrat de première conception",
                  "canvasId": null
                },
                {
                  "text": "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
                "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
                "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
                "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
                "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
                "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "hide-backend-discrepancies",
                "design-reflects-business-value",
                "api-consistency"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                }
              ],
              "baseTitle": "Conception de solution & d'interface",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "design",
              "stakeholders": [
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "domainCanvas",
                  "slug": "resources/domain-canvas",
                  "title": "Domain Canvas",
                  "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 152,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                    "Approche cohérente pour appliquer « Domain Canvas »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
                  ],
                  "canvasId": "domainCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "interactionCanvas",
                  "slug": "resources/interaction-canvas",
                  "title": "Interaction Canvas",
                  "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 9,
                  "outcomes": [
                    "Modèle d’interaction défini pour la capacité choisie",
                    "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                    "Règles de validation et attentes d’interaction convenues"
                  ],
                  "steps": [
                    "Associer les interactions de l'API aux tâches de l'utilisateur",
                    "Définir des points finaux pour chaque interaction",
                    "Documentez les entrées et les sorties de chaque interaction.",
                    "Spécifier les règles et contraintes de validation",
                    "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
                  ],
                  "canvasId": "interactionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "contract-first-design",
                  "slug": "resources/contract-first-design",
                  "title": "Contrat de première conception",
                  "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 146,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                    "Approche cohérente pour appliquer « Contrat de première conception »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                    "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                    "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/api-contract-example.yaml",
                  "sourceUrl": null,
                  "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
                  "draft": true
                }
              ],
              "evidence": [
                "spec",
                "contract",
                "design-artifact",
                "documentation"
              ]
            },
            {
              "index": 5,
              "id": "api-delivery",
              "slug": "method/api-delivery",
              "icon": "code",
              "title": "Mise à disposition & opérations",
              "description": "Construire, tester, deployer et exploiter la capacite avec le mode de mise en oeuvre choisi et le contrat d interface valide.",
              "whyItMatters": "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe.",
              "applyInWork": "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
              "outcomes": [
                "Une capacité livrée conformément au contrat d'interface validé",
                "Pipelines CI/CD fiables et automatisés",
                "Tests fonctionnels et non fonctionnels intégrés",
                "Pipelines de livraison sécurisés et conformes"
              ],
              "steps": [
                {
                  "text": "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
                  "resourceId": "api-development-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de développement d'API",
                  "canvasId": null
                },
                {
                  "text": "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
                  "resourceId": "api-development-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de développement d'API",
                  "canvasId": null
                },
                {
                  "text": "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                  "resourceId": "api-testing-best-practices",
                  "resourceTitle": "Meilleures pratiques de test de l'API",
                  "canvasId": null
                },
                {
                  "text": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                },
                {
                  "text": "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                  "resourceId": "api-security-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de sécurité des API",
                  "canvasId": null
                },
                {
                  "text": "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
                "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
                "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "hide-backend-discrepancies",
                "design-reflects-business-value",
                "api-consistency"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                }
              ],
              "baseTitle": "Mise à disposition & opérations",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "delivery",
              "stakeholders": [
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-development-best-practices",
                  "slug": "resources/api-development-best-practices",
                  "title": "Meilleures pratiques en matière de développement d'API",
                  "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 112,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                    "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
                  "sourceUrl": null,
                  "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
                  "draft": true
                },
                {
                  "id": "api-testing-best-practices",
                  "slug": "resources/api-testing-best-practices",
                  "title": "Meilleures pratiques de test de l'API",
                  "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 133,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                    "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                    "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "apiops-CI-CD-for-apis",
                  "slug": "resources/apiops-CI-CD-for-apis",
                  "title": "APIOps CI/CD pour les API",
                  "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 140,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                    "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                    "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                    "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                    "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "implementation",
                "pipeline-config",
                "test-report",
                "security-report"
              ]
            },
            {
              "index": 6,
              "id": "api-audit",
              "slug": "method/api-audit",
              "icon": "check-box-outline",
              "title": "Assurance qualité & préparation",
              "description": "Valider le contrat d interface, les controles, la documentation, le modele de support et la preparation operationnelle avant publication.",
              "whyItMatters": "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production.",
              "applyInWork": "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
              "outcomes": [
                "Préparation documentée pour la publication et la réutilisation",
                "Documentation claire des décisions relatives à la conception et à la mise en œuvre de l'API",
                "Sécurité, performance et conformité validées",
                "Réduction du risque de problèmes en production"
              ],
              "steps": [
                {
                  "text": "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                },
                {
                  "text": "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
                  "resourceId": "api-compliance-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de conformité de l'API",
                  "canvasId": null
                },
                {
                  "text": "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
                  "resourceTitle": "",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
                "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
                "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
                "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
                "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "design-reflects-business-value",
                "api-description-available",
                "api-consistency",
                "api-contract-tested"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-description-available",
                  "title": "L’interface et ses capacités sont documentées de manière suffisamment claire pour la revue, l’audit et l’onboarding.",
                  "description": "The API and its exposed capabilities are described clearly enough for review, audit, and onboarding."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                },
                {
                  "id": "api-contract-tested",
                  "title": "Le contrat d'interface a été validé et testé par rapport aux exigences fonctionnelles et non fonctionnelles.",
                  "description": "The API contract is tested and meets functional and non-functional requirements."
                }
              ],
              "baseTitle": "Assurance qualité & préparation",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "publishing",
              "stakeholders": [
                {
                  "id": "governance-specialist",
                  "sourceKey": "governance-specialist",
                  "sourceStakeholderId": "governance-specialist",
                  "title": "Responsable gouvernance",
                  "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-audit-checklist",
                  "slug": "resources/api-audit-checklist",
                  "title": "Liste de contrôle de l'audit de l'API",
                  "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
                  "category": "checklist",
                  "icon": "check-box-outline",
                  "order": 13,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                    "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                    "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                    "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/api-audit-checklist.json",
                  "sourceUrl": null,
                  "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
                  "draft": false
                },
                {
                  "id": "api-compliance-best-practices",
                  "slug": "resources/api-compliance-best-practices",
                  "title": "Meilleures pratiques en matière de conformité de l'API",
                  "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 104,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
                    "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
                    "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "audit-report",
                "compliance-report",
                "security-report",
                "test-report"
              ]
            },
            {
              "index": 7,
              "id": "api-publishing",
              "slug": "method/api-publishing",
              "icon": "deployed-code-outline",
              "title": "Publication & enablement",
              "description": "Publier la capacite afin que les utilisateurs puissent la decouvrir, l evaluer, demander l acces, terminer l onboarding, l utiliser et obtenir du support.",
              "whyItMatters": "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie.",
              "applyInWork": "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
              "outcomes": [
                "Une capacité découvrable et utilisable",
                "Des processus clairs d'intégration et d'enregistrement de l'API",
                "Documentation, modèles de sécurité et politiques disponibles",
                "Des API prêtes pour l'échelle et la gouvernance"
              ],
              "steps": [
                {
                  "text": "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                },
                {
                  "text": "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
                  "resourceId": "api-onboarding-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
                  "canvasId": null
                },
                {
                  "text": "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
                "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
                "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
                "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
                "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie."
              ],
              "criteria": [
                "audit-passed",
                "audit-reports-shared",
                "api-ready-for-publishing",
                "api-documentation-ready"
              ],
              "criteriaDetails": [
                {
                  "id": "audit-passed",
                  "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
                  "description": "The API passes compliance, security, and audit checks."
                },
                {
                  "id": "audit-reports-shared",
                  "title": "Les résultats d'audit et les décisions de correction sont partagés avec les parties prenantes concernées.",
                  "description": "Audit findings and remediation decisions are shared with the relevant stakeholders."
                },
                {
                  "id": "api-ready-for-publishing",
                  "title": "La capacité est prête à être publiée ou mise à disposition via le mécanisme de livraison choisi.",
                  "description": "The API is ready to be deployed and exposed through the intended gateways and environments."
                },
                {
                  "id": "api-documentation-ready",
                  "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
                  "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
                }
              ],
              "baseTitle": "Publication & enablement",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "publishing",
              "stakeholders": [
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "partner-specialist",
                  "sourceKey": "partner-specialist",
                  "sourceStakeholderId": "partner-specialist",
                  "title": "Gestionnaire de partenaires ou de fournisseurs",
                  "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-onboarding-best-practices",
                  "slug": "resources/api-onboarding-best-practices",
                  "title": "Meilleures pratiques en matière d'intégration de l'API",
                  "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 121,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                    "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                    "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "service-agreement-template",
                  "slug": "resources/service-agreement-template",
                  "title": "Modèle de contrat de service",
                  "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 172,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
                    "Approche cohérente pour appliquer « Modèle de contrat de service »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
                    "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
                    "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "gateway-config",
                "developer-portal",
                "documentation",
                "release-record"
              ]
            },
            {
              "index": 8,
              "id": "monitoring-and-improving",
              "slug": "method/monitoring-and-improving",
              "icon": "analytics-outline",
              "title": "Suivi & amélioration",
              "description": "Suivez la santé de la capacité, les résultats utilisateurs, la fiabilité, la réutilisation et les opportunités d’amélioration.",
              "whyItMatters": "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent.",
              "applyInWork": "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
              "outcomes": [
                "Santé et contribution de valeur de la capacité mesurées",
                "Boucles de rétroaction des développeurs en place",
                "Questions identifiées et traitées en permanence",
                "Itération de l'API alignée sur les besoins des utilisateurs"
              ],
              "steps": [
                {
                  "text": "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
                  "resourceId": "api-metrics-and-analytics",
                  "resourceTitle": "Mesures et analyses de l'API",
                  "canvasId": null
                },
                {
                  "text": "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
                  "resourceId": "api-community-engagement-strategies",
                  "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
                  "canvasId": null
                },
                {
                  "text": "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
                "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
                "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
                "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent."
              ],
              "criteria": [
                "api-documentation-ready",
                "consumer-support-ready",
                "legal-compliance-clear"
              ],
              "criteriaDetails": [
                {
                  "id": "api-documentation-ready",
                  "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
                  "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
                },
                {
                  "id": "consumer-support-ready",
                  "title": "Les processus d'onboarding, de support et de communication sont prêts pour les utilisateurs.",
                  "description": "Registration, support, and communication processes are ready for API consumers."
                },
                {
                  "id": "legal-compliance-clear",
                  "title": "Les exigences juridiques, de confidentialité et de conformité liées à la publication ou à la mise à disposition sont définies et comprises.",
                  "description": "Legal, privacy, and compliance requirements for publishing are defined and understood."
                }
              ],
              "baseTitle": "Suivi & amélioration",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "improving",
              "stakeholders": [
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-metrics-and-analytics",
                  "slug": "resources/api-metrics-and-analytics",
                  "title": "Mesures et analyses de l'API",
                  "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 119,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                    "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                    "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                    "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-community-engagement-strategies",
                  "slug": "resources/api-community-engagement-strategies",
                  "title": "Stratégies d'engagement de la communauté de l'API",
                  "description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 103,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
                    "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
                    "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
                    "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
                    "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
                    "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "metrics",
                "consumer-feedback",
                "incident-report",
                "roadmap"
              ]
            }
          ]
        },
        {
          "id": "api-productization-cycle",
          "slug": "api-productization-cycle",
          "title": "Cycle de productisation des API",
          "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API.",
          "purpose": "Parcours méthodologique centré sur les API pour les équipes qui savent déjà que le mode de mise en œuvre prévu est un produit API.",
          "audiences": [],
          "audienceStakeholders": [
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas",
                  "role": "suggested-answer-owner"
                },
                {
                  "resourceId": "apiBusinessModelCanvas",
                  "resourceTitle": "API Business Model Canvas",
                  "canvasId": "apiBusinessModelCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "customer-specialist",
              "sourceKey": "customer-specialist",
              "sourceStakeholderId": "customer-specialist",
              "title": "Représentant client ou partenaire",
              "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-devrel-specialist",
              "sourceKey": "api-devrel-specialist",
              "sourceStakeholderId": "api-devrel-specialist",
              "title": "Responsable Documentation & DevRel",
              "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-architect",
              "sourceKey": "api-architect",
              "sourceStakeholderId": "api-architect",
              "title": "Architecte API",
              "description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas",
                  "role": "suggested-answer-owner"
                },
                {
                  "resourceId": "capacityCanvas",
                  "resourceTitle": "Capacity Canvas",
                  "canvasId": "capacityCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-designer",
              "sourceKey": "api-designer",
              "sourceStakeholderId": "api-designer",
              "title": "Designer API",
              "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "governance-specialist",
              "sourceKey": "governance-specialist",
              "sourceStakeholderId": "governance-specialist",
              "title": "Responsable gouvernance",
              "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
              "involvement": "lead",
              "responsibilities": []
            }
          ],
          "entryCriteria": [
            "api-opportunity-documented",
            "consumer-segments-identified"
          ],
          "exitCriteria": [
            "api-contract-tested",
            "api-ready-for-publishing",
            "api-documentation-ready"
          ],
          "entryCriteriaDetails": [
            {
              "id": "api-opportunity-documented",
              "title": "L'opportunité de capacité est identifiée et documentée.",
              "description": "Individual API opportunities are identified and documented."
            },
            {
              "id": "consumer-segments-identified",
              "title": "Les segments d'utilisateurs sont identifiés.",
              "description": "API consumer segments (internal and external) are identified."
            }
          ],
          "exitCriteriaDetails": [
            {
              "id": "api-contract-tested",
              "title": "Le contrat d'interface a été validé et testé par rapport aux exigences fonctionnelles et non fonctionnelles.",
              "description": "The API contract is tested and meets functional and non-functional requirements."
            },
            {
              "id": "api-ready-for-publishing",
              "title": "La capacité est prête à être publiée ou mise à disposition via le mécanisme de livraison choisi.",
              "description": "The API is ready to be deployed and exposed through the intended gateways and environments."
            },
            {
              "id": "api-documentation-ready",
              "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
              "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
            }
          ],
          "questionnaireResources": [
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie produit API",
              "resourceId": "apiValuePropositionCanvas",
              "resourceTitle": "API Value Proposition Canvas",
              "canvasId": "apiValuePropositionCanvas",
              "suggestedAnswerOwner": {
                "id": "api-product-owner",
                "sourceKey": "api-product-owner",
                "sourceStakeholderId": "api-product-owner",
                "title": "Propriétaire du produit API",
                "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                "involvement": "lead",
                "responsibilities": [
                  {
                    "resourceId": "apiValuePropositionCanvas",
                    "resourceTitle": "API Value Proposition Canvas",
                    "canvasId": "apiValuePropositionCanvas",
                    "role": "suggested-answer-owner"
                  },
                  {
                    "resourceId": "apiBusinessModelCanvas",
                    "resourceTitle": "API Business Model Canvas",
                    "canvasId": "apiBusinessModelCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie produit API",
              "resourceId": "apiBusinessModelCanvas",
              "resourceTitle": "API Business Model Canvas",
              "canvasId": "apiBusinessModelCanvas",
              "suggestedAnswerOwner": {
                "id": "api-product-owner",
                "sourceKey": "api-product-owner",
                "sourceStakeholderId": "api-product-owner",
                "title": "Propriétaire du produit API",
                "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                "involvement": "lead",
                "responsibilities": [
                  {
                    "resourceId": "apiValuePropositionCanvas",
                    "resourceTitle": "API Value Proposition Canvas",
                    "canvasId": "apiValuePropositionCanvas",
                    "role": "suggested-answer-owner"
                  },
                  {
                    "resourceId": "apiBusinessModelCanvas",
                    "resourceTitle": "API Business Model Canvas",
                    "canvasId": "apiBusinessModelCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie produit API",
              "resourceId": "domainCanvas",
              "resourceTitle": "Domain Canvas",
              "canvasId": "domainCanvas",
              "suggestedAnswerOwner": {
                "id": "domain-specialist",
                "sourceKey": "domain-specialist",
                "sourceStakeholderId": "domain-specialist",
                "title": "Expert du domaine",
                "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "domainCanvas",
                    "resourceTitle": "Domain Canvas",
                    "canvasId": "domainCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie produit API",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas",
              "suggestedAnswerOwner": {
                "id": "business-owner",
                "sourceKey": "business-owner",
                "sourceStakeholderId": "business-owner",
                "title": "Responsable métier",
                "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "customerJourneyCanvas",
                    "resourceTitle": "Customer Journey Canvas",
                    "canvasId": "customerJourneyCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture de plateforme API",
              "resourceId": "locationsCanvas",
              "resourceTitle": "Location Canvas",
              "canvasId": "locationsCanvas",
              "suggestedAnswerOwner": {
                "id": "api-architect",
                "sourceKey": "api-architect",
                "sourceStakeholderId": "api-architect",
                "title": "Architecte API",
                "description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "locationsCanvas",
                    "resourceTitle": "Location Canvas",
                    "canvasId": "locationsCanvas",
                    "role": "suggested-answer-owner"
                  },
                  {
                    "resourceId": "capacityCanvas",
                    "resourceTitle": "Capacity Canvas",
                    "canvasId": "capacityCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture de plateforme API",
              "resourceId": "capacityCanvas",
              "resourceTitle": "Capacity Canvas",
              "canvasId": "capacityCanvas",
              "suggestedAnswerOwner": {
                "id": "api-architect",
                "sourceKey": "api-architect",
                "sourceStakeholderId": "api-architect",
                "title": "Architecte API",
                "description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "locationsCanvas",
                    "resourceTitle": "Location Canvas",
                    "canvasId": "locationsCanvas",
                    "role": "suggested-answer-owner"
                  },
                  {
                    "resourceId": "capacityCanvas",
                    "resourceTitle": "Capacity Canvas",
                    "canvasId": "capacityCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture de plateforme API",
              "resourceId": "businessImpactCanvas",
              "resourceTitle": "Business Impact Canvas",
              "canvasId": "businessImpactCanvas",
              "suggestedAnswerOwner": {
                "id": "api-product-owner",
                "sourceKey": "api-product-owner",
                "sourceStakeholderId": "api-product-owner",
                "title": "Propriétaire du produit API",
                "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "businessImpactCanvas",
                    "resourceTitle": "Business Impact Canvas",
                    "canvasId": "businessImpactCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            }
          ],
          "stations": [
            {
              "index": 1,
              "id": "api-product-strategy",
              "slug": "method/api-product-strategy",
              "icon": "strategy-outline",
              "title": "Stratégie produit API",
              "description": "Avant de construire quoi que ce soit, définissez dès le départ la valeur de votre API, ses utilisateurs et ses objectifs métier.",
              "whyItMatters": "De nombreuses organisations considèrent les API comme des projets technologiques et non comme des produits. Le résultat ? Des utilisateurs désorientés, une adoption médiocre et un gaspillage d'efforts.\n\nCette station vous aide à définir l'objectif, le public cible et les critères de réussite de votre API, afin que les équipes puissent fournir des API qui résolvent des problèmes réels.",
              "applyInWork": "Fournir des lignes directrices et des modèles pour la création de modèles commerciaux, de propositions de valeur et de feuilles de route pour les API.",
              "outcomes": [
                "Une proposition de valeur et un public simples pour l'API",
                "Un langage commun entre le produit, le design et la technologie",
                "Un argumentaire ou un dossier solide pour le financement/l'approbation"
              ],
              "steps": [
                {
                  "text": "Explorez le problème du client ou du partenaire que vous comptez résoudre avec les API. Dressez la carte des parties prenantes, de leurs parcours et de leurs résultats à l'aide du Customer Journey canvas.",
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas"
                },
                {
                  "text": "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas"
                },
                {
                  "text": "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas"
                },
                {
                  "text": "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
                  "resourceId": "apiBusinessModelCanvas",
                  "resourceTitle": "API Business Model Canvas",
                  "canvasId": "apiBusinessModelCanvas"
                }
              ],
              "questions": [
                "Explorez le problème du client ou du partenaire que vous comptez résoudre avec les API. Dressez la carte des parties prenantes, de leurs parcours et de leurs résultats à l'aide du Customer Journey canvas.",
                "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
                "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
                "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
                "Fournir des lignes directrices et des modèles pour la création de modèles commerciaux, de propositions de valeur et de feuilles de route pour les API.",
                "De nombreuses organisations considèrent les API comme des projets technologiques et non comme des produits. Le résultat ? Des utilisateurs désorientés, une adoption médiocre et un gaspillage d'efforts.\n\nCette station vous aide à définir l'objectif, le public cible et les critères de réussite de votre API, afin que les équipes puissent fournir des API qui résolvent des problèmes réels."
              ],
              "criteria": [
                "metrics-feedback-available",
                "business-goals-defined",
                "market-research-done",
                "stakeholder-approval"
              ],
              "criteriaDetails": [
                {
                  "id": "metrics-feedback-available",
                  "title": "Des signaux de marché pertinents, des retours d'expérience ou des informations opérationnelles sont disponibles pour guider cette opportunité de capacité.",
                  "description": "Relevant market signals, feedback, or operational insights are available to guide this API opportunity."
                },
                {
                  "id": "business-goals-defined",
                  "title": "Les objectifs métier sont définis.",
                  "description": "Business goals are defined."
                },
                {
                  "id": "market-research-done",
                  "title": "L'étude de marché identifie des opportunités de capacité.",
                  "description": "Market research identifies API opportunities."
                },
                {
                  "id": "stakeholder-approval",
                  "title": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
                  "description": "Relevant stakeholders agree this API opportunity is worth exploring and prioritizing."
                }
              ],
              "baseTitle": "Stratégie de capacité",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "strategy",
              "stakeholders": [
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "lead",
                  "responsibilities": [
                    {
                      "resourceId": "apiValuePropositionCanvas",
                      "resourceTitle": "API Value Proposition Canvas",
                      "canvasId": "apiValuePropositionCanvas",
                      "role": "suggested-answer-owner"
                    },
                    {
                      "resourceId": "apiBusinessModelCanvas",
                      "resourceTitle": "API Business Model Canvas",
                      "canvasId": "apiBusinessModelCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "domainCanvas",
                      "resourceTitle": "Domain Canvas",
                      "canvasId": "domainCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "customer-specialist",
                  "sourceKey": "customer-specialist",
                  "sourceStakeholderId": "customer-specialist",
                  "title": "Représentant client ou partenaire",
                  "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "customerJourneyCanvas",
                      "resourceTitle": "Customer Journey Canvas",
                      "canvasId": "customerJourneyCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "customerJourneyCanvas",
                  "slug": "resources/customer-journey-canvas",
                  "title": "Customer Journey Canvas",
                  "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 1,
                  "outcomes": [
                    "Compréhension partagée du parcours client, partenaire ou utilisateur",
                    "Besoins, irritants, gains, entrées et sorties documentés",
                    "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
                  ],
                  "steps": [
                    "Définir le profil du client",
                    "Identifier les éléments déclencheurs du voyage",
                    "Décrire la fin du voyage",
                    "Cartographier les étapes du voyage avec les intrants et les extrants",
                    "Identifier les problèmes des clients",
                    "Résumer les gains pour les clients",
                    "Définir les intrants nécessaires et les résultats qui en découlent",
                    "Définir les interactions API pour chaque étape"
                  ],
                  "canvasId": "customerJourneyCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "domainCanvas",
                  "slug": "resources/domain-canvas",
                  "title": "Domain Canvas",
                  "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 152,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                    "Approche cohérente pour appliquer « Domain Canvas »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
                  ],
                  "canvasId": "domainCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "apiValuePropositionCanvas",
                  "slug": "resources/api-value-proposition-canvas",
                  "title": "API Value Proposition Canvas",
                  "description": "Aligner les fonctionnalités de l'API sur les besoins des utilisateurs en établissant une correspondance entre les tâches, les douleurs et les gains et les produits de l'API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 2,
                  "outcomes": [
                    "Développement de fonctionnalités ciblées",
                    "Alignement sur les besoins des utilisateurs",
                    "Amélioration de la satisfaction des consommateurs d'API"
                  ],
                  "steps": [
                    "Liste des tâches liées au parcours de l'utilisateur",
                    "Identifier les caractéristiques permettant d'obtenir les gains escomptés",
                    "Définir des caractéristiques permettant de relever les défis",
                    "Cartographier les caractéristiques des produits de l'API"
                  ],
                  "canvasId": "apiValuePropositionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "apiBusinessModelCanvas",
                  "slug": "resources/api-business-model-canvas",
                  "title": "API Business Model Canvas",
                  "description": "Évaluer stratégiquement la viabilité de l'activité API en établissant une cartographie des propositions de valeur, des segments de consommateurs et des ressources clés.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 3,
                  "outcomes": [
                    "Une stratégie commerciale claire pour les API",
                    "Identification des ressources et des partenaires clés",
                    "Alignement des fonctionnalités de l'API sur les objectifs de l'entreprise"
                  ],
                  "steps": [
                    "Résumer la proposition de valeur de l'API",
                    "Définir les segments de consommateurs",
                    "Identifier les stratégies de relations avec les développeurs",
                    "Cartographier les canaux de distribution",
                    "Documentez les ressources et activités clés.",
                    "Identifier les principaux partenaires et parties prenantes",
                    "Mettre en évidence les avantages et les coûts"
                  ],
                  "canvasId": "apiBusinessModelCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                }
              ],
              "evidence": [
                "design-artifact",
                "documentation",
                "research",
                "roadmap"
              ]
            },
            {
              "index": 2,
              "id": "api-consumer-experience",
              "slug": "method/api-consumer-experience",
              "icon": "deployed-code-account-outline",
              "title": "Expérience utilisateur API",
              "description": "Veillez à ce que votre API soit découvrable, compréhensible et utilisable - avant et après le lancement.",
              "whyItMatters": "Les meilleures API ne se contentent pas de fonctionner, elles sont intuitives. Que votre utilisateur soit un développeur interne, un partenaire externe ou un agent d'intelligence artificielle, c'est son expérience qui détermine l'adoption.\n\nSans un plan d'expérience clair :\n- Les meilleures API restent inutilisées\n- Les équipes perdent du temps à deviner comment utiliser votre API.\n- Les boucles de rétroaction sont brisées ou manquantes.\n\nCette station vous aide à voir votre API à travers les yeux de ses utilisateurs.",
              "applyInWork": "Fournir des lignes directrices, des outils et des mécanismes de retour d'information pour comprendre, analyser et améliorer l'expérience interne et externe des développeurs et des partenaires.",
              "outcomes": [
                "Identifier et hiérarchiser les utilisateurs",
                "Définir le parcours de l'expérience API",
                "Planifier l'intégration, la documentation et le retour d'information",
                "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)"
              ],
              "steps": [
                {
                  "text": "Examinez l'API Value Proposition Canvas du point de vue de l'utilisateur. Veillez à la stabilité des tâches métier prises en charge et enrichissez les fonctionnalités qui simplifient et optimisent l'expérience utilisateur en intégrant les préoccupations des utilisateurs afin d'orienter les décisions de conception ultérieures.",
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas"
                },
                {
                  "text": "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas"
                },
                {
                  "text": "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
                  "resourceId": "api-onboarding-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Examinez l'API Value Proposition Canvas du point de vue de l'utilisateur. Veillez à la stabilité des tâches métier prises en charge et enrichissez les fonctionnalités qui simplifient et optimisent l'expérience utilisateur en intégrant les préoccupations des utilisateurs afin d'orienter les décisions de conception ultérieures.",
                "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
                "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
                "Fournir des lignes directrices, des outils et des mécanismes de retour d'information pour comprendre, analyser et améliorer l'expérience interne et externe des développeurs et des partenaires.",
                "Les meilleures API ne se contentent pas de fonctionner, elles sont intuitives. Que votre utilisateur soit un développeur interne, un partenaire externe ou un agent d'intelligence artificielle, c'est son expérience qui détermine l'adoption.\n\nSans un plan d'expérience clair :\n- Les meilleures API restent inutilisées\n- Les équipes perdent du temps à deviner comment utiliser votre API.\n- Les boucles de rétroaction sont brisées ou manquantes.\n\nCette station vous aide à voir votre API à travers les yeux de ses utilisateurs."
              ],
              "criteria": [
                "api-opportunity-documented",
                "api-reusability",
                "hide-backend-discrepancies",
                "value-prop-validated",
                "consumer-segments-identified",
                "api-roadmap-defined"
              ],
              "criteriaDetails": [
                {
                  "id": "api-opportunity-documented",
                  "title": "L'opportunité de capacité est identifiée et documentée.",
                  "description": "Individual API opportunities are identified and documented."
                },
                {
                  "id": "api-reusability",
                  "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
                  "description": "The API meets a clear business need and is reusable for multiple API consumers."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "value-prop-validated",
                  "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
                  "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
                },
                {
                  "id": "consumer-segments-identified",
                  "title": "Les segments d'utilisateurs sont identifiés.",
                  "description": "API consumer segments (internal and external) are identified."
                },
                {
                  "id": "api-roadmap-defined",
                  "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
                  "description": "High-level roadmaps for API development are established."
                }
              ],
              "baseTitle": "Exigences utilisateurs & onboarding",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "strategy",
              "stakeholders": [
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "apiValuePropositionCanvas",
                  "slug": "resources/api-value-proposition-canvas",
                  "title": "API Value Proposition Canvas",
                  "description": "Aligner les fonctionnalités de l'API sur les besoins des utilisateurs en établissant une correspondance entre les tâches, les douleurs et les gains et les produits de l'API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 2,
                  "outcomes": [
                    "Développement de fonctionnalités ciblées",
                    "Alignement sur les besoins des utilisateurs",
                    "Amélioration de la satisfaction des consommateurs d'API"
                  ],
                  "steps": [
                    "Liste des tâches liées au parcours de l'utilisateur",
                    "Identifier les caractéristiques permettant d'obtenir les gains escomptés",
                    "Définir des caractéristiques permettant de relever les défis",
                    "Cartographier les caractéristiques des produits de l'API"
                  ],
                  "canvasId": "apiValuePropositionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "customerJourneyCanvas",
                  "slug": "resources/customer-journey-canvas",
                  "title": "Customer Journey Canvas",
                  "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 1,
                  "outcomes": [
                    "Compréhension partagée du parcours client, partenaire ou utilisateur",
                    "Besoins, irritants, gains, entrées et sorties documentés",
                    "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
                  ],
                  "steps": [
                    "Définir le profil du client",
                    "Identifier les éléments déclencheurs du voyage",
                    "Décrire la fin du voyage",
                    "Cartographier les étapes du voyage avec les intrants et les extrants",
                    "Identifier les problèmes des clients",
                    "Résumer les gains pour les clients",
                    "Définir les intrants nécessaires et les résultats qui en découlent",
                    "Définir les interactions API pour chaque étape"
                  ],
                  "canvasId": "customerJourneyCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "api-onboarding-best-practices",
                  "slug": "resources/api-onboarding-best-practices",
                  "title": "Meilleures pratiques en matière d'intégration de l'API",
                  "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 121,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                    "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                    "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "design-artifact",
                "documentation",
                "consumer-feedback"
              ]
            },
            {
              "index": 3,
              "id": "api-platform-architecture",
              "slug": "method/api-platform-architecture",
              "icon": "code-blocks-outline",
              "title": "Architecture de plateforme API",
              "description": "Assurez l'évolutivité, la réutilisation et la gouvernance de vos composants d'API et de plateforme.",
              "whyItMatters": "Lorsque les API s'étendent à plusieurs équipes, votre plateforme doit permettre la gouvernance et la réutilisation sans bloquer la vitesse. Cette station montre comment architecturer les API pour assurer leur longévité, leur sécurité et leur efficacité.",
              "applyInWork": "Mettre en place une infrastructure évolutive, sécurisée et conforme pour les opérations API. Fournir des lignes directrices sur les meilleures pratiques en matière d'architecture.",
              "outcomes": [
                "Supprimer les API redondantes et réduire les coûts de la plateforme en nuage",
                "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
                "Conception en vue d'une réutilisation interne et d'une évolutivité externe"
              ],
              "steps": [
                {
                  "text": "Le Business Impact Canvas permet d'identifier et d'atténuer les risques liés à la disponibilité, à la sécurité et à la fonctionnalité de l'API afin de prendre des décisions éclairées en matière d'architecture.",
                  "resourceId": "businessImpactCanvas",
                  "resourceTitle": "Business Impact Canvas",
                  "canvasId": "businessImpactCanvas"
                },
                {
                  "text": "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas"
                },
                {
                  "text": "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
                  "resourceId": "capacityCanvas",
                  "resourceTitle": "Capacity Canvas",
                  "canvasId": "capacityCanvas"
                },
                {
                  "text": "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                  "resourceId": "api-metrics-and-analytics",
                  "resourceTitle": "Mesures et analyses de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Le Business Impact Canvas permet d'identifier et d'atténuer les risques liés à la disponibilité, à la sécurité et à la fonctionnalité de l'API afin de prendre des décisions éclairées en matière d'architecture.",
                "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
                "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Mettre en place une infrastructure évolutive, sécurisée et conforme pour les opérations API. Fournir des lignes directrices sur les meilleures pratiques en matière d'architecture.",
                "Lorsque les API s'étendent à plusieurs équipes, votre plateforme doit permettre la gouvernance et la réutilisation sans bloquer la vitesse. Cette station montre comment architecturer les API pour assurer leur longévité, leur sécurité et leur efficacité."
              ],
              "criteria": [
                "api-reusability",
                "hide-backend-discrepancies",
                "value-prop-validated",
                "consumer-segments-identified",
                "api-roadmap-defined"
              ],
              "criteriaDetails": [
                {
                  "id": "api-reusability",
                  "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
                  "description": "The API meets a clear business need and is reusable for multiple API consumers."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "value-prop-validated",
                  "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
                  "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
                },
                {
                  "id": "consumer-segments-identified",
                  "title": "Les segments d'utilisateurs sont identifiés.",
                  "description": "API consumer segments (internal and external) are identified."
                },
                {
                  "id": "api-roadmap-defined",
                  "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
                  "description": "High-level roadmaps for API development are established."
                }
              ],
              "baseTitle": "Architecture & décisions de plateforme",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "architecture",
              "stakeholders": [
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "api-architect",
                  "sourceKey": "api-architect",
                  "sourceStakeholderId": "api-architect",
                  "title": "Architecte API",
                  "description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "locationsCanvas",
                      "resourceTitle": "Location Canvas",
                      "canvasId": "locationsCanvas",
                      "role": "suggested-answer-owner"
                    },
                    {
                      "resourceId": "capacityCanvas",
                      "resourceTitle": "Capacity Canvas",
                      "canvasId": "capacityCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "businessImpactCanvas",
                      "resourceTitle": "Business Impact Canvas",
                      "canvasId": "businessImpactCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "businessImpactCanvas",
                  "slug": "resources/business-impact-canvas",
                  "title": "Business Impact Canvas",
                  "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 4,
                  "outcomes": [
                    "Évaluation documentée des impacts métier et opérationnels",
                    "Risques et mesures d’atténuation priorisés",
                    "Éléments probants pour les décisions d’architecture et de plateforme"
                  ],
                  "steps": [
                    "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                    "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                    "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                    "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                    "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                    "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
                  ],
                  "canvasId": "businessImpactCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "locationsCanvas",
                  "slug": "resources/location-canvas",
                  "title": "Location Canvas",
                  "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 6,
                  "outcomes": [
                    "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                    "Contraintes régionales de performance et d’accessibilité identifiées",
                    "Résidence des données, limites de confiance et réglementations applicables clarifiées"
                  ],
                  "steps": [
                    "Carte des emplacements des fournisseurs d'API.",
                    "Documenter l'emplacement des consommateurs.",
                    "Identifier les réglementations applicables.",
                    "Documenter l'endroit où les données doivent être stockées.",
                    "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                    "Valider les performances du réseau dans les différentes régions."
                  ],
                  "canvasId": "locationsCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capacityCanvas",
                  "slug": "resources/capacity-canvas",
                  "title": "Capacity Canvas",
                  "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 7,
                  "outcomes": [
                    "Exigences de capacité alignées sur la demande métier attendue",
                    "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                    "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
                  ],
                  "steps": [
                    "Documenter les volumes d'affaires actuels",
                    "Prévoir les tendances futures de la consommation",
                    "Planifier les pics de charge et les exigences de disponibilité",
                    "Définir les stratégies de mise en cache et de limitation du débit",
                    "Proposer des stratégies de mise à l'échelle"
                  ],
                  "canvasId": "capacityCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "api-metrics-and-analytics",
                  "slug": "resources/api-metrics-and-analytics",
                  "title": "Mesures et analyses de l'API",
                  "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 119,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                    "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                    "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                    "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "architecture-decision",
                "documentation",
                "platform-config",
                "metrics"
              ]
            },
            {
              "index": 4,
              "id": "api-design",
              "slug": "method/api-design",
              "icon": "api",
              "title": "Conception d’API",
              "description": "Créer des architectures d'API cohérentes, réutilisables et fondées sur les objectifs métier et des normes communes.",
              "whyItMatters": "La conception d'API ne se limite pas à nommer des points de terminaison. Une bonne conception garantit que les API sont utilisables, cohérentes et alignées sur les objectifs métier et techniques. Une mauvaise conception entraîne un couplage étroit, une faible réutilisation et des retouches coûteuses entre les équipes.",
              "applyInWork": "Fournir des modèles de conception réutilisables, des normes communes et des outils de validation pour les spécifications d'API. S'assurer que les décisions de conception sont cohérentes, examinées dès le début et alignées sur les objectifs métier.",
              "outcomes": [
                "Des conceptions d'API bien documentées et cohérentes",
                "Contrats d'interface API réutilisables et validés",
                "Conceptions alignées sur les modèles de domaine et les modèles d'interaction",
                "Traçabilité de la conception à la valeur métier"
              ],
              "steps": [
                {
                  "text": "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API.",
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas"
                },
                {
                  "text": "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
                  "resourceId": "interactionCanvas",
                  "resourceTitle": "Interaction Canvas",
                  "canvasId": "interactionCanvas"
                },
                {
                  "text": "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "restCanvas",
                  "resourceTitle": "REST Canvas",
                  "canvasId": "restCanvas"
                },
                {
                  "text": "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "eventCanvas",
                  "resourceTitle": "Event Canvas",
                  "canvasId": "eventCanvas"
                },
                {
                  "text": "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "graphqlCanvas",
                  "resourceTitle": "GraphQL Canvas",
                  "canvasId": "graphqlCanvas"
                },
                {
                  "text": "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
                  "resourceId": "api-design-principles",
                  "resourceTitle": "Principes de conception de l'API",
                  "canvasId": null
                },
                {
                  "text": "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat d'interface API avant sa mise en œuvre.",
                  "resourceId": "contract-first-design",
                  "resourceTitle": "Contrat de première conception",
                  "canvasId": null
                },
                {
                  "text": "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API.",
                "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
                "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
                "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat d'interface API avant sa mise en œuvre.",
                "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Fournir des modèles de conception réutilisables, des normes communes et des outils de validation pour les spécifications d'API. S'assurer que les décisions de conception sont cohérentes, examinées dès le début et alignées sur les objectifs métier.",
                "La conception d'API ne se limite pas à nommer des points de terminaison. Une bonne conception garantit que les API sont utilisables, cohérentes et alignées sur les objectifs métier et techniques. Une mauvaise conception entraîne un couplage étroit, une faible réutilisation et des retouches coûteuses entre les équipes."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "hide-backend-discrepancies",
                "design-reflects-business-value",
                "api-consistency"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                }
              ],
              "baseTitle": "Conception de solution & d'interface",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "design",
              "stakeholders": [
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "domainCanvas",
                  "slug": "resources/domain-canvas",
                  "title": "Domain Canvas",
                  "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 152,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                    "Approche cohérente pour appliquer « Domain Canvas »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
                  ],
                  "canvasId": "domainCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "interactionCanvas",
                  "slug": "resources/interaction-canvas",
                  "title": "Interaction Canvas",
                  "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 9,
                  "outcomes": [
                    "Modèle d’interaction défini pour la capacité choisie",
                    "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                    "Règles de validation et attentes d’interaction convenues"
                  ],
                  "steps": [
                    "Associer les interactions de l'API aux tâches de l'utilisateur",
                    "Définir des points finaux pour chaque interaction",
                    "Documentez les entrées et les sorties de chaque interaction.",
                    "Spécifier les règles et contraintes de validation",
                    "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
                  ],
                  "canvasId": "interactionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "restCanvas",
                  "slug": "resources/rest-canvas",
                  "title": "REST Canvas",
                  "description": "Concevoir des API en utilisant les principes RESTful, en définissant des ressources, des verbes et des exemples de requêtes et de réponses.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 10,
                  "outcomes": [
                    "Conception cohérente de l'API RESTful",
                    "Ressources définies et leurs interactions",
                    "Exemples de demandes et de réponses pour plus de clarté"
                  ],
                  "steps": [
                    "Identifier les ressources clés exposées par l'API",
                    "Définir la structure du modèle de ressources de l'API",
                    "Spécifier les verbes HTTP utilisés pour interagir avec les ressources",
                    "Fournir des exemples de demandes et de réponses pour chaque verbe"
                  ],
                  "canvasId": "restCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "eventCanvas",
                  "slug": "resources/event-canvas",
                  "title": "Event Canvas",
                  "description": "Concevez des interfaces et intégrations événementielles en définissant les événements, déclencheurs, schémas, producteurs, utilisateurs et logiques de traitement.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 12,
                  "outcomes": [
                    "Modèle d’interaction événementiel défini",
                    "Événements, déclencheurs, schémas, producteurs et utilisateurs clarifiés",
                    "Attentes de traitement, d’accusé de réception et de gestion des échecs documentées"
                  ],
                  "steps": [
                    "Identifier les événements clés du système",
                    "Définir des déclencheurs pour chaque événement",
                    "Décrivez le traitement des événements, les changements d’état et la gestion des échecs.",
                    "Préciser les résultats obtenus ou les remerciements"
                  ],
                  "canvasId": "eventCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "graphqlCanvas",
                  "slug": "resources/graphql-canvas",
                  "title": "GraphQL Canvas",
                  "description": "Concevoir des API GraphQL en définissant des types, des requêtes, des mutations et des abonnements.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 11,
                  "outcomes": [
                    "Conception d'une API GraphQL structurée",
                    "Types définis et leurs relations",
                    "Des requêtes, des mutations et des abonnements clairs"
                  ],
                  "steps": [
                    "Quels sont les problèmes que les consommateurs d'API tentent de résoudre ? De quelles données ont-ils besoin ?",
                    "Définir les types GraphQL et leurs attributs : Quels sont les principaux types exposés (par exemple, Utilisateur, Commande, Produit) ?",
                    "Cartographier les relations entre les types : Comment les types sont-ils liés les uns aux autres dans les requêtes imbriquées ?",
                    "Spécifier les requêtes pour l'extraction des données",
                    "Définir les mutations pour la modification des données : Quelles sont les opérations qui modifient les données (par exemple, création, mise à jour, suppression) ?",
                    "Abonnements aux grandes lignes pour des mises à jour en temps réel",
                    "Définir l'authentification et l'autorisation : Qui peut accéder à quels champs ou types ?",
                    "Tenez compte des contraintes de pagination, de filtrage ou de limitation du débit."
                  ],
                  "canvasId": "graphqlCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-design-principles",
                  "slug": "resources/api-design-principles",
                  "title": "Principes de conception de l'API",
                  "description": "Un guide concis sur l'ergonomie, la facilité de découverte et la cohérence des API, fondé sur des règles de conception communes et les besoins réels des consommateurs.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 14,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Principes de conception de l'API »",
                    "Approche cohérente pour appliquer « Principes de conception de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "**Consumer-first design:** commencer chaque cycle APIOps en rassemblant les objectifs des utilisateurs et les termes du domaine afin que les APIs résolvent des problèmes réels.",
                    "**Noms et comportements cohérents:** appliquer des conventions partagées pour les ressources, les erreurs et les formats afin de rendre les API prévisibles.",
                    "**Dirigé par le contrat:** capturer l'interface avec OpenAPI ou AsyncAPI avant le codage pour aligner les équipes et permettre l'automatisation.",
                    "**Utilisabilité et facilité de découverte:** fournir une documentation et des exemples clairs afin que les développeurs comprennent rapidement comment utiliser l'API.",
                    "**Itérer en sécurité :** faites évoluer les conceptions par petits incréments versionnés afin que les changements ne perturbent pas les utilisateurs existants."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/api-style-guide.json",
                  "sourceUrl": null,
                  "contentMarkdown": "{\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"hides-raw-backend-data\",\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}",
                  "draft": false
                },
                {
                  "id": "contract-first-design",
                  "slug": "resources/contract-first-design",
                  "title": "Contrat de première conception",
                  "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 146,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                    "Approche cohérente pour appliquer « Contrat de première conception »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                    "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                    "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/api-contract-example.yaml",
                  "sourceUrl": null,
                  "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
                  "draft": true
                }
              ],
              "evidence": [
                "spec",
                "contract",
                "design-artifact",
                "documentation"
              ]
            },
            {
              "index": 5,
              "id": "api-delivery",
              "slug": "method/api-delivery",
              "icon": "code",
              "title": "Livraison d’API",
              "description": "Construire, tester et publier des API en utilisant des pipelines de livraison modernes et les meilleures pratiques d'ingénierie.",
              "whyItMatters": "Même les meilleures conceptions d'API échouent si la livraison est incohérente. Cette station garantit que vos API sont construites avec qualité, testées de manière approfondie et déployées de manière fiable, ce qui permet des itérations plus rapides et une plus grande confiance.",
              "applyInWork": "Fournir des frameworks de développement, des bibliothèques et des normes pour la mise en œuvre des API. Mettre en œuvre des pipelines CI/CD, des cadres d'assurance qualité et des outils d'automatisation du déploiement.",
              "outcomes": [
                "API mises en œuvre à l'aide de cadres et de modèles testés",
                "Pipelines CI/CD fiables et automatisés",
                "Tests fonctionnels et non fonctionnels intégrés",
                "Pipelines de livraison sécurisés et conformes"
              ],
              "steps": [
                {
                  "text": "Utilisez les meilleures pratiques de développement d'API comme guide pour mettre en œuvre le contrat d'interface validé à l'aide de frameworks et de bibliothèques établis, en veillant à ce que le résultat soit réutilisable et maintenable.",
                  "resourceId": "api-development-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de développement d'API",
                  "canvasId": null
                },
                {
                  "text": "Construisez l'implémentation de l'API à partir du contrat d'interface validé en utilisant des frameworks, des bibliothèques et des standards d'équipe établis.",
                  "resourceId": "api-development-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de développement d'API",
                  "canvasId": null
                },
                {
                  "text": "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                  "resourceId": "api-testing-best-practices",
                  "resourceTitle": "Meilleures pratiques de test de l'API",
                  "canvasId": null
                },
                {
                  "text": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                },
                {
                  "text": "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                  "resourceId": "api-security-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de sécurité des API",
                  "canvasId": null
                },
                {
                  "text": "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez les meilleures pratiques de développement d'API comme guide pour mettre en œuvre le contrat d'interface validé à l'aide de frameworks et de bibliothèques établis, en veillant à ce que le résultat soit réutilisable et maintenable.",
                "Construisez l'implémentation de l'API à partir du contrat d'interface validé en utilisant des frameworks, des bibliothèques et des standards d'équipe établis.",
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Fournir des frameworks de développement, des bibliothèques et des normes pour la mise en œuvre des API. Mettre en œuvre des pipelines CI/CD, des cadres d'assurance qualité et des outils d'automatisation du déploiement.",
                "Même les meilleures conceptions d'API échouent si la livraison est incohérente. Cette station garantit que vos API sont construites avec qualité, testées de manière approfondie et déployées de manière fiable, ce qui permet des itérations plus rapides et une plus grande confiance."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "hide-backend-discrepancies",
                "design-reflects-business-value",
                "api-consistency"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                }
              ],
              "baseTitle": "Mise à disposition & opérations",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "delivery",
              "stakeholders": [
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-development-best-practices",
                  "slug": "resources/api-development-best-practices",
                  "title": "Meilleures pratiques en matière de développement d'API",
                  "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 112,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                    "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
                  "sourceUrl": null,
                  "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
                  "draft": true
                },
                {
                  "id": "api-testing-best-practices",
                  "slug": "resources/api-testing-best-practices",
                  "title": "Meilleures pratiques de test de l'API",
                  "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 133,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                    "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                    "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "apiops-CI-CD-for-apis",
                  "slug": "resources/apiops-CI-CD-for-apis",
                  "title": "APIOps CI/CD pour les API",
                  "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 140,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                    "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                    "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                    "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                    "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-security-best-practices",
                  "slug": "resources/api-security-best-practices",
                  "title": "Meilleures pratiques en matière de sécurité des API",
                  "description": "Un ensemble de contrôles exploitables pour sécuriser les API, y compris l'authentification, l'autorisation, le cryptage, la limitation du débit et les contrôles de conformité au niveau du pipeline.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 130,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de sécurité des API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de sécurité des API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                    "Mettre en œuvre des mesures de sécurité telles que l'authentification, l'autorisation, le cryptage et la limitation du débit pour protéger les API contre les menaces.",
                    "Mettre en œuvre des contrôles de sécurité automatisés et des validations de conformité dans le pipeline CI/CD pour s'assurer que les API sont sécurisées et conformes."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "implementation",
                "pipeline-config",
                "test-report",
                "security-report"
              ]
            },
            {
              "index": 6,
              "id": "api-audit",
              "slug": "method/api-audit",
              "icon": "check-box-outline",
              "title": "Audit API",
              "description": "Vérifiez que les API répondent aux normes métier, de conception et opérationnelles avant leur publication et leur mise à disposition.",
              "whyItMatters": "Les API sont des produits à longue durée de vie et doivent répondre aux attentes en matière de qualité, de cohérence et de conformité. L'audit relie les décisions de conception, la mise en œuvre et l'état de préparation opérationnelle à des normes définies, réduisant ainsi les risques avant la mise à disposition.",
              "applyInWork": "Mettez en place un processus d'audit cohérent qui évalue l'état de préparation des API à toutes les étapes du cycle de vie à l'aide de critères, de preuves et de normes définis. Assurez-vous que les lacunes sont identifiées tôt et résolues avant la publication.",
              "outcomes": [
                "Les API sont conformes aux normes internes et externes",
                "Documentation claire des décisions relatives à la conception et à la mise en œuvre de l'API",
                "Sécurité, performance et conformité validées",
                "Réduction du risque de problèmes en production"
              ],
              "steps": [
                {
                  "text": "Mener des audits pour s'assurer que les API respectent les normes organisationnelles, techniques et juridiques avant d'être publiées.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                },
                {
                  "text": "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
                  "resourceId": "api-compliance-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de conformité de l'API",
                  "canvasId": null
                },
                {
                  "text": "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
                  "resourceTitle": "",
                  "canvasId": null
                }
              ],
              "questions": [
                "Mener des audits pour s'assurer que les API respectent les normes organisationnelles, techniques et juridiques avant d'être publiées.",
                "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
                "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
                "Mettez en place un processus d'audit cohérent qui évalue l'état de préparation des API à toutes les étapes du cycle de vie à l'aide de critères, de preuves et de normes définis. Assurez-vous que les lacunes sont identifiées tôt et résolues avant la publication.",
                "Les API sont des produits à longue durée de vie et doivent répondre aux attentes en matière de qualité, de cohérence et de conformité. L'audit relie les décisions de conception, la mise en œuvre et l'état de préparation opérationnelle à des normes définies, réduisant ainsi les risques avant la mise à disposition."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "design-reflects-business-value",
                "api-description-available",
                "api-consistency",
                "api-contract-tested"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-description-available",
                  "title": "L’interface et ses capacités sont documentées de manière suffisamment claire pour la revue, l’audit et l’onboarding.",
                  "description": "The API and its exposed capabilities are described clearly enough for review, audit, and onboarding."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                },
                {
                  "id": "api-contract-tested",
                  "title": "Le contrat d'interface a été validé et testé par rapport aux exigences fonctionnelles et non fonctionnelles.",
                  "description": "The API contract is tested and meets functional and non-functional requirements."
                }
              ],
              "baseTitle": "Assurance qualité & préparation",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "publishing",
              "stakeholders": [
                {
                  "id": "governance-specialist",
                  "sourceKey": "governance-specialist",
                  "sourceStakeholderId": "governance-specialist",
                  "title": "Responsable gouvernance",
                  "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-audit-checklist",
                  "slug": "resources/api-audit-checklist",
                  "title": "Liste de contrôle de l'audit de l'API",
                  "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
                  "category": "checklist",
                  "icon": "check-box-outline",
                  "order": 13,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                    "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                    "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                    "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/api-audit-checklist.json",
                  "sourceUrl": null,
                  "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
                  "draft": false
                },
                {
                  "id": "api-compliance-best-practices",
                  "slug": "resources/api-compliance-best-practices",
                  "title": "Meilleures pratiques en matière de conformité de l'API",
                  "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 104,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
                    "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
                    "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "audit-report",
                "compliance-report",
                "security-report",
                "test-report"
              ]
            },
            {
              "index": 7,
              "id": "api-publishing",
              "slug": "method/api-publishing",
              "icon": "deployed-code-outline",
              "title": "Publication d’API",
              "description": "Exposer les API de manière sûre et claire au bon public avec la bonne documentation et les bons processus.",
              "whyItMatters": "La publication va plus loin que le déploiement - il s'agit de la découvrabilité, de l'accès et de l'assistance. Si les API ne sont pas publiées correctement, elles ne seront pas utilisées, réutilisées ou sécurisées efficacement.",
              "applyInWork": "Permettre aux API d'être publiées dans l'environnement approprié et disposer de mécanismes d'enregistrement et d'accès clairs (par exemple, clés API, OAuth, plans d'abonnement) en fonction des segments de utilisateurs et des exigences en matière de sécurité et de conformité.",
              "outcomes": [
                "API publiées dans le bon environnement (privé, partenaire, public)",
                "Des processus clairs d'intégration et d'enregistrement de l'API",
                "Documentation, modèles de sécurité et politiques disponibles",
                "Des API prêtes pour l'échelle et la gouvernance"
              ],
              "steps": [
                {
                  "text": "Publier les API dans les passerelles et les environnements appropriés afin de favoriser la réutilisation pour de multiples utilisateurs.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                },
                {
                  "text": "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
                  "resourceId": "api-onboarding-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
                  "canvasId": null
                },
                {
                  "text": "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Publier les API dans les passerelles et les environnements appropriés afin de favoriser la réutilisation pour de multiples utilisateurs.",
                "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
                "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
                "Permettre aux API d'être publiées dans l'environnement approprié et disposer de mécanismes d'enregistrement et d'accès clairs (par exemple, clés API, OAuth, plans d'abonnement) en fonction des segments de utilisateurs et des exigences en matière de sécurité et de conformité.",
                "La publication va plus loin que le déploiement - il s'agit de la découvrabilité, de l'accès et de l'assistance. Si les API ne sont pas publiées correctement, elles ne seront pas utilisées, réutilisées ou sécurisées efficacement."
              ],
              "criteria": [
                "audit-passed",
                "audit-reports-shared",
                "api-ready-for-publishing",
                "api-documentation-ready"
              ],
              "criteriaDetails": [
                {
                  "id": "audit-passed",
                  "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
                  "description": "The API passes compliance, security, and audit checks."
                },
                {
                  "id": "audit-reports-shared",
                  "title": "Les résultats d'audit et les décisions de correction sont partagés avec les parties prenantes concernées.",
                  "description": "Audit findings and remediation decisions are shared with the relevant stakeholders."
                },
                {
                  "id": "api-ready-for-publishing",
                  "title": "La capacité est prête à être publiée ou mise à disposition via le mécanisme de livraison choisi.",
                  "description": "The API is ready to be deployed and exposed through the intended gateways and environments."
                },
                {
                  "id": "api-documentation-ready",
                  "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
                  "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
                }
              ],
              "baseTitle": "Publication & enablement",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "publishing",
              "stakeholders": [
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "apiops-CI-CD-for-apis",
                  "slug": "resources/apiops-CI-CD-for-apis",
                  "title": "APIOps CI/CD pour les API",
                  "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 140,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                    "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                    "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                    "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                    "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-onboarding-best-practices",
                  "slug": "resources/api-onboarding-best-practices",
                  "title": "Meilleures pratiques en matière d'intégration de l'API",
                  "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 121,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                    "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                    "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-audit-checklist",
                  "slug": "resources/api-audit-checklist",
                  "title": "Liste de contrôle de l'audit de l'API",
                  "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
                  "category": "checklist",
                  "icon": "check-box-outline",
                  "order": 13,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                    "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                    "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                    "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/api-audit-checklist.json",
                  "sourceUrl": null,
                  "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
                  "draft": false
                }
              ],
              "evidence": [
                "gateway-config",
                "developer-portal",
                "documentation",
                "release-record"
              ]
            },
            {
              "index": 8,
              "id": "monitoring-and-improving",
              "slug": "method/monitoring-and-improving",
              "icon": "analytics-outline",
              "title": "Suivi & amelioration API",
              "description": "Utiliser les mesures et le retour d'information pour suivre les performances de l'API et favoriser l'amélioration continue.",
              "whyItMatters": "La livraison d'API ne s'arrête pas au lancement. Sans surveillance, les équipes ne peuvent pas améliorer l'adoption, les performances ou le retour sur investissement. Cette station garantit que les API restent utiles, sécurisées et qu'elles évoluent avec les besoins de l'entreprise.",
              "applyInWork": "Mettre en place des cadres d'analyse pour suivre les performances et l'engagement. Développer des boucles de rétroaction, des outils d'analyse et des stratégies d'engagement pour les API.",
              "outcomes": [
                "Définition et suivi des indicateurs de performance et d'utilisation",
                "Boucles de rétroaction des développeurs en place",
                "Questions identifiées et traitées en permanence",
                "Itération de l'API alignée sur les besoins des utilisateurs"
              ],
              "steps": [
                {
                  "text": "Contrôler les indicateurs de performance (par exemple, les appels à l'API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                  "resourceId": "api-metrics-and-analytics",
                  "resourceTitle": "Mesures et analyses de l'API",
                  "canvasId": null
                },
                {
                  "text": "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
                  "resourceId": "api-community-engagement-strategies",
                  "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
                  "canvasId": null
                },
                {
                  "text": "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Contrôler les indicateurs de performance (par exemple, les appels à l'API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
                "Mettre en place des cadres d'analyse pour suivre les performances et l'engagement. Développer des boucles de rétroaction, des outils d'analyse et des stratégies d'engagement pour les API.",
                "La livraison d'API ne s'arrête pas au lancement. Sans surveillance, les équipes ne peuvent pas améliorer l'adoption, les performances ou le retour sur investissement. Cette station garantit que les API restent utiles, sécurisées et qu'elles évoluent avec les besoins de l'entreprise."
              ],
              "criteria": [
                "api-documentation-ready",
                "consumer-support-ready",
                "legal-compliance-clear"
              ],
              "criteriaDetails": [
                {
                  "id": "api-documentation-ready",
                  "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
                  "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
                },
                {
                  "id": "consumer-support-ready",
                  "title": "Les processus d'onboarding, de support et de communication sont prêts pour les utilisateurs.",
                  "description": "Registration, support, and communication processes are ready for API consumers."
                },
                {
                  "id": "legal-compliance-clear",
                  "title": "Les exigences juridiques, de confidentialité et de conformité liées à la publication ou à la mise à disposition sont définies et comprises.",
                  "description": "Legal, privacy, and compliance requirements for publishing are defined and understood."
                }
              ],
              "baseTitle": "Suivi & amélioration",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "improving",
              "stakeholders": [
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-metrics-and-analytics",
                  "slug": "resources/api-metrics-and-analytics",
                  "title": "Mesures et analyses de l'API",
                  "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 119,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                    "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                    "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                    "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-community-engagement-strategies",
                  "slug": "resources/api-community-engagement-strategies",
                  "title": "Stratégies d'engagement de la communauté de l'API",
                  "description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 103,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
                    "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
                    "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
                    "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
                    "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
                    "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "metrics",
                "consumer-feedback",
                "incident-report",
                "roadmap"
              ]
            }
          ]
        },
        {
          "id": "integration-productization-cycle",
          "slug": "integration-productization-cycle",
          "title": "Cycle de productisation des capacités d’intégration",
          "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre.",
          "purpose": "Guider la conception de capacites d integration reutilisables avant de choisir un mode de mise en oeuvre API, evenement, fichier, flux, produit de donnees, integration directe ou hybride.",
          "audiences": [],
          "audienceStakeholders": [
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "capabilityValuePropositionCanvas",
                  "resourceTitle": "Capability Value Proposition Canvas",
                  "canvasId": "capabilityValuePropositionCanvas",
                  "role": "suggested-answer-owner"
                },
                {
                  "resourceId": "capabilityBusinessModelCanvas",
                  "resourceTitle": "Capability Business Model Canvas",
                  "canvasId": "capabilityBusinessModelCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "platform-owner",
              "sourceKey": "platform-owner",
              "sourceStakeholderId": "platform-owner",
              "title": "Responsable de plateforme",
              "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "consumerExperienceRequirementsCanvas",
                  "resourceTitle": "Consumer Experience Requirements Canvas",
                  "canvasId": "consumerExperienceRequirementsCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "customer-specialist",
              "sourceKey": "customer-specialist",
              "sourceStakeholderId": "customer-specialist",
              "title": "Représentant client ou partenaire",
              "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-designer",
              "sourceKey": "api-designer",
              "sourceStakeholderId": "api-designer",
              "title": "Designer API",
              "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "governance-specialist",
              "sourceKey": "governance-specialist",
              "sourceStakeholderId": "governance-specialist",
              "title": "Responsable gouvernance",
              "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "partner-specialist",
              "sourceKey": "partner-specialist",
              "sourceStakeholderId": "partner-specialist",
              "title": "Gestionnaire de partenaires ou de fournisseurs",
              "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-devrel-specialist",
              "sourceKey": "api-devrel-specialist",
              "sourceStakeholderId": "api-devrel-specialist",
              "title": "Responsable Documentation & DevRel",
              "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
              "involvement": "core",
              "responsibilities": []
            }
          ],
          "entryCriteria": [
            "business-goals-defined",
            "api-opportunity-documented"
          ],
          "exitCriteria": [
            "architecture-patterns-validated",
            "api-description-available",
            "audit-passed"
          ],
          "entryCriteriaDetails": [
            {
              "id": "business-goals-defined",
              "title": "Les objectifs métier sont définis.",
              "description": "Business goals are defined."
            },
            {
              "id": "api-opportunity-documented",
              "title": "L'opportunité de capacité est identifiée et documentée.",
              "description": "Individual API opportunities are identified and documented."
            }
          ],
          "exitCriteriaDetails": [
            {
              "id": "architecture-patterns-validated",
              "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
              "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
            },
            {
              "id": "api-description-available",
              "title": "L’interface et ses capacités sont documentées de manière suffisamment claire pour la revue, l’audit et l’onboarding.",
              "description": "The API and its exposed capabilities are described clearly enough for review, audit, and onboarding."
            },
            {
              "id": "audit-passed",
              "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
              "description": "The API passes compliance, security, and audit checks."
            }
          ],
          "questionnaireResources": [
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie de capacité d’intégration",
              "resourceId": "domainCanvas",
              "resourceTitle": "Domain Canvas",
              "canvasId": "domainCanvas",
              "suggestedAnswerOwner": {
                "id": "domain-specialist",
                "sourceKey": "domain-specialist",
                "sourceStakeholderId": "domain-specialist",
                "title": "Expert du domaine",
                "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "domainCanvas",
                    "resourceTitle": "Domain Canvas",
                    "canvasId": "domainCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie de capacité d’intégration",
              "resourceId": "capabilityValuePropositionCanvas",
              "resourceTitle": "Capability Value Proposition Canvas",
              "canvasId": "capabilityValuePropositionCanvas",
              "suggestedAnswerOwner": {
                "id": "capability-owner",
                "sourceKey": "capability-owner",
                "sourceStakeholderId": "capability-owner",
                "title": "Responsable de capacité",
                "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "capabilityValuePropositionCanvas",
                    "resourceTitle": "Capability Value Proposition Canvas",
                    "canvasId": "capabilityValuePropositionCanvas",
                    "role": "suggested-answer-owner"
                  },
                  {
                    "resourceId": "capabilityBusinessModelCanvas",
                    "resourceTitle": "Capability Business Model Canvas",
                    "canvasId": "capabilityBusinessModelCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie de capacité d’intégration",
              "resourceId": "capabilityBusinessModelCanvas",
              "resourceTitle": "Capability Business Model Canvas",
              "canvasId": "capabilityBusinessModelCanvas",
              "suggestedAnswerOwner": {
                "id": "capability-owner",
                "sourceKey": "capability-owner",
                "sourceStakeholderId": "capability-owner",
                "title": "Responsable de capacité",
                "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "capabilityValuePropositionCanvas",
                    "resourceTitle": "Capability Value Proposition Canvas",
                    "canvasId": "capabilityValuePropositionCanvas",
                    "role": "suggested-answer-owner"
                  },
                  {
                    "resourceId": "capabilityBusinessModelCanvas",
                    "resourceTitle": "Capability Business Model Canvas",
                    "canvasId": "capabilityBusinessModelCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie de capacité d’intégration",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas",
              "suggestedAnswerOwner": {
                "id": "business-owner",
                "sourceKey": "business-owner",
                "sourceStakeholderId": "business-owner",
                "title": "Responsable métier",
                "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "customerJourneyCanvas",
                    "resourceTitle": "Customer Journey Canvas",
                    "canvasId": "customerJourneyCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-consumer-experience",
              "stationTitle": "Exigences des utilisateurs d’intégration & onboarding",
              "resourceId": "consumerExperienceRequirementsCanvas",
              "resourceTitle": "Consumer Experience Requirements Canvas",
              "canvasId": "consumerExperienceRequirementsCanvas",
              "suggestedAnswerOwner": {
                "id": "api-consumer-specialist",
                "sourceKey": "api-consumer-specialist",
                "sourceStakeholderId": "api-consumer-specialist",
                "title": "Représentant utilisateur API",
                "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                "involvement": "lead",
                "responsibilities": [
                  {
                    "resourceId": "consumerExperienceRequirementsCanvas",
                    "resourceTitle": "Consumer Experience Requirements Canvas",
                    "canvasId": "consumerExperienceRequirementsCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture d integration & decisions de plateforme",
              "resourceId": "locationsCanvas",
              "resourceTitle": "Location Canvas",
              "canvasId": "locationsCanvas",
              "suggestedAnswerOwner": {
                "id": "platform-architect",
                "sourceKey": "platform-architect",
                "sourceStakeholderId": "platform-architect",
                "title": "Architecte de la plateforme",
                "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                "involvement": "lead",
                "responsibilities": [
                  {
                    "resourceId": "locationsCanvas",
                    "resourceTitle": "Location Canvas",
                    "canvasId": "locationsCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture d integration & decisions de plateforme",
              "resourceId": "businessImpactCanvas",
              "resourceTitle": "Business Impact Canvas",
              "canvasId": "businessImpactCanvas",
              "suggestedAnswerOwner": {
                "id": "integration-architect",
                "sourceKey": "integration-architect",
                "sourceStakeholderId": "integration-architect",
                "title": "Architecte d'intégration",
                "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "businessImpactCanvas",
                    "resourceTitle": "Business Impact Canvas",
                    "canvasId": "businessImpactCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-platform-architecture",
              "stationTitle": "Architecture d integration & decisions de plateforme",
              "resourceId": "capacityCanvas",
              "resourceTitle": "Capacity Canvas",
              "canvasId": "capacityCanvas",
              "suggestedAnswerOwner": {
                "id": "platform-owner",
                "sourceKey": "platform-owner",
                "sourceStakeholderId": "platform-owner",
                "title": "Responsable de plateforme",
                "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "capacityCanvas",
                    "resourceTitle": "Capacity Canvas",
                    "canvasId": "capacityCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            }
          ],
          "stations": [
            {
              "index": 1,
              "id": "api-product-strategy",
              "slug": "method/api-product-strategy",
              "icon": "strategy-outline",
              "title": "Stratégie de capacité d’intégration",
              "description": "Cadrer la capacite d integration reutilisable, le besoin metier, la responsabilite et la reutilisation attendue avant de choisir le mode de mise en oeuvre.",
              "whyItMatters": "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe.",
              "applyInWork": "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
              "outcomes": [
                "Une opportunité de capacité indépendante de la technologie",
                "Un langage commun entre le produit, le design et la technologie",
                "Un argumentaire ou un dossier solide pour le financement/l'approbation"
              ],
              "steps": [
                {
                  "text": "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas"
                },
                {
                  "text": "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas"
                },
                {
                  "text": "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas"
                },
                {
                  "text": "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
                  "resourceId": "apiBusinessModelCanvas",
                  "resourceTitle": "API Business Model Canvas",
                  "canvasId": "apiBusinessModelCanvas"
                }
              ],
              "questions": [
                "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
                "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
                "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
                "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
                "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
                "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
              ],
              "criteria": [
                "metrics-feedback-available",
                "business-goals-defined",
                "market-research-done",
                "stakeholder-approval"
              ],
              "criteriaDetails": [
                {
                  "id": "metrics-feedback-available",
                  "title": "Des signaux de marché pertinents, des retours d'expérience ou des informations opérationnelles sont disponibles pour guider cette opportunité de capacité.",
                  "description": "Relevant market signals, feedback, or operational insights are available to guide this API opportunity."
                },
                {
                  "id": "business-goals-defined",
                  "title": "Les objectifs métier sont définis.",
                  "description": "Business goals are defined."
                },
                {
                  "id": "market-research-done",
                  "title": "L'étude de marché identifie des opportunités de capacité.",
                  "description": "Market research identifies API opportunities."
                },
                {
                  "id": "stakeholder-approval",
                  "title": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
                  "description": "Relevant stakeholders agree this API opportunity is worth exploring and prioritizing."
                }
              ],
              "baseTitle": "Stratégie de capacité",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "strategy",
              "stakeholders": [
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "domainCanvas",
                      "resourceTitle": "Domain Canvas",
                      "canvasId": "domainCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "capability-owner",
                  "sourceKey": "capability-owner",
                  "sourceStakeholderId": "capability-owner",
                  "title": "Responsable de capacité",
                  "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "capabilityValuePropositionCanvas",
                      "resourceTitle": "Capability Value Proposition Canvas",
                      "canvasId": "capabilityValuePropositionCanvas",
                      "role": "suggested-answer-owner"
                    },
                    {
                      "resourceId": "capabilityBusinessModelCanvas",
                      "resourceTitle": "Capability Business Model Canvas",
                      "canvasId": "capabilityBusinessModelCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "platform-owner",
                  "sourceKey": "platform-owner",
                  "sourceStakeholderId": "platform-owner",
                  "title": "Responsable de plateforme",
                  "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "customerJourneyCanvas",
                      "resourceTitle": "Customer Journey Canvas",
                      "canvasId": "customerJourneyCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "partner-specialist",
                  "sourceKey": "partner-specialist",
                  "sourceStakeholderId": "partner-specialist",
                  "title": "Gestionnaire de partenaires ou de fournisseurs",
                  "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-product-owner",
                  "sourceKey": "api-product-owner",
                  "sourceStakeholderId": "api-product-owner",
                  "title": "Propriétaire du produit API",
                  "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "customerJourneyCanvas",
                  "slug": "resources/customer-journey-canvas",
                  "title": "Customer Journey Canvas",
                  "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 1,
                  "outcomes": [
                    "Compréhension partagée du parcours client, partenaire ou utilisateur",
                    "Besoins, irritants, gains, entrées et sorties documentés",
                    "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
                  ],
                  "steps": [
                    "Définir le profil du client",
                    "Identifier les éléments déclencheurs du voyage",
                    "Décrire la fin du voyage",
                    "Cartographier les étapes du voyage avec les intrants et les extrants",
                    "Identifier les problèmes des clients",
                    "Résumer les gains pour les clients",
                    "Définir les intrants nécessaires et les résultats qui en découlent",
                    "Définir les interactions API pour chaque étape"
                  ],
                  "canvasId": "customerJourneyCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "domainCanvas",
                  "slug": "resources/domain-canvas",
                  "title": "Domain Canvas",
                  "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 152,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                    "Approche cohérente pour appliquer « Domain Canvas »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
                  ],
                  "canvasId": "domainCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capabilityValuePropositionCanvas",
                  "slug": "resources/capability-value-proposition-canvas",
                  "title": "Capability Value Proposition Canvas",
                  "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 2.1,
                  "outcomes": [
                    "Proposition de valeur claire pour une capacité réutilisable",
                    "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                    "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
                  ],
                  "steps": [
                    "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                    "Identifiez les caractéristiques de capacité qui permettent les gains.",
                    "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                    "Regroupez les caractéristiques en capacités réutilisables candidates."
                  ],
                  "canvasId": "capabilityValuePropositionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capabilityBusinessModelCanvas",
                  "slug": "resources/capability-business-model-canvas",
                  "title": "Capability Business Model Canvas",
                  "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 3.1,
                  "outcomes": [
                    "Modèle opérationnel viable pour une capacité réutilisable",
                    "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                    "Coûts et bénéfices visibles avant l’engagement architectural"
                  ],
                  "steps": [
                    "Résumez la proposition de valeur de la capacité.",
                    "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                    "Définissez les activités, ressources et partenaires clés.",
                    "Documentez les coûts et les bénéfices.",
                    "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                    "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
                  ],
                  "canvasId": "capabilityBusinessModelCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                }
              ],
              "evidence": [
                "design-artifact",
                "documentation",
                "research",
                "roadmap"
              ]
            },
            {
              "index": 2,
              "id": "api-consumer-experience",
              "slug": "method/api-consumer-experience",
              "icon": "deployed-code-account-outline",
              "title": "Exigences des utilisateurs d’intégration & onboarding",
              "description": "Capturez les utilisateurs d’intégration, les responsabilités des fournisseurs, les besoins d’onboarding, les attentes de service et les contraintes opérationnelles.",
              "whyItMatters": "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur.",
              "applyInWork": "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
              "outcomes": [
                "Exigences utilisateurs et attentes d'onboarding explicites",
                "Définir le parcours de l'expérience API",
                "Planifier l'intégration, la documentation et le retour d'information",
                "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)"
              ],
              "steps": [
                {
                  "text": "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas"
                },
                {
                  "text": "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas"
                },
                {
                  "text": "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
                  "resourceId": "api-onboarding-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
                "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
                "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
                "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
                "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur."
              ],
              "criteria": [
                "api-opportunity-documented",
                "api-reusability",
                "hide-backend-discrepancies",
                "value-prop-validated",
                "consumer-segments-identified",
                "api-roadmap-defined"
              ],
              "criteriaDetails": [
                {
                  "id": "api-opportunity-documented",
                  "title": "L'opportunité de capacité est identifiée et documentée.",
                  "description": "Individual API opportunities are identified and documented."
                },
                {
                  "id": "api-reusability",
                  "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
                  "description": "The API meets a clear business need and is reusable for multiple API consumers."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "value-prop-validated",
                  "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
                  "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
                },
                {
                  "id": "consumer-segments-identified",
                  "title": "Les segments d'utilisateurs sont identifiés.",
                  "description": "API consumer segments (internal and external) are identified."
                },
                {
                  "id": "api-roadmap-defined",
                  "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
                  "description": "High-level roadmaps for API development are established."
                }
              ],
              "baseTitle": "Exigences utilisateurs & onboarding",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "strategy",
              "stakeholders": [
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "lead",
                  "responsibilities": [
                    {
                      "resourceId": "consumerExperienceRequirementsCanvas",
                      "resourceTitle": "Consumer Experience Requirements Canvas",
                      "canvasId": "consumerExperienceRequirementsCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "customer-specialist",
                  "sourceKey": "customer-specialist",
                  "sourceStakeholderId": "customer-specialist",
                  "title": "Représentant client ou partenaire",
                  "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "partner-specialist",
                  "sourceKey": "partner-specialist",
                  "sourceStakeholderId": "partner-specialist",
                  "title": "Gestionnaire de partenaires ou de fournisseurs",
                  "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "consumerExperienceRequirementsCanvas",
                  "slug": "resources/consumer-experience-requirements-canvas",
                  "title": "Consumer Experience Requirements Canvas",
                  "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 3.2,
                  "outcomes": [
                    "Exigences utilisateurs et de service indépendantes de la technologie",
                    "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                    "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
                  ],
                  "steps": [
                    "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                    "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                    "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                    "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
                  ],
                  "canvasId": "consumerExperienceRequirementsCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "api-onboarding-best-practices",
                  "slug": "resources/api-onboarding-best-practices",
                  "title": "Meilleures pratiques en matière d'intégration de l'API",
                  "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 121,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                    "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                    "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "design-artifact",
                "documentation",
                "consumer-feedback"
              ]
            },
            {
              "index": 3,
              "id": "api-platform-architecture",
              "slug": "method/api-platform-architecture",
              "icon": "code-blocks-outline",
              "title": "Architecture d integration & decisions de plateforme",
              "description": "Choisir l architecture d integration, le mode de mise en oeuvre et les capacites de plateforme en tenant compte des contraintes et du modele de gouvernance.",
              "whyItMatters": "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes.",
              "applyInWork": "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
              "outcomes": [
                "Décision d'architecture et de plateforme validée",
                "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
                "Conception en vue d'une réutilisation interne et d'une évolutivité externe"
              ],
              "steps": [
                {
                  "text": "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
                  "resourceId": "businessImpactCanvas",
                  "resourceTitle": "Business Impact Canvas",
                  "canvasId": "businessImpactCanvas"
                },
                {
                  "text": "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas"
                },
                {
                  "text": "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
                  "resourceId": "capacityCanvas",
                  "resourceTitle": "Capacity Canvas",
                  "canvasId": "capacityCanvas"
                },
                {
                  "text": "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                  "resourceId": "api-metrics-and-analytics",
                  "resourceTitle": "Mesures et analyses de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
                "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
                "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
                "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
              ],
              "criteria": [
                "api-reusability",
                "hide-backend-discrepancies",
                "value-prop-validated",
                "consumer-segments-identified",
                "api-roadmap-defined"
              ],
              "criteriaDetails": [
                {
                  "id": "api-reusability",
                  "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
                  "description": "The API meets a clear business need and is reusable for multiple API consumers."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "value-prop-validated",
                  "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
                  "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
                },
                {
                  "id": "consumer-segments-identified",
                  "title": "Les segments d'utilisateurs sont identifiés.",
                  "description": "API consumer segments (internal and external) are identified."
                },
                {
                  "id": "api-roadmap-defined",
                  "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
                  "description": "High-level roadmaps for API development are established."
                }
              ],
              "baseTitle": "Architecture & décisions de plateforme",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "architecture",
              "stakeholders": [
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "lead",
                  "responsibilities": [
                    {
                      "resourceId": "locationsCanvas",
                      "resourceTitle": "Location Canvas",
                      "canvasId": "locationsCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "businessImpactCanvas",
                      "resourceTitle": "Business Impact Canvas",
                      "canvasId": "businessImpactCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "platform-owner",
                  "sourceKey": "platform-owner",
                  "sourceStakeholderId": "platform-owner",
                  "title": "Responsable de plateforme",
                  "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "capacityCanvas",
                      "resourceTitle": "Capacity Canvas",
                      "canvasId": "capacityCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-architect",
                  "sourceKey": "api-architect",
                  "sourceStakeholderId": "api-architect",
                  "title": "Architecte API",
                  "description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "businessImpactCanvas",
                  "slug": "resources/business-impact-canvas",
                  "title": "Business Impact Canvas",
                  "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 4,
                  "outcomes": [
                    "Évaluation documentée des impacts métier et opérationnels",
                    "Risques et mesures d’atténuation priorisés",
                    "Éléments probants pour les décisions d’architecture et de plateforme"
                  ],
                  "steps": [
                    "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                    "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                    "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                    "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                    "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                    "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
                  ],
                  "canvasId": "businessImpactCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "locationsCanvas",
                  "slug": "resources/location-canvas",
                  "title": "Location Canvas",
                  "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 6,
                  "outcomes": [
                    "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                    "Contraintes régionales de performance et d’accessibilité identifiées",
                    "Résidence des données, limites de confiance et réglementations applicables clarifiées"
                  ],
                  "steps": [
                    "Carte des emplacements des fournisseurs d'API.",
                    "Documenter l'emplacement des consommateurs.",
                    "Identifier les réglementations applicables.",
                    "Documenter l'endroit où les données doivent être stockées.",
                    "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                    "Valider les performances du réseau dans les différentes régions."
                  ],
                  "canvasId": "locationsCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capacityCanvas",
                  "slug": "resources/capacity-canvas",
                  "title": "Capacity Canvas",
                  "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 7,
                  "outcomes": [
                    "Exigences de capacité alignées sur la demande métier attendue",
                    "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                    "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
                  ],
                  "steps": [
                    "Documenter les volumes d'affaires actuels",
                    "Prévoir les tendances futures de la consommation",
                    "Planifier les pics de charge et les exigences de disponibilité",
                    "Définir les stratégies de mise en cache et de limitation du débit",
                    "Proposer des stratégies de mise à l'échelle"
                  ],
                  "canvasId": "capacityCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "partner-integration-guidelines",
                  "slug": "resources/partner-integration-guidelines",
                  "title": "Lignes directrices pour l'intégration des partenaires",
                  "description": "Listes de contrôle de l'intégration et modèles de communication pour gérer les aspects techniques et juridiques des relations avec des API tierces.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 164,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices pour l'intégration des partenaires »",
                    "Approche cohérente pour appliquer « Lignes directrices pour l'intégration des partenaires »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
                    "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "architecture-decision",
                "documentation",
                "platform-config",
                "metrics"
              ]
            },
            {
              "index": 4,
              "id": "api-design",
              "slug": "method/api-design",
              "icon": "api",
              "title": "Conception de solution d’intégration",
              "description": "Concevoir le contrat d interface, les schemas, les payloads et les modeles d interaction pour le style d integration choisi.",
              "whyItMatters": "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs.",
              "applyInWork": "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
              "outcomes": [
                "Un contrat d'interface validé pour le mode de mise en œuvre choisi",
                "Contrats d'interface réutilisables et validés",
                "Conceptions alignées sur les modèles de domaine et les modèles d'interaction",
                "Traçabilité de la conception à la valeur métier"
              ],
              "steps": [
                {
                  "text": "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas"
                },
                {
                  "text": "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
                  "resourceId": "interactionCanvas",
                  "resourceTitle": "Interaction Canvas",
                  "canvasId": "interactionCanvas"
                },
                {
                  "text": "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "restCanvas",
                  "resourceTitle": "REST Canvas",
                  "canvasId": "restCanvas"
                },
                {
                  "text": "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "eventCanvas",
                  "resourceTitle": "Event Canvas",
                  "canvasId": "eventCanvas"
                },
                {
                  "text": "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "graphqlCanvas",
                  "resourceTitle": "GraphQL Canvas",
                  "canvasId": "graphqlCanvas"
                },
                {
                  "text": "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
                  "resourceId": "api-design-principles",
                  "resourceTitle": "Principes de conception de l'API",
                  "canvasId": null
                },
                {
                  "text": "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
                  "resourceId": "contract-first-design",
                  "resourceTitle": "Contrat de première conception",
                  "canvasId": null
                },
                {
                  "text": "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
                "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
                "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
                "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
                "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
                "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "hide-backend-discrepancies",
                "design-reflects-business-value",
                "api-consistency"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                }
              ],
              "baseTitle": "Conception de solution & d'interface",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "design",
              "stakeholders": [
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "domainCanvas",
                  "slug": "resources/domain-canvas",
                  "title": "Domain Canvas",
                  "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 152,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                    "Approche cohérente pour appliquer « Domain Canvas »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
                  ],
                  "canvasId": "domainCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "interactionCanvas",
                  "slug": "resources/interaction-canvas",
                  "title": "Interaction Canvas",
                  "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 9,
                  "outcomes": [
                    "Modèle d’interaction défini pour la capacité choisie",
                    "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                    "Règles de validation et attentes d’interaction convenues"
                  ],
                  "steps": [
                    "Associer les interactions de l'API aux tâches de l'utilisateur",
                    "Définir des points finaux pour chaque interaction",
                    "Documentez les entrées et les sorties de chaque interaction.",
                    "Spécifier les règles et contraintes de validation",
                    "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
                  ],
                  "canvasId": "interactionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "integration-style-selection-guide",
                  "slug": "resources/integration-style-selection-guide",
                  "title": "Guide de sélection du mode d’intégration",
                  "description": "Guide pour choisir entre API, événement, fichier, flux, produit de données, intégration directe ou mode hybride selon les exigences et contraintes.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 180,
                  "outcomes": [
                    "Mode de mise en œuvre de l’intégration justifié",
                    "Compromis documentés entre les différentes options",
                    "Choix traçable aux exigences utilisateurs, plateforme, données et opérations"
                  ],
                  "steps": [
                    "Comparez les modes viables selon la latence, le volume, le couplage, la responsabilité des données, la fraîcheur, la gouvernance et l’exploitabilité.",
                    "Identifiez les options adaptées au cas d’usage.",
                    "Documentez contraintes, risques et dépendances de plateforme.",
                    "Consignez les raisons du rejet des alternatives."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "restCanvas",
                  "slug": "resources/rest-canvas",
                  "title": "REST Canvas",
                  "description": "Concevoir des API en utilisant les principes RESTful, en définissant des ressources, des verbes et des exemples de requêtes et de réponses.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 10,
                  "outcomes": [
                    "Conception cohérente de l'API RESTful",
                    "Ressources définies et leurs interactions",
                    "Exemples de demandes et de réponses pour plus de clarté"
                  ],
                  "steps": [
                    "Identifier les ressources clés exposées par l'API",
                    "Définir la structure du modèle de ressources de l'API",
                    "Spécifier les verbes HTTP utilisés pour interagir avec les ressources",
                    "Fournir des exemples de demandes et de réponses pour chaque verbe"
                  ],
                  "canvasId": "restCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "eventCanvas",
                  "slug": "resources/event-canvas",
                  "title": "Event Canvas",
                  "description": "Concevez des interfaces et intégrations événementielles en définissant les événements, déclencheurs, schémas, producteurs, utilisateurs et logiques de traitement.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 12,
                  "outcomes": [
                    "Modèle d’interaction événementiel défini",
                    "Événements, déclencheurs, schémas, producteurs et utilisateurs clarifiés",
                    "Attentes de traitement, d’accusé de réception et de gestion des échecs documentées"
                  ],
                  "steps": [
                    "Identifier les événements clés du système",
                    "Définir des déclencheurs pour chaque événement",
                    "Décrivez le traitement des événements, les changements d’état et la gestion des échecs.",
                    "Préciser les résultats obtenus ou les remerciements"
                  ],
                  "canvasId": "eventCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "graphqlCanvas",
                  "slug": "resources/graphql-canvas",
                  "title": "GraphQL Canvas",
                  "description": "Concevoir des API GraphQL en définissant des types, des requêtes, des mutations et des abonnements.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 11,
                  "outcomes": [
                    "Conception d'une API GraphQL structurée",
                    "Types définis et leurs relations",
                    "Des requêtes, des mutations et des abonnements clairs"
                  ],
                  "steps": [
                    "Quels sont les problèmes que les consommateurs d'API tentent de résoudre ? De quelles données ont-ils besoin ?",
                    "Définir les types GraphQL et leurs attributs : Quels sont les principaux types exposés (par exemple, Utilisateur, Commande, Produit) ?",
                    "Cartographier les relations entre les types : Comment les types sont-ils liés les uns aux autres dans les requêtes imbriquées ?",
                    "Spécifier les requêtes pour l'extraction des données",
                    "Définir les mutations pour la modification des données : Quelles sont les opérations qui modifient les données (par exemple, création, mise à jour, suppression) ?",
                    "Abonnements aux grandes lignes pour des mises à jour en temps réel",
                    "Définir l'authentification et l'autorisation : Qui peut accéder à quels champs ou types ?",
                    "Tenez compte des contraintes de pagination, de filtrage ou de limitation du débit."
                  ],
                  "canvasId": "graphqlCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "contract-first-design",
                  "slug": "resources/contract-first-design",
                  "title": "Contrat de première conception",
                  "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 146,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                    "Approche cohérente pour appliquer « Contrat de première conception »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                    "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                    "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/api-contract-example.yaml",
                  "sourceUrl": null,
                  "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
                  "draft": true
                }
              ],
              "evidence": [
                "spec",
                "contract",
                "design-artifact",
                "documentation"
              ]
            },
            {
              "index": 5,
              "id": "api-delivery",
              "slug": "method/api-delivery",
              "icon": "code",
              "title": "Livraison & opérations d’intégration",
              "description": "Construire, tester, automatiser, deployer et exploiter la capacite d integration avec le mode de mise en oeuvre choisi et le contrat d interface valide.",
              "whyItMatters": "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe.",
              "applyInWork": "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
              "outcomes": [
                "Une capacité livrée conformément au contrat d'interface validé",
                "Pipelines CI/CD fiables et automatisés",
                "Tests fonctionnels et non fonctionnels intégrés",
                "Pipelines de livraison sécurisés et conformes"
              ],
              "steps": [
                {
                  "text": "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
                  "resourceId": "api-development-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de développement d'API",
                  "canvasId": null
                },
                {
                  "text": "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
                  "resourceId": "api-development-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de développement d'API",
                  "canvasId": null
                },
                {
                  "text": "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                  "resourceId": "api-testing-best-practices",
                  "resourceTitle": "Meilleures pratiques de test de l'API",
                  "canvasId": null
                },
                {
                  "text": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                },
                {
                  "text": "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                  "resourceId": "api-security-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de sécurité des API",
                  "canvasId": null
                },
                {
                  "text": "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
                "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
                "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "hide-backend-discrepancies",
                "design-reflects-business-value",
                "api-consistency"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                }
              ],
              "baseTitle": "Mise à disposition & opérations",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "delivery",
              "stakeholders": [
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "partner-specialist",
                  "sourceKey": "partner-specialist",
                  "sourceStakeholderId": "partner-specialist",
                  "title": "Gestionnaire de partenaires ou de fournisseurs",
                  "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-development-best-practices",
                  "slug": "resources/api-development-best-practices",
                  "title": "Meilleures pratiques en matière de développement d'API",
                  "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 112,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                    "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
                  "sourceUrl": null,
                  "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
                  "draft": true
                },
                {
                  "id": "api-testing-best-practices",
                  "slug": "resources/api-testing-best-practices",
                  "title": "Meilleures pratiques de test de l'API",
                  "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 133,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                    "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                    "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "apiops-CI-CD-for-apis",
                  "slug": "resources/apiops-CI-CD-for-apis",
                  "title": "APIOps CI/CD pour les API",
                  "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 140,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                    "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                    "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                    "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                    "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-security-best-practices",
                  "slug": "resources/api-security-best-practices",
                  "title": "Meilleures pratiques en matière de sécurité des API",
                  "description": "Un ensemble de contrôles exploitables pour sécuriser les API, y compris l'authentification, l'autorisation, le cryptage, la limitation du débit et les contrôles de conformité au niveau du pipeline.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 130,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de sécurité des API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de sécurité des API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                    "Mettre en œuvre des mesures de sécurité telles que l'authentification, l'autorisation, le cryptage et la limitation du débit pour protéger les API contre les menaces.",
                    "Mettre en œuvre des contrôles de sécurité automatisés et des validations de conformité dans le pipeline CI/CD pour s'assurer que les API sont sécurisées et conformes."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "partner-integration-guidelines",
                  "slug": "resources/partner-integration-guidelines",
                  "title": "Lignes directrices pour l'intégration des partenaires",
                  "description": "Listes de contrôle de l'intégration et modèles de communication pour gérer les aspects techniques et juridiques des relations avec des API tierces.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 164,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices pour l'intégration des partenaires »",
                    "Approche cohérente pour appliquer « Lignes directrices pour l'intégration des partenaires »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
                    "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "implementation",
                "pipeline-config",
                "test-report",
                "security-report"
              ]
            },
            {
              "index": 6,
              "id": "api-audit",
              "slug": "method/api-audit",
              "icon": "check-box-outline",
              "title": "Assurance qualité des intégrations",
              "description": "Assurez la préparation, la gouvernance, la qualité, la sécurité, la conformité et les preuves opérationnelles de l’intégration avant publication.",
              "whyItMatters": "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production.",
              "applyInWork": "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
              "outcomes": [
                "Préparation documentée pour la publication et la réutilisation",
                "Documentation claire des décisions relatives à la conception et à la mise en œuvre de l'API",
                "Sécurité, performance et conformité validées",
                "Réduction du risque de problèmes en production"
              ],
              "steps": [
                {
                  "text": "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                },
                {
                  "text": "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
                  "resourceId": "api-compliance-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de conformité de l'API",
                  "canvasId": null
                },
                {
                  "text": "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
                  "resourceTitle": "",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
                "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
                "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
                "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
                "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "design-reflects-business-value",
                "api-description-available",
                "api-consistency",
                "api-contract-tested"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-description-available",
                  "title": "L’interface et ses capacités sont documentées de manière suffisamment claire pour la revue, l’audit et l’onboarding.",
                  "description": "The API and its exposed capabilities are described clearly enough for review, audit, and onboarding."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                },
                {
                  "id": "api-contract-tested",
                  "title": "Le contrat d'interface a été validé et testé par rapport aux exigences fonctionnelles et non fonctionnelles.",
                  "description": "The API contract is tested and meets functional and non-functional requirements."
                }
              ],
              "baseTitle": "Assurance qualité & préparation",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "publishing",
              "stakeholders": [
                {
                  "id": "governance-specialist",
                  "sourceKey": "governance-specialist",
                  "sourceStakeholderId": "governance-specialist",
                  "title": "Responsable gouvernance",
                  "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-audit-checklist",
                  "slug": "resources/api-audit-checklist",
                  "title": "Liste de contrôle de l'audit de l'API",
                  "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
                  "category": "checklist",
                  "icon": "check-box-outline",
                  "order": 13,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                    "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                    "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                    "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
                  ],
                  "canvasId": null,
                  "sourcePath": "src/snippets/api-audit-checklist.json",
                  "sourceUrl": null,
                  "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
                  "draft": false
                },
                {
                  "id": "api-compliance-best-practices",
                  "slug": "resources/api-compliance-best-practices",
                  "title": "Meilleures pratiques en matière de conformité de l'API",
                  "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 104,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
                    "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
                    "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "audit-report",
                "compliance-report",
                "security-report",
                "test-report"
              ]
            },
            {
              "index": 7,
              "id": "api-publishing",
              "slug": "method/api-publishing",
              "icon": "deployed-code-outline",
              "title": "Publication & enablement de l integration",
              "description": "Publier la capacite d integration afin que les equipes puissent la decouvrir, l evaluer, demander l acces, terminer l onboarding, la reutiliser et obtenir du support.",
              "whyItMatters": "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie.",
              "applyInWork": "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
              "outcomes": [
                "Une capacité découvrable et utilisable",
                "Des processus clairs d'intégration et d'enregistrement de l'API",
                "Documentation, modèles de sécurité et politiques disponibles",
                "Des API prêtes pour l'échelle et la gouvernance"
              ],
              "steps": [
                {
                  "text": "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                },
                {
                  "text": "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
                  "resourceId": "api-onboarding-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
                  "canvasId": null
                },
                {
                  "text": "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
                "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
                "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
                "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
                "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie."
              ],
              "criteria": [
                "audit-passed",
                "audit-reports-shared",
                "api-ready-for-publishing",
                "api-documentation-ready"
              ],
              "criteriaDetails": [
                {
                  "id": "audit-passed",
                  "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
                  "description": "The API passes compliance, security, and audit checks."
                },
                {
                  "id": "audit-reports-shared",
                  "title": "Les résultats d'audit et les décisions de correction sont partagés avec les parties prenantes concernées.",
                  "description": "Audit findings and remediation decisions are shared with the relevant stakeholders."
                },
                {
                  "id": "api-ready-for-publishing",
                  "title": "La capacité est prête à être publiée ou mise à disposition via le mécanisme de livraison choisi.",
                  "description": "The API is ready to be deployed and exposed through the intended gateways and environments."
                },
                {
                  "id": "api-documentation-ready",
                  "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
                  "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
                }
              ],
              "baseTitle": "Publication & enablement",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "publishing",
              "stakeholders": [
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "partner-specialist",
                  "sourceKey": "partner-specialist",
                  "sourceStakeholderId": "partner-specialist",
                  "title": "Gestionnaire de partenaires ou de fournisseurs",
                  "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-onboarding-best-practices",
                  "slug": "resources/api-onboarding-best-practices",
                  "title": "Meilleures pratiques en matière d'intégration de l'API",
                  "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 121,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                    "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                    "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "service-agreement-template",
                  "slug": "resources/service-agreement-template",
                  "title": "Modèle de contrat de service",
                  "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 172,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
                    "Approche cohérente pour appliquer « Modèle de contrat de service »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
                    "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
                    "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "gateway-config",
                "developer-portal",
                "documentation",
                "release-record"
              ]
            },
            {
              "index": 8,
              "id": "monitoring-and-improving",
              "slug": "method/monitoring-and-improving",
              "icon": "analytics-outline",
              "title": "Suivi & amélioration des intégrations",
              "description": "Suivez la fiabilité, la réutilisation, les incidents, la performance, les résultats utilisateurs et les besoins d’amélioration de l’intégration.",
              "whyItMatters": "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent.",
              "applyInWork": "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
              "outcomes": [
                "Santé et contribution de valeur de la capacité mesurées",
                "Boucles de rétroaction des développeurs en place",
                "Questions identifiées et traitées en permanence",
                "Itération de l'API alignée sur les besoins des utilisateurs"
              ],
              "steps": [
                {
                  "text": "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
                  "resourceId": "api-metrics-and-analytics",
                  "resourceTitle": "Mesures et analyses de l'API",
                  "canvasId": null
                },
                {
                  "text": "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
                  "resourceId": "api-community-engagement-strategies",
                  "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
                  "canvasId": null
                },
                {
                  "text": "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
                "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
                "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
                "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent."
              ],
              "criteria": [
                "api-documentation-ready",
                "consumer-support-ready",
                "legal-compliance-clear"
              ],
              "criteriaDetails": [
                {
                  "id": "api-documentation-ready",
                  "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
                  "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
                },
                {
                  "id": "consumer-support-ready",
                  "title": "Les processus d'onboarding, de support et de communication sont prêts pour les utilisateurs.",
                  "description": "Registration, support, and communication processes are ready for API consumers."
                },
                {
                  "id": "legal-compliance-clear",
                  "title": "Les exigences juridiques, de confidentialité et de conformité liées à la publication ou à la mise à disposition sont définies et comprises.",
                  "description": "Legal, privacy, and compliance requirements for publishing are defined and understood."
                }
              ],
              "baseTitle": "Suivi & amélioration",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "improving",
              "stakeholders": [
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-owner",
                  "sourceKey": "platform-owner",
                  "sourceStakeholderId": "platform-owner",
                  "title": "Responsable de plateforme",
                  "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "api-metrics-and-analytics",
                  "slug": "resources/api-metrics-and-analytics",
                  "title": "Mesures et analyses de l'API",
                  "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 119,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                    "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                    "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                    "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-community-engagement-strategies",
                  "slug": "resources/api-community-engagement-strategies",
                  "title": "Stratégies d'engagement de la communauté de l'API",
                  "description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 103,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
                    "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
                    "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
                    "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
                    "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
                    "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "metrics",
                "consumer-feedback",
                "incident-report",
                "roadmap"
              ]
            }
          ]
        },
        {
          "id": "automation-cycle",
          "slug": "automation-cycle",
          "title": "Cycle d’automatisation",
          "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation.",
          "purpose": "Productiser les opportunités d’automatisation en workflows gouvernés avec des utilisateurs, plateformes, contrôles, chemins de livraison, enablement et suivi clairement définis.",
          "audiences": [],
          "audienceStakeholders": [
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "process-owner",
              "sourceKey": "process-owner",
              "sourceStakeholderId": "process-owner",
              "title": "Responsable de processus",
              "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "customer-specialist",
              "sourceKey": "customer-specialist",
              "sourceStakeholderId": "customer-specialist",
              "title": "Représentant client ou partenaire",
              "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "platform-owner",
              "sourceKey": "platform-owner",
              "sourceStakeholderId": "platform-owner",
              "title": "Responsable de plateforme",
              "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "automation-engineer",
              "sourceKey": "automation-engineer",
              "sourceStakeholderId": "automation-engineer",
              "title": "Ingénieur automatisation",
              "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "interactionCanvas",
                  "resourceTitle": "Interaction Canvas",
                  "canvasId": "interactionCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "governance-specialist",
              "sourceKey": "governance-specialist",
              "sourceStakeholderId": "governance-specialist",
              "title": "Responsable gouvernance",
              "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-devrel-specialist",
              "sourceKey": "api-devrel-specialist",
              "sourceStakeholderId": "api-devrel-specialist",
              "title": "Responsable Documentation & DevRel",
              "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
              "involvement": "core",
              "responsibilities": []
            }
          ],
          "entryCriteria": [
            "business-goals-defined",
            "stakeholder-approval"
          ],
          "exitCriteria": [
            "design-reflects-business-value",
            "automation-workflow-validated",
            "audit-passed"
          ],
          "entryCriteriaDetails": [
            {
              "id": "business-goals-defined",
              "title": "Les objectifs métier sont définis.",
              "description": "Business goals are defined."
            },
            {
              "id": "stakeholder-approval",
              "title": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
              "description": "Relevant stakeholders agree this API opportunity is worth exploring and prioritizing."
            }
          ],
          "exitCriteriaDetails": [
            {
              "id": "design-reflects-business-value",
              "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
              "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
            },
            {
              "id": "automation-workflow-validated",
              "title": "Le workflow, les règles, les intégrations et les contrats d’interface pertinents ont été validés et testés.",
              "description": "The workflow, rules, integrations, and relevant interface contracts have been validated and tested."
            },
            {
              "id": "audit-passed",
              "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
              "description": "The API passes compliance, security, and audit checks."
            }
          ],
          "questionnaireResources": [
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie d’opportunité d’automatisation",
              "resourceId": "domainCanvas",
              "resourceTitle": "Domain Canvas",
              "canvasId": "domainCanvas",
              "suggestedAnswerOwner": {
                "id": "domain-specialist",
                "sourceKey": "domain-specialist",
                "sourceStakeholderId": "domain-specialist",
                "title": "Expert du domaine",
                "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "domainCanvas",
                    "resourceTitle": "Domain Canvas",
                    "canvasId": "domainCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-product-strategy",
              "stationTitle": "Stratégie d’opportunité d’automatisation",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas",
              "suggestedAnswerOwner": {
                "id": "business-owner",
                "sourceKey": "business-owner",
                "sourceStakeholderId": "business-owner",
                "title": "Responsable métier",
                "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "customerJourneyCanvas",
                    "resourceTitle": "Customer Journey Canvas",
                    "canvasId": "customerJourneyCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-consumer-experience",
              "stationTitle": "Exigences processus & utilisateur",
              "resourceId": "consumerExperienceRequirementsCanvas",
              "resourceTitle": "Consumer Experience Requirements Canvas",
              "canvasId": "consumerExperienceRequirementsCanvas",
              "suggestedAnswerOwner": {
                "id": "api-consumer-specialist",
                "sourceKey": "api-consumer-specialist",
                "sourceStakeholderId": "api-consumer-specialist",
                "title": "Représentant utilisateur API",
                "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                "involvement": "consulted",
                "responsibilities": [
                  {
                    "resourceId": "consumerExperienceRequirementsCanvas",
                    "resourceTitle": "Consumer Experience Requirements Canvas",
                    "canvasId": "consumerExperienceRequirementsCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            },
            {
              "stationId": "api-design",
              "stationTitle": "Conception de workflow d’automatisation",
              "resourceId": "interactionCanvas",
              "resourceTitle": "Interaction Canvas",
              "canvasId": "interactionCanvas",
              "suggestedAnswerOwner": {
                "id": "integration-architect",
                "sourceKey": "integration-architect",
                "sourceStakeholderId": "integration-architect",
                "title": "Architecte d'intégration",
                "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                "involvement": "core",
                "responsibilities": [
                  {
                    "resourceId": "interactionCanvas",
                    "resourceTitle": "Interaction Canvas",
                    "canvasId": "interactionCanvas",
                    "role": "suggested-answer-owner"
                  }
                ]
              }
            }
          ],
          "stations": [
            {
              "index": 1,
              "id": "api-product-strategy",
              "slug": "method/api-product-strategy",
              "icon": "strategy-outline",
              "title": "Stratégie d’opportunité d’automatisation",
              "description": "Identifiez et priorisez les opportunités d’automatisation selon la valeur, la faisabilité, le risque, la responsabilité et l’impact attendu sur le processus.",
              "whyItMatters": "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe.",
              "applyInWork": "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
              "outcomes": [
                "Une opportunité de capacité indépendante de la technologie",
                "Un langage commun entre le produit, le design et la technologie",
                "Un argumentaire ou un dossier solide pour le financement/l'approbation"
              ],
              "steps": [
                {
                  "text": "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas"
                },
                {
                  "text": "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas"
                },
                {
                  "text": "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas"
                },
                {
                  "text": "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
                  "resourceId": "apiBusinessModelCanvas",
                  "resourceTitle": "API Business Model Canvas",
                  "canvasId": "apiBusinessModelCanvas"
                }
              ],
              "questions": [
                "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
                "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
                "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
                "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
                "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
                "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
              ],
              "criteria": [
                "metrics-feedback-available",
                "business-goals-defined",
                "market-research-done",
                "stakeholder-approval"
              ],
              "criteriaDetails": [
                {
                  "id": "metrics-feedback-available",
                  "title": "Des signaux de marché pertinents, des retours d'expérience ou des informations opérationnelles sont disponibles pour guider cette opportunité de capacité.",
                  "description": "Relevant market signals, feedback, or operational insights are available to guide this API opportunity."
                },
                {
                  "id": "business-goals-defined",
                  "title": "Les objectifs métier sont définis.",
                  "description": "Business goals are defined."
                },
                {
                  "id": "market-research-done",
                  "title": "L'étude de marché identifie des opportunités de capacité.",
                  "description": "Market research identifies API opportunities."
                },
                {
                  "id": "stakeholder-approval",
                  "title": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
                  "description": "Relevant stakeholders agree this API opportunity is worth exploring and prioritizing."
                }
              ],
              "baseTitle": "Stratégie de capacité",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "strategy",
              "stakeholders": [
                {
                  "id": "automation-owner",
                  "sourceKey": "automation-owner",
                  "sourceStakeholderId": "automation-owner",
                  "title": "Responsable de l'automatisation",
                  "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "domainCanvas",
                      "resourceTitle": "Domain Canvas",
                      "canvasId": "domainCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "process-owner",
                  "sourceKey": "process-owner",
                  "sourceStakeholderId": "process-owner",
                  "title": "Responsable de processus",
                  "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "customerJourneyCanvas",
                      "resourceTitle": "Customer Journey Canvas",
                      "canvasId": "customerJourneyCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "automation-engineer",
                  "sourceKey": "automation-engineer",
                  "sourceStakeholderId": "automation-engineer",
                  "title": "Ingénieur automatisation",
                  "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "platform-owner",
                  "sourceKey": "platform-owner",
                  "sourceStakeholderId": "platform-owner",
                  "title": "Responsable de plateforme",
                  "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "customerJourneyCanvas",
                  "slug": "resources/customer-journey-canvas",
                  "title": "Customer Journey Canvas",
                  "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 1,
                  "outcomes": [
                    "Compréhension partagée du parcours client, partenaire ou utilisateur",
                    "Besoins, irritants, gains, entrées et sorties documentés",
                    "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
                  ],
                  "steps": [
                    "Définir le profil du client",
                    "Identifier les éléments déclencheurs du voyage",
                    "Décrire la fin du voyage",
                    "Cartographier les étapes du voyage avec les intrants et les extrants",
                    "Identifier les problèmes des clients",
                    "Résumer les gains pour les clients",
                    "Définir les intrants nécessaires et les résultats qui en découlent",
                    "Définir les interactions API pour chaque étape"
                  ],
                  "canvasId": "customerJourneyCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "domainCanvas",
                  "slug": "resources/domain-canvas",
                  "title": "Domain Canvas",
                  "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 152,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                    "Approche cohérente pour appliquer « Domain Canvas »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
                  ],
                  "canvasId": "domainCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capabilityValuePropositionCanvas",
                  "slug": "resources/capability-value-proposition-canvas",
                  "title": "Capability Value Proposition Canvas",
                  "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 2.1,
                  "outcomes": [
                    "Proposition de valeur claire pour une capacité réutilisable",
                    "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                    "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
                  ],
                  "steps": [
                    "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                    "Identifiez les caractéristiques de capacité qui permettent les gains.",
                    "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                    "Regroupez les caractéristiques en capacités réutilisables candidates."
                  ],
                  "canvasId": "capabilityValuePropositionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                }
              ],
              "evidence": [
                "design-artifact",
                "documentation",
                "research",
                "roadmap"
              ]
            },
            {
              "index": 2,
              "id": "api-consumer-experience",
              "slug": "method/api-consumer-experience",
              "icon": "deployed-code-account-outline",
              "title": "Exigences processus & utilisateur",
              "description": "Capturez les utilisateurs du processus, les rôles, les transferts, les exceptions, les contraintes et les attentes de service avant de concevoir l’automatisation.",
              "whyItMatters": "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur.",
              "applyInWork": "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
              "outcomes": [
                "Exigences utilisateurs et attentes d'onboarding explicites",
                "Définir le parcours de l'expérience API",
                "Planifier l'intégration, la documentation et le retour d'information",
                "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)"
              ],
              "steps": [
                {
                  "text": "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas"
                },
                {
                  "text": "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas"
                },
                {
                  "text": "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
                  "resourceId": "api-onboarding-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
                "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
                "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
                "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
                "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur."
              ],
              "criteria": [
                "api-opportunity-documented",
                "api-reusability",
                "hide-backend-discrepancies",
                "value-prop-validated",
                "consumer-segments-identified",
                "api-roadmap-defined"
              ],
              "criteriaDetails": [
                {
                  "id": "api-opportunity-documented",
                  "title": "L'opportunité de capacité est identifiée et documentée.",
                  "description": "Individual API opportunities are identified and documented."
                },
                {
                  "id": "api-reusability",
                  "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
                  "description": "The API meets a clear business need and is reusable for multiple API consumers."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "value-prop-validated",
                  "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
                  "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
                },
                {
                  "id": "consumer-segments-identified",
                  "title": "Les segments d'utilisateurs sont identifiés.",
                  "description": "API consumer segments (internal and external) are identified."
                },
                {
                  "id": "api-roadmap-defined",
                  "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
                  "description": "High-level roadmaps for API development are established."
                }
              ],
              "baseTitle": "Exigences utilisateurs & onboarding",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "strategy",
              "stakeholders": [
                {
                  "id": "process-owner",
                  "sourceKey": "process-owner",
                  "sourceStakeholderId": "process-owner",
                  "title": "Responsable de processus",
                  "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "customer-specialist",
                  "sourceKey": "customer-specialist",
                  "sourceStakeholderId": "customer-specialist",
                  "title": "Représentant client ou partenaire",
                  "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "automation-owner",
                  "sourceKey": "automation-owner",
                  "sourceStakeholderId": "automation-owner",
                  "title": "Responsable de l'automatisation",
                  "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-consumer-specialist",
                  "sourceKey": "api-consumer-specialist",
                  "sourceStakeholderId": "api-consumer-specialist",
                  "title": "Représentant utilisateur API",
                  "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
                  "involvement": "consulted",
                  "responsibilities": [
                    {
                      "resourceId": "consumerExperienceRequirementsCanvas",
                      "resourceTitle": "Consumer Experience Requirements Canvas",
                      "canvasId": "consumerExperienceRequirementsCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "consumerExperienceRequirementsCanvas",
                  "slug": "resources/consumer-experience-requirements-canvas",
                  "title": "Consumer Experience Requirements Canvas",
                  "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 3.2,
                  "outcomes": [
                    "Exigences utilisateurs et de service indépendantes de la technologie",
                    "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                    "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
                  ],
                  "steps": [
                    "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                    "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                    "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                    "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
                  ],
                  "canvasId": "consumerExperienceRequirementsCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                }
              ],
              "evidence": [
                "design-artifact",
                "documentation",
                "consumer-feedback"
              ]
            },
            {
              "index": 3,
              "id": "api-platform-architecture",
              "slug": "method/api-platform-architecture",
              "icon": "code-blocks-outline",
              "title": "Décision de plateforme d’automatisation",
              "description": "Choisir la plateforme d automatisation, le runtime, l approche d integration, les controles de gouvernance et les contraintes operationnelles.",
              "whyItMatters": "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes.",
              "applyInWork": "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
              "outcomes": [
                "Décision d'architecture et de plateforme validée",
                "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
                "Conception en vue d'une réutilisation interne et d'une évolutivité externe"
              ],
              "steps": [
                {
                  "text": "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
                  "resourceId": "businessImpactCanvas",
                  "resourceTitle": "Business Impact Canvas",
                  "canvasId": "businessImpactCanvas"
                },
                {
                  "text": "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas"
                },
                {
                  "text": "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
                  "resourceId": "capacityCanvas",
                  "resourceTitle": "Capacity Canvas",
                  "canvasId": "capacityCanvas"
                },
                {
                  "text": "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                  "resourceId": "api-metrics-and-analytics",
                  "resourceTitle": "Mesures et analyses de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
                "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
                "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
                "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
              ],
              "criteria": [
                "api-reusability",
                "hide-backend-discrepancies",
                "value-prop-validated",
                "consumer-segments-identified",
                "api-roadmap-defined"
              ],
              "criteriaDetails": [
                {
                  "id": "api-reusability",
                  "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
                  "description": "The API meets a clear business need and is reusable for multiple API consumers."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "value-prop-validated",
                  "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
                  "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
                },
                {
                  "id": "consumer-segments-identified",
                  "title": "Les segments d'utilisateurs sont identifiés.",
                  "description": "API consumer segments (internal and external) are identified."
                },
                {
                  "id": "api-roadmap-defined",
                  "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
                  "description": "High-level roadmaps for API development are established."
                }
              ],
              "baseTitle": "Architecture & décisions de plateforme",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "architecture",
              "stakeholders": [
                {
                  "id": "platform-owner",
                  "sourceKey": "platform-owner",
                  "sourceStakeholderId": "platform-owner",
                  "title": "Responsable de plateforme",
                  "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "automation-engineer",
                  "sourceKey": "automation-engineer",
                  "sourceStakeholderId": "automation-engineer",
                  "title": "Ingénieur automatisation",
                  "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "automation-owner",
                  "sourceKey": "automation-owner",
                  "sourceStakeholderId": "automation-owner",
                  "title": "Responsable de l'automatisation",
                  "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "businessImpactCanvas",
                  "slug": "resources/business-impact-canvas",
                  "title": "Business Impact Canvas",
                  "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 4,
                  "outcomes": [
                    "Évaluation documentée des impacts métier et opérationnels",
                    "Risques et mesures d’atténuation priorisés",
                    "Éléments probants pour les décisions d’architecture et de plateforme"
                  ],
                  "steps": [
                    "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                    "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                    "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                    "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                    "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                    "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
                  ],
                  "canvasId": "businessImpactCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "locationsCanvas",
                  "slug": "resources/location-canvas",
                  "title": "Location Canvas",
                  "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 6,
                  "outcomes": [
                    "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                    "Contraintes régionales de performance et d’accessibilité identifiées",
                    "Résidence des données, limites de confiance et réglementations applicables clarifiées"
                  ],
                  "steps": [
                    "Carte des emplacements des fournisseurs d'API.",
                    "Documenter l'emplacement des consommateurs.",
                    "Identifier les réglementations applicables.",
                    "Documenter l'endroit où les données doivent être stockées.",
                    "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                    "Valider les performances du réseau dans les différentes régions."
                  ],
                  "canvasId": "locationsCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "capacityCanvas",
                  "slug": "resources/capacity-canvas",
                  "title": "Capacity Canvas",
                  "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 7,
                  "outcomes": [
                    "Exigences de capacité alignées sur la demande métier attendue",
                    "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                    "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
                  ],
                  "steps": [
                    "Documenter les volumes d'affaires actuels",
                    "Prévoir les tendances futures de la consommation",
                    "Planifier les pics de charge et les exigences de disponibilité",
                    "Définir les stratégies de mise en cache et de limitation du débit",
                    "Proposer des stratégies de mise à l'échelle"
                  ],
                  "canvasId": "capacityCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "automation-operational-ownership-guide",
                  "slug": "resources/automation-operational-ownership-guide",
                  "title": "Guide de responsabilité opérationnelle",
                  "description": "Guide pour définir responsabilité, runbooks, supervision, support, suivi, contrôle des changements et amélioration continue.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 185,
                  "outcomes": [
                    "Modèle opérationnel clair",
                    "Responsabilités de propriété, support et escalade attribuées",
                    "Pratiques de suivi et changement prêtes pour exploitation"
                  ],
                  "steps": [
                    "Définissez les responsables métier, techniques et opérationnels.",
                    "Documentez runbooks, support, signaux de suivi, attentes de service et escalades.",
                    "Définissez le contrôle des changements pour workflows, plateforme et règles."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "architecture-decision",
                "documentation",
                "platform-config",
                "metrics"
              ]
            },
            {
              "index": 4,
              "id": "api-design",
              "slug": "method/api-design",
              "icon": "api",
              "title": "Conception de workflow d’automatisation",
              "description": "Concevoir le workflow d automatisation, les declencheurs, les points de decision, les integrations, le traitement des donnees, les contrats d interface pertinents et les chemins d exception.",
              "whyItMatters": "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs.",
              "applyInWork": "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
              "outcomes": [
                "Un contrat d'interface validé pour le mode de mise en œuvre choisi",
                "Contrats d'interface réutilisables et validés",
                "Conceptions alignées sur les modèles de domaine et les modèles d'interaction",
                "Traçabilité de la conception à la valeur métier"
              ],
              "steps": [
                {
                  "text": "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas"
                },
                {
                  "text": "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
                  "resourceId": "interactionCanvas",
                  "resourceTitle": "Interaction Canvas",
                  "canvasId": "interactionCanvas"
                },
                {
                  "text": "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "restCanvas",
                  "resourceTitle": "REST Canvas",
                  "canvasId": "restCanvas"
                },
                {
                  "text": "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "eventCanvas",
                  "resourceTitle": "Event Canvas",
                  "canvasId": "eventCanvas"
                },
                {
                  "text": "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                  "resourceId": "graphqlCanvas",
                  "resourceTitle": "GraphQL Canvas",
                  "canvasId": "graphqlCanvas"
                },
                {
                  "text": "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
                  "resourceId": "api-design-principles",
                  "resourceTitle": "Principes de conception de l'API",
                  "canvasId": null
                },
                {
                  "text": "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
                  "resourceId": "contract-first-design",
                  "resourceTitle": "Contrat de première conception",
                  "canvasId": null
                },
                {
                  "text": "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
                "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
                "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
                "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
                "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
                "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
                "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "hide-backend-discrepancies",
                "design-reflects-business-value",
                "api-consistency"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                }
              ],
              "baseTitle": "Conception de solution & d'interface",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "design",
              "stakeholders": [
                {
                  "id": "automation-engineer",
                  "sourceKey": "automation-engineer",
                  "sourceStakeholderId": "automation-engineer",
                  "title": "Ingénieur automatisation",
                  "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "integration-architect",
                  "sourceKey": "integration-architect",
                  "sourceStakeholderId": "integration-architect",
                  "title": "Architecte d'intégration",
                  "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
                  "involvement": "core",
                  "responsibilities": [
                    {
                      "resourceId": "interactionCanvas",
                      "resourceTitle": "Interaction Canvas",
                      "canvasId": "interactionCanvas",
                      "role": "suggested-answer-owner"
                    }
                  ]
                },
                {
                  "id": "domain-specialist",
                  "sourceKey": "domain-specialist",
                  "sourceStakeholderId": "domain-specialist",
                  "title": "Expert du domaine",
                  "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "automation-owner",
                  "sourceKey": "automation-owner",
                  "sourceStakeholderId": "automation-owner",
                  "title": "Responsable de l'automatisation",
                  "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "process-owner",
                  "sourceKey": "process-owner",
                  "sourceStakeholderId": "process-owner",
                  "title": "Responsable de processus",
                  "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-designer",
                  "sourceKey": "api-designer",
                  "sourceStakeholderId": "api-designer",
                  "title": "Designer API",
                  "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "domainCanvas",
                  "slug": "resources/domain-canvas",
                  "title": "Domain Canvas",
                  "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 152,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                    "Approche cohérente pour appliquer « Domain Canvas »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
                  ],
                  "canvasId": "domainCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "interactionCanvas",
                  "slug": "resources/interaction-canvas",
                  "title": "Interaction Canvas",
                  "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
                  "category": "canvas",
                  "icon": "dashboard-outline",
                  "order": 9,
                  "outcomes": [
                    "Modèle d’interaction défini pour la capacité choisie",
                    "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                    "Règles de validation et attentes d’interaction convenues"
                  ],
                  "steps": [
                    "Associer les interactions de l'API aux tâches de l'utilisateur",
                    "Définir des points finaux pour chaque interaction",
                    "Documentez les entrées et les sorties de chaque interaction.",
                    "Spécifier les règles et contraintes de validation",
                    "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
                  ],
                  "canvasId": "interactionCanvas",
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": false
                },
                {
                  "id": "process-workflow-design-guide",
                  "slug": "resources/process-workflow-design-guide",
                  "title": "Guide de conception des processus et workflows",
                  "description": "Guide pour modéliser étapes, rôles, transferts, décisions, états, entrées, sorties et exceptions d’un workflow automatisé.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 181,
                  "outcomes": [
                    "Conception claire du workflow automatisé",
                    "Étapes et transferts documentés avant mise en œuvre",
                    "États, entrées, sorties et exceptions compris"
                  ],
                  "steps": [
                    "Cartographiez le processus actuel et cible, avec les responsabilités humaines et système.",
                    "Identifiez déclencheurs, états, décisions, données, sorties et critères de fin.",
                    "Documentez les transferts entre utilisateurs, systèmes, opérations et support.",
                    "Confirmez les étapes automatisées et celles nécessitant un jugement humain."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "decision-business-rules-guide",
                  "slug": "resources/decision-business-rules-guide",
                  "title": "Guide des décisions et règles métier",
                  "description": "Guide pour capturer règles, seuils, décisions, validations, critères d’éligibilité et responsabilités.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 182,
                  "outcomes": [
                    "Décisions et règles métier explicites",
                    "Règles et seuils documentés avec leurs responsables",
                    "Décisions traçables aux politiques, processus ou objectifs métier"
                  ],
                  "steps": [
                    "Listez les décisions que l’automatisation doit prendre ou soutenir.",
                    "Documentez conditions, seuils, exceptions, validations et escalades.",
                    "Identifiez les responsables et la gouvernance des changements."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "automation-trigger-handoff-exception-guide",
                  "slug": "resources/automation-trigger-handoff-exception-guide",
                  "title": "Guide des déclencheurs, transferts et exceptions",
                  "description": "Guide pour définir déclencheurs, transferts humains, exceptions, reprises, actions compensatoires et escalades.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 183,
                  "outcomes": [
                    "Déclencheurs et chemins d’exception définis",
                    "Transferts humains et escalades explicites",
                    "Exceptions, reprises et compensations conçues avant livraison"
                  ],
                  "steps": [
                    "Définissez événements, horaires, actions utilisateur ou états système déclencheurs.",
                    "Cartographiez les transferts vers utilisateurs, opérateurs ou support.",
                    "Documentez exceptions, reprises, délais et solutions de repli.",
                    "Définissez alertes et seuils d’escalade."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "spec",
                "contract",
                "design-artifact",
                "documentation"
              ]
            },
            {
              "index": 5,
              "id": "api-delivery",
              "slug": "method/api-delivery",
              "icon": "code",
              "title": "Livraison & operations de l automatisation",
              "description": "Construisez, testez, déployez, documentez et exploitez l’automatisation avec une responsabilité et des chemins de rollback clairs.",
              "whyItMatters": "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe.",
              "applyInWork": "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
              "outcomes": [
                "Une capacité livrée conformément au contrat d'interface validé",
                "Pipelines CI/CD fiables et automatisés",
                "Tests fonctionnels et non fonctionnels intégrés",
                "Pipelines de livraison sécurisés et conformes"
              ],
              "steps": [
                {
                  "text": "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
                  "resourceId": "api-development-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de développement d'API",
                  "canvasId": null
                },
                {
                  "text": "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
                  "resourceId": "api-development-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de développement d'API",
                  "canvasId": null
                },
                {
                  "text": "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                  "resourceId": "api-testing-best-practices",
                  "resourceTitle": "Meilleures pratiques de test de l'API",
                  "canvasId": null
                },
                {
                  "text": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                },
                {
                  "text": "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                  "resourceId": "api-security-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de sécurité des API",
                  "canvasId": null
                },
                {
                  "text": "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
                "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
                "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "hide-backend-discrepancies",
                "design-reflects-business-value",
                "api-consistency"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "hide-backend-discrepancies",
                  "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
                  "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                }
              ],
              "baseTitle": "Mise à disposition & opérations",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "delivery",
              "stakeholders": [
                {
                  "id": "automation-engineer",
                  "sourceKey": "automation-engineer",
                  "sourceStakeholderId": "automation-engineer",
                  "title": "Ingénieur automatisation",
                  "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "automation-owner",
                  "sourceKey": "automation-owner",
                  "sourceStakeholderId": "automation-owner",
                  "title": "Responsable de l'automatisation",
                  "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-engineer",
                  "sourceKey": "api-engineer",
                  "sourceStakeholderId": "api-engineer",
                  "title": "Ingénieur de livraison",
                  "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "process-owner",
                  "sourceKey": "process-owner",
                  "sourceStakeholderId": "process-owner",
                  "title": "Responsable de processus",
                  "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "automation-testing-guide",
                  "slug": "resources/automation-testing-guide",
                  "title": "Guide de test des automatisations",
                  "description": "Guide pour tester workflows, décisions, intégrations, exceptions, rollback, supervision et impact utilisateur.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 184,
                  "outcomes": [
                    "Comportement de l’automatisation validé",
                    "Tests des workflows, règles, exceptions et intégrations définis",
                    "Confiance avant publication pour les parcours automatisés et assistés"
                  ],
                  "steps": [
                    "Créez des tests pour parcours nominaux, cas limites, exceptions, reprises et transferts.",
                    "Validez règles métier et décisions avec des données représentatives.",
                    "Testez rollback, reprise, observabilité et intervention manuelle.",
                    "Impliquez utilisateurs et opérateurs dans les tests d’acceptation."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "automation-operational-ownership-guide",
                  "slug": "resources/automation-operational-ownership-guide",
                  "title": "Guide de responsabilité opérationnelle",
                  "description": "Guide pour définir responsabilité, runbooks, supervision, support, suivi, contrôle des changements et amélioration continue.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 185,
                  "outcomes": [
                    "Modèle opérationnel clair",
                    "Responsabilités de propriété, support et escalade attribuées",
                    "Pratiques de suivi et changement prêtes pour exploitation"
                  ],
                  "steps": [
                    "Définissez les responsables métier, techniques et opérationnels.",
                    "Documentez runbooks, support, signaux de suivi, attentes de service et escalades.",
                    "Définissez le contrôle des changements pour workflows, plateforme et règles."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "automation-rollback-supervision-guide",
                  "slug": "resources/automation-rollback-supervision-guide",
                  "title": "Guide de rollback et supervision",
                  "description": "Guide pour concevoir rollback, pause, dérogation manuelle, suivi, supervision et reprise.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 186,
                  "outcomes": [
                    "Chemins de reprise contrôlés",
                    "Rollback, pause et dérogation documentés",
                    "Besoins de supervision et responsabilités de reprise définis"
                  ],
                  "steps": [
                    "Identifiez les actions réversibles, suspendables ou remplaçables manuellement.",
                    "Définissez rollback, compensation et reprise.",
                    "Documentez seuils de supervision, alertes et décisions manuelles.",
                    "Validez les procédures de reprise avant publication."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "implementation",
                "pipeline-config",
                "test-report",
                "security-report"
              ]
            },
            {
              "index": 6,
              "id": "api-audit",
              "slug": "method/api-audit",
              "icon": "check-box-outline",
              "title": "Revue de préparation de l’automatisation",
              "description": "Revoyez la préparation, la qualité, les risques, la conformité, la supervision humaine, les preuves et les critères de publication de l’automatisation.",
              "whyItMatters": "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production.",
              "applyInWork": "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
              "outcomes": [
                "Préparation documentée pour la publication et la réutilisation",
                "Documentation claire des décisions relatives à la conception et à la mise en œuvre de l'API",
                "Sécurité, performance et conformité validées",
                "Réduction du risque de problèmes en production"
              ],
              "steps": [
                {
                  "text": "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                },
                {
                  "text": "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
                  "resourceId": "api-compliance-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière de conformité de l'API",
                  "canvasId": null
                },
                {
                  "text": "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
                  "resourceTitle": "",
                  "canvasId": null
                }
              ],
              "questions": [
                "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
                "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
                "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
                "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
                "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production."
              ],
              "criteria": [
                "architecture-patterns-validated",
                "design-reflects-business-value",
                "api-description-available",
                "api-consistency",
                "api-contract-tested"
              ],
              "criteriaDetails": [
                {
                  "id": "architecture-patterns-validated",
                  "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
                  "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
                },
                {
                  "id": "design-reflects-business-value",
                  "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
                  "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
                },
                {
                  "id": "api-description-available",
                  "title": "L’interface et ses capacités sont documentées de manière suffisamment claire pour la revue, l’audit et l’onboarding.",
                  "description": "The API and its exposed capabilities are described clearly enough for review, audit, and onboarding."
                },
                {
                  "id": "api-consistency",
                  "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
                  "description": "The API design follows our shared API product and design conventions."
                },
                {
                  "id": "api-contract-tested",
                  "title": "Le contrat d'interface a été validé et testé par rapport aux exigences fonctionnelles et non fonctionnelles.",
                  "description": "The API contract is tested and meets functional and non-functional requirements."
                }
              ],
              "baseTitle": "Assurance qualité & préparation",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "publishing",
              "stakeholders": [
                {
                  "id": "governance-specialist",
                  "sourceKey": "governance-specialist",
                  "sourceStakeholderId": "governance-specialist",
                  "title": "Responsable gouvernance",
                  "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "automation-owner",
                  "sourceKey": "automation-owner",
                  "sourceStakeholderId": "automation-owner",
                  "title": "Responsable de l'automatisation",
                  "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "process-owner",
                  "sourceKey": "process-owner",
                  "sourceStakeholderId": "process-owner",
                  "title": "Responsable de processus",
                  "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-architect",
                  "sourceKey": "platform-architect",
                  "sourceStakeholderId": "platform-architect",
                  "title": "Architecte de la plateforme",
                  "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "automation-engineer",
                  "sourceKey": "automation-engineer",
                  "sourceStakeholderId": "automation-engineer",
                  "title": "Ingénieur automatisation",
                  "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "automation-readiness-checklist",
                  "slug": "resources/automation-readiness-checklist",
                  "title": "Checklist de préparation des automatisations",
                  "description": "Checklist pour valider workflow, contrôles, risques, conformité, supervision humaine, preuves de test, rollback, opérations et préparation.",
                  "category": "checklist",
                  "icon": "check-box-outline",
                  "order": 187,
                  "outcomes": [
                    "Préparation de l’automatisation documentée",
                    "Écarts et mesures d’atténuation connus avant publication",
                    "Preuves pour qualité, risques, conformité, supervision et approbation"
                  ],
                  "steps": [
                    "Examinez workflow, règles métier, contrôles, accès, données et exceptions.",
                    "Vérifiez preuves de test, rollback, supervision et support.",
                    "Confirmez responsabilités, runbooks, suivi et contrôle des changements.",
                    "Consignez les écarts, décisions et risques acceptés."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-compliance-best-practices",
                  "slug": "resources/api-compliance-best-practices",
                  "title": "Meilleures pratiques en matière de conformité de l'API",
                  "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 104,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
                    "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
                    "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
                    "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "audit-report",
                "compliance-report",
                "security-report",
                "test-report"
              ]
            },
            {
              "index": 7,
              "id": "api-publishing",
              "slug": "method/api-publishing",
              "icon": "deployed-code-outline",
              "title": "Deploiement & enablement de l automatisation",
              "description": "Enablez les utilisateurs et opérateurs avec découverte, onboarding, instructions d’exploitation, chemins de support et communication de changement.",
              "whyItMatters": "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie.",
              "applyInWork": "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
              "outcomes": [
                "Une capacité découvrable et utilisable",
                "Des processus clairs d'intégration et d'enregistrement de l'API",
                "Documentation, modèles de sécurité et politiques disponibles",
                "Des API prêtes pour l'échelle et la gouvernance"
              ],
              "steps": [
                {
                  "text": "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                },
                {
                  "text": "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
                  "resourceId": "api-onboarding-best-practices",
                  "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
                  "canvasId": null
                },
                {
                  "text": "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
                  "resourceId": "api-audit-checklist",
                  "resourceTitle": "Liste de contrôle de l'audit de l'API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
                "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
                "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
                "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
                "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie."
              ],
              "criteria": [
                "audit-passed",
                "audit-reports-shared",
                "api-ready-for-publishing",
                "api-documentation-ready"
              ],
              "criteriaDetails": [
                {
                  "id": "audit-passed",
                  "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
                  "description": "The API passes compliance, security, and audit checks."
                },
                {
                  "id": "audit-reports-shared",
                  "title": "Les résultats d'audit et les décisions de correction sont partagés avec les parties prenantes concernées.",
                  "description": "Audit findings and remediation decisions are shared with the relevant stakeholders."
                },
                {
                  "id": "api-ready-for-publishing",
                  "title": "La capacité est prête à être publiée ou mise à disposition via le mécanisme de livraison choisi.",
                  "description": "The API is ready to be deployed and exposed through the intended gateways and environments."
                },
                {
                  "id": "api-documentation-ready",
                  "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
                  "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
                }
              ],
              "baseTitle": "Publication & enablement",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "publishing",
              "stakeholders": [
                {
                  "id": "automation-owner",
                  "sourceKey": "automation-owner",
                  "sourceStakeholderId": "automation-owner",
                  "title": "Responsable de l'automatisation",
                  "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "process-owner",
                  "sourceKey": "process-owner",
                  "sourceStakeholderId": "process-owner",
                  "title": "Responsable de processus",
                  "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "api-devrel-specialist",
                  "sourceKey": "api-devrel-specialist",
                  "sourceStakeholderId": "api-devrel-specialist",
                  "title": "Responsable Documentation & DevRel",
                  "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "automation-engineer",
                  "sourceKey": "automation-engineer",
                  "sourceStakeholderId": "automation-engineer",
                  "title": "Ingénieur automatisation",
                  "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "automation-rollout-enablement-guide",
                  "slug": "resources/automation-rollout-enablement-guide",
                  "title": "Guide de déploiement et d’enablement",
                  "description": "Guide pour déployer les automatisations avec communication, onboarding, instructions d’exploitation, support, conduite du changement et feedback.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 188,
                  "outcomes": [
                    "Utilisateurs et opérateurs préparés",
                    "Communication, onboarding et support préparés",
                    "Compréhension des changements de travail après publication"
                  ],
                  "steps": [
                    "Définissez publics, calendrier, canaux et besoins de formation.",
                    "Publiez instructions, support, gestion des exceptions et contacts.",
                    "Planifiez l’accompagnement de transition.",
                    "Collectez les retours et alimentez le backlog."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "service-agreement-template",
                  "slug": "resources/service-agreement-template",
                  "title": "Modèle de contrat de service",
                  "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 172,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
                    "Approche cohérente pour appliquer « Modèle de contrat de service »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
                    "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
                    "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "gateway-config",
                "developer-portal",
                "documentation",
                "release-record"
              ]
            },
            {
              "index": 8,
              "id": "monitoring-and-improving",
              "slug": "method/monitoring-and-improving",
              "icon": "analytics-outline",
              "title": "Suivi & amélioration de l’automatisation",
              "description": "Suivez la performance de l’automatisation, les exceptions, la fiabilité, les résultats utilisateurs, l’impact opérationnel et les opportunités d’amélioration.",
              "whyItMatters": "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent.",
              "applyInWork": "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
              "outcomes": [
                "Santé et contribution de valeur de la capacité mesurées",
                "Boucles de rétroaction des développeurs en place",
                "Questions identifiées et traitées en permanence",
                "Itération de l'API alignée sur les besoins des utilisateurs"
              ],
              "steps": [
                {
                  "text": "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
                  "resourceId": "api-metrics-and-analytics",
                  "resourceTitle": "Mesures et analyses de l'API",
                  "canvasId": null
                },
                {
                  "text": "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
                  "resourceId": "api-community-engagement-strategies",
                  "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
                  "canvasId": null
                },
                {
                  "text": "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
                  "resourceId": "apiops-CI-CD-for-apis",
                  "resourceTitle": "APIOps CI/CD pour les API",
                  "canvasId": null
                }
              ],
              "questions": [
                "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
                "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
                "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
                "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent."
              ],
              "criteria": [
                "api-documentation-ready",
                "consumer-support-ready",
                "legal-compliance-clear"
              ],
              "criteriaDetails": [
                {
                  "id": "api-documentation-ready",
                  "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
                  "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
                },
                {
                  "id": "consumer-support-ready",
                  "title": "Les processus d'onboarding, de support et de communication sont prêts pour les utilisateurs.",
                  "description": "Registration, support, and communication processes are ready for API consumers."
                },
                {
                  "id": "legal-compliance-clear",
                  "title": "Les exigences juridiques, de confidentialité et de conformité liées à la publication ou à la mise à disposition sont définies et comprises.",
                  "description": "Legal, privacy, and compliance requirements for publishing are defined and understood."
                }
              ],
              "baseTitle": "Suivi & amélioration",
              "group": "Stations centrales du cycle de vie des capacités",
              "lifecycleStage": "improving",
              "stakeholders": [
                {
                  "id": "automation-owner",
                  "sourceKey": "automation-owner",
                  "sourceStakeholderId": "automation-owner",
                  "title": "Responsable de l'automatisation",
                  "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
                  "involvement": "lead",
                  "responsibilities": []
                },
                {
                  "id": "automation-engineer",
                  "sourceKey": "automation-engineer",
                  "sourceStakeholderId": "automation-engineer",
                  "title": "Ingénieur automatisation",
                  "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "process-owner",
                  "sourceKey": "process-owner",
                  "sourceStakeholderId": "process-owner",
                  "title": "Responsable de processus",
                  "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "operations-specialist",
                  "sourceKey": "operations-specialist",
                  "sourceStakeholderId": "operations-specialist",
                  "title": "Responsable support et opérations",
                  "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
                  "involvement": "core",
                  "responsibilities": []
                },
                {
                  "id": "platform-owner",
                  "sourceKey": "platform-owner",
                  "sourceStakeholderId": "platform-owner",
                  "title": "Responsable de plateforme",
                  "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "business-owner",
                  "sourceKey": "business-owner",
                  "sourceStakeholderId": "business-owner",
                  "title": "Responsable métier",
                  "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "compliance-specialist",
                  "sourceKey": "compliance-specialist",
                  "sourceStakeholderId": "compliance-specialist",
                  "title": "Spécialiste en conformité et juridique",
                  "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
                  "involvement": "consulted",
                  "responsibilities": []
                },
                {
                  "id": "security-specialist",
                  "sourceKey": "security-specialist",
                  "sourceStakeholderId": "security-specialist",
                  "title": "Spécialiste en sécurité",
                  "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
                  "involvement": "consulted",
                  "responsibilities": []
                }
              ],
              "resources": [
                {
                  "id": "automation-operational-ownership-guide",
                  "slug": "resources/automation-operational-ownership-guide",
                  "title": "Guide de responsabilité opérationnelle",
                  "description": "Guide pour définir responsabilité, runbooks, supervision, support, suivi, contrôle des changements et amélioration continue.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 185,
                  "outcomes": [
                    "Modèle opérationnel clair",
                    "Responsabilités de propriété, support et escalade attribuées",
                    "Pratiques de suivi et changement prêtes pour exploitation"
                  ],
                  "steps": [
                    "Définissez les responsables métier, techniques et opérationnels.",
                    "Documentez runbooks, support, signaux de suivi, attentes de service et escalades.",
                    "Définissez le contrôle des changements pour workflows, plateforme et règles."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                },
                {
                  "id": "api-metrics-and-analytics",
                  "slug": "resources/api-metrics-and-analytics",
                  "title": "Mesures et analyses de l'API",
                  "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
                  "category": "guideline",
                  "icon": "edit-document-outline",
                  "order": 119,
                  "outcomes": [
                    "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                    "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                    "Meilleure application des pratiques associées"
                  ],
                  "steps": [
                    "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                    "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                    "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
                  ],
                  "canvasId": null,
                  "sourcePath": null,
                  "sourceUrl": null,
                  "contentMarkdown": null,
                  "draft": true
                }
              ],
              "evidence": [
                "metrics",
                "consumer-feedback",
                "incident-report",
                "roadmap"
              ]
            }
          ]
        }
      ],
      "lines": [
        {
          "id": "business-opportunities-line",
          "slug": "business-opportunities-line",
          "title": "Ligne des opportunités métier",
          "description": "Se concentre sur l'identification, l'évaluation et la productisation des opportunités métier sous forme de capacités réutilisables.",
          "icon": "",
          "color": "#26b309",
          "order": 1,
          "stations": [
            "monitoring-and-improving",
            "api-product-strategy",
            "user-experience",
            "market-insights",
            "business-goals",
            "competitive-analysis",
            "ecosystem-vision"
          ]
        },
        {
          "id": "platform-architecture-line",
          "slug": "platform-architecture-line",
          "title": "Ligne d'architecture de la plateforme",
          "description": "Couvre les décisions d'architecture relatives aux plateformes, aux intégrations et aux interfaces.",
          "icon": "",
          "color": "#933469",
          "order": 2,
          "stations": [
            "api-product-strategy",
            "api-consumer-experience",
            "api-platform-architecture",
            "scalable-infrastructure",
            "legal-and-compliance",
            "security-and-privacy",
            "design-standards",
            "vendor-management"
          ]
        },
        {
          "id": "api-design-line",
          "slug": "api-design-line",
          "title": "Ligne de conception de l'API",
          "description": "Se concentre sur les principes et les bonnes pratiques de conception des interfaces et des solutions d'intégration.",
          "icon": "",
          "color": "#db9b0c",
          "order": 3,
          "stations": [
            "api-platform-architecture",
            "api-design",
            "api-delivery",
            "api-audit"
          ]
        },
        {
          "id": "delivery-line",
          "slug": "delivery-line",
          "title": "Ligne de livraison",
          "description": "Couvre les pratiques de mise en œuvre, de test, d'automatisation et de livraison.",
          "icon": "",
          "color": "#db9b0c",
          "order": 4,
          "stations": [
            "api-delivery",
            "contract-design",
            "development",
            "ci-cd",
            "test-automation",
            "release-management"
          ]
        },
        {
          "id": "publishing-and-adoption-line",
          "slug": "publishing-and-adoption-line",
          "title": "Ligne Publication & Enablement",
          "description": "Se concentre sur la publication des capacités, leur découvrabilité, leur onboarding et leur adoption.",
          "icon": "",
          "color": "#17C6E9",
          "order": 5,
          "stations": [
            "api-audit",
            "api-publishing",
            "monitoring-and-improving",
            "service-agreements",
            "api-consumer-adoption",
            "api-promotion",
            "partner-integration"
          ]
        },
        {
          "id": "operating-model-line",
          "slug": "operating-model-line",
          "title": "Ligne de modèle opérationnel",
          "description": "Couvre la gouvernance, les responsabilités et le modèle opérationnel des capacités.",
          "icon": "",
          "color": "#1a3987",
          "order": 6,
          "stations": [
            "api-product-strategy",
            "api-mindset",
            "roles-and-responsibilities",
            "upskilling",
            "operating-guidelines",
            "portfolio-management",
            "budget-and-resource-management"
          ]
        }
      ],
      "stations": [
        {
          "id": "api-product-strategy",
          "slug": "method/api-product-strategy",
          "icon": "strategy-outline",
          "title": "Stratégie de capacité",
          "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre.",
          "whyItMatters": "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe.",
          "applyInWork": "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
          "group": "Stations centrales du cycle de vie des capacités",
          "lifecycleStage": "strategy",
          "outcomes": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation"
          ],
          "steps": [
            {
              "text": "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas"
            },
            {
              "text": "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
              "resourceId": "domainCanvas",
              "resourceTitle": "Domain Canvas",
              "canvasId": "domainCanvas"
            },
            {
              "text": "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
              "resourceId": "apiValuePropositionCanvas",
              "resourceTitle": "API Value Proposition Canvas",
              "canvasId": "apiValuePropositionCanvas"
            },
            {
              "text": "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
              "resourceId": "apiBusinessModelCanvas",
              "resourceTitle": "API Business Model Canvas",
              "canvasId": "apiBusinessModelCanvas"
            }
          ],
          "questions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "criteria": [
            "metrics-feedback-available",
            "business-goals-defined",
            "market-research-done",
            "stakeholder-approval"
          ],
          "criteriaDetails": [
            {
              "id": "metrics-feedback-available",
              "title": "Des signaux de marché pertinents, des retours d'expérience ou des informations opérationnelles sont disponibles pour guider cette opportunité de capacité.",
              "description": "Relevant market signals, feedback, or operational insights are available to guide this API opportunity."
            },
            {
              "id": "business-goals-defined",
              "title": "Les objectifs métier sont définis.",
              "description": "Business goals are defined."
            },
            {
              "id": "market-research-done",
              "title": "L'étude de marché identifie des opportunités de capacité.",
              "description": "Market research identifies API opportunities."
            },
            {
              "id": "stakeholder-approval",
              "title": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
              "description": "Relevant stakeholders agree this API opportunity is worth exploring and prioritizing."
            }
          ],
          "stakeholders": [
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "apiValuePropositionCanvas",
                  "resourceTitle": "API Value Proposition Canvas",
                  "canvasId": "apiValuePropositionCanvas",
                  "role": "suggested-answer-owner"
                },
                {
                  "resourceId": "apiBusinessModelCanvas",
                  "resourceTitle": "API Business Model Canvas",
                  "canvasId": "apiBusinessModelCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "capabilityValuePropositionCanvas",
                  "resourceTitle": "Capability Value Proposition Canvas",
                  "canvasId": "capabilityValuePropositionCanvas",
                  "role": "suggested-answer-owner"
                },
                {
                  "resourceId": "capabilityBusinessModelCanvas",
                  "resourceTitle": "Capability Business Model Canvas",
                  "canvasId": "capabilityBusinessModelCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "domainCanvas",
                  "resourceTitle": "Domain Canvas",
                  "canvasId": "domainCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "customer-specialist",
              "sourceKey": "customer-specialist",
              "sourceStakeholderId": "customer-specialist",
              "title": "Représentant client ou partenaire",
              "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "platform-owner",
              "sourceKey": "platform-owner",
              "sourceStakeholderId": "platform-owner",
              "title": "Responsable de plateforme",
              "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "process-owner",
              "sourceKey": "process-owner",
              "sourceStakeholderId": "process-owner",
              "title": "Responsable de processus",
              "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "customerJourneyCanvas",
                  "resourceTitle": "Customer Journey Canvas",
                  "canvasId": "customerJourneyCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "partner-specialist",
              "sourceKey": "partner-specialist",
              "sourceStakeholderId": "partner-specialist",
              "title": "Gestionnaire de partenaires ou de fournisseurs",
              "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "automation-engineer",
              "sourceKey": "automation-engineer",
              "sourceStakeholderId": "automation-engineer",
              "title": "Ingénieur automatisation",
              "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "api-program-owner",
              "sourceKey": "api-program-owner",
              "sourceStakeholderId": "api-program-owner",
              "title": "Responsable du programme API",
              "description": "Coordonne les pratiques du portefeuille API, l'alignement organisationnel et le développement à long terme des capacités API.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "consulted",
              "responsibilities": []
            }
          ],
          "evidence": [
            "design-artifact",
            "documentation",
            "research",
            "roadmap"
          ]
        },
        {
          "id": "user-experience",
          "slug": "method/user-experience",
          "icon": "user-attributes-outline",
          "title": "Expérience utilisateur - Concevoir des API en pensant à l'utilisateur",
          "description": "Veiller à ce que les API soient conçues en pensant à l'utilisateur final, en lui offrant une expérience transparente et intuitive.",
          "whyItMatters": "Les API ne sont pas seulement des produits techniques, ce sont des produits orientés vers l'utilisateur. Une mauvaise expérience utilisateur peut entraîner une faible adoption et de la frustration. Cette station aide les équipes à concevoir des API conviviales et répondant aux besoins des utilisateurs.",
          "applyInWork": "Fournir des lignes directrices, des modèles et des outils en matière d'expérience utilisateur pour la conception d'API. Veiller à ce que les équipes suivent des pratiques de conception centrées sur l'utilisateur et intègrent les commentaires des utilisateurs dans les itérations de l'API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Des API conçues en fonction des besoins des utilisateurs",
            "Interfaces utilisateur intuitives et cohérentes",
            "Le retour d'information des utilisateurs est intégré dans la conception de l'API",
            "Amélioration de la satisfaction et de l'adoption des utilisateurs"
          ],
          "steps": [
            {
              "text": "Utiliser des profils d'utilisateurs pour comprendre les besoins et les attentes des utilisateurs finaux.",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas"
            },
            {
              "text": "Mener des études sur les utilisateurs pour comprendre comment les utilisateurs interagissent avec les services de l'écosystème ou avec vos applications consommatrices d'API.",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas"
            },
            {
              "text": "Documenter les exigences en matière d'expérience utilisateur afin qu'elles puissent être utilisées dans la conception de l'API, en veillant à ce qu'elles soient intuitives et faciles à utiliser.",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas"
            }
          ],
          "questions": [
            "Utiliser des profils d'utilisateurs pour comprendre les besoins et les attentes des utilisateurs finaux.",
            "Mener des études sur les utilisateurs pour comprendre comment les utilisateurs interagissent avec les services de l'écosystème ou avec vos applications consommatrices d'API.",
            "Documenter les exigences en matière d'expérience utilisateur afin qu'elles puissent être utilisées dans la conception de l'API, en veillant à ce qu'elles soient intuitives et faciles à utiliser.",
            "Fournir des lignes directrices, des modèles et des outils en matière d'expérience utilisateur pour la conception d'API. Veiller à ce que les équipes suivent des pratiques de conception centrées sur l'utilisateur et intègrent les commentaires des utilisateurs dans les itérations de l'API.",
            "Les API ne sont pas seulement des produits techniques, ce sont des produits orientés vers l'utilisateur. Une mauvaise expérience utilisateur peut entraîner une faible adoption et de la frustration. Cette station aide les équipes à concevoir des API conviviales et répondant aux besoins des utilisateurs."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-consumer-experience",
          "slug": "method/api-consumer-experience",
          "icon": "deployed-code-account-outline",
          "title": "Exigences utilisateurs & onboarding",
          "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs.",
          "whyItMatters": "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur.",
          "applyInWork": "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
          "group": "Stations centrales du cycle de vie des capacités",
          "lifecycleStage": "strategy",
          "outcomes": [
            "Exigences utilisateurs et attentes d'onboarding explicites",
            "Définir le parcours de l'expérience API",
            "Planifier l'intégration, la documentation et le retour d'information",
            "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)"
          ],
          "steps": [
            {
              "text": "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
              "resourceId": "apiValuePropositionCanvas",
              "resourceTitle": "API Value Proposition Canvas",
              "canvasId": "apiValuePropositionCanvas"
            },
            {
              "text": "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
              "resourceId": "customerJourneyCanvas",
              "resourceTitle": "Customer Journey Canvas",
              "canvasId": "customerJourneyCanvas"
            },
            {
              "text": "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
              "resourceId": "api-onboarding-best-practices",
              "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
            "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
            "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
            "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
            "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur."
          ],
          "criteria": [
            "api-opportunity-documented",
            "api-reusability",
            "hide-backend-discrepancies",
            "value-prop-validated",
            "consumer-segments-identified",
            "api-roadmap-defined"
          ],
          "criteriaDetails": [
            {
              "id": "api-opportunity-documented",
              "title": "L'opportunité de capacité est identifiée et documentée.",
              "description": "Individual API opportunities are identified and documented."
            },
            {
              "id": "api-reusability",
              "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
              "description": "The API meets a clear business need and is reusable for multiple API consumers."
            },
            {
              "id": "hide-backend-discrepancies",
              "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
              "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
            },
            {
              "id": "value-prop-validated",
              "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
              "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
            },
            {
              "id": "consumer-segments-identified",
              "title": "Les segments d'utilisateurs sont identifiés.",
              "description": "API consumer segments (internal and external) are identified."
            },
            {
              "id": "api-roadmap-defined",
              "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
              "description": "High-level roadmaps for API development are established."
            }
          ],
          "stakeholders": [
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "customer-specialist",
              "sourceKey": "customer-specialist",
              "sourceStakeholderId": "customer-specialist",
              "title": "Représentant client ou partenaire",
              "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "consumerExperienceRequirementsCanvas",
                  "resourceTitle": "Consumer Experience Requirements Canvas",
                  "canvasId": "consumerExperienceRequirementsCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "process-owner",
              "sourceKey": "process-owner",
              "sourceStakeholderId": "process-owner",
              "title": "Responsable de processus",
              "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-devrel-specialist",
              "sourceKey": "api-devrel-specialist",
              "sourceStakeholderId": "api-devrel-specialist",
              "title": "Responsable Documentation & DevRel",
              "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-designer",
              "sourceKey": "api-designer",
              "sourceStakeholderId": "api-designer",
              "title": "Designer API",
              "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "partner-specialist",
              "sourceKey": "partner-specialist",
              "sourceStakeholderId": "partner-specialist",
              "title": "Gestionnaire de partenaires ou de fournisseurs",
              "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            }
          ],
          "evidence": [
            "design-artifact",
            "documentation",
            "consumer-feedback"
          ]
        },
        {
          "id": "market-insights",
          "slug": "method/market-insights",
          "icon": "area-chart-outline",
          "title": "Aperçus du marché - Comprendre le paysage de l'API",
          "description": "Analyser les tendances du marché, les API des concurrents et les normes du secteur afin d'éclairer la stratégie en matière d'API.",
          "whyItMatters": "Comprendre le paysage du marché aide les équipes à identifier les opportunités, à éviter les pièges et à aligner leurs API sur les normes de l'industrie. Cette station fournit des outils pour analyser les tendances du marché et les offres des concurrents.",
          "applyInWork": "Fournir des outils d'étude de marché, des modèles d'analyse de la concurrence et des ressources sur les normes industrielles. Veiller à ce que les équipes se tiennent informées des tendances du marché et intègrent les informations dans la stratégie API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Analyse des tendances du marché et des API des concurrents",
            "Identification des normes industrielles et des meilleures pratiques",
            "Stratégie API alignée sur les besoins du marché",
            "Une prise de décision éclairée basée sur la connaissance du marché"
          ],
          "steps": [
            {
              "text": "Réaliser des études de marché pour identifier les tendances, les opportunités et les menaces dans le domaine des API.",
              "resourceId": "ecosystem-vision-template",
              "resourceTitle": "Modèle de vision de l'écosystème",
              "canvasId": null
            },
            {
              "text": "Analyser les API des concurrents pour comprendre leurs forces, leurs faiblesses et leurs arguments de vente uniques.",
              "resourceId": "competitor-analysis-template",
              "resourceTitle": "Modèle d'analyse des concurrents",
              "canvasId": null
            },
            {
              "text": "Identifier les normes et les meilleures pratiques du secteur pour garantir la compétitivité et la conformité des API.",
              "resourceId": "industry-standards-and-best-practices",
              "resourceTitle": "Normes industrielles et meilleures pratiques",
              "canvasId": null
            }
          ],
          "questions": [
            "Réaliser des études de marché pour identifier les tendances, les opportunités et les menaces dans le domaine des API.",
            "Analyser les API des concurrents pour comprendre leurs forces, leurs faiblesses et leurs arguments de vente uniques.",
            "Identifier les normes et les meilleures pratiques du secteur pour garantir la compétitivité et la conformité des API.",
            "Fournir des outils d'étude de marché, des modèles d'analyse de la concurrence et des ressources sur les normes industrielles. Veiller à ce que les équipes se tiennent informées des tendances du marché et intègrent les informations dans la stratégie API.",
            "Comprendre le paysage du marché aide les équipes à identifier les opportunités, à éviter les pièges et à aligner leurs API sur les normes de l'industrie. Cette station fournit des outils pour analyser les tendances du marché et les offres des concurrents."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-platform-architecture",
          "slug": "method/api-platform-architecture",
          "icon": "code-blocks-outline",
          "title": "Architecture & décisions de plateforme",
          "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel.",
          "whyItMatters": "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes.",
          "applyInWork": "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
          "group": "Stations centrales du cycle de vie des capacités",
          "lifecycleStage": "architecture",
          "outcomes": [
            "Décision d'architecture et de plateforme validée",
            "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
            "Conception en vue d'une réutilisation interne et d'une évolutivité externe"
          ],
          "steps": [
            {
              "text": "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
              "resourceId": "businessImpactCanvas",
              "resourceTitle": "Business Impact Canvas",
              "canvasId": "businessImpactCanvas"
            },
            {
              "text": "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
              "resourceId": "locationsCanvas",
              "resourceTitle": "Location Canvas",
              "canvasId": "locationsCanvas"
            },
            {
              "text": "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
              "resourceId": "capacityCanvas",
              "resourceTitle": "Capacity Canvas",
              "canvasId": "capacityCanvas"
            },
            {
              "text": "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
              "resourceId": "api-metrics-and-analytics",
              "resourceTitle": "Mesures et analyses de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
            "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
            "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
            "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
            "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
            "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
          ],
          "criteria": [
            "api-reusability",
            "hide-backend-discrepancies",
            "value-prop-validated",
            "consumer-segments-identified",
            "api-roadmap-defined"
          ],
          "criteriaDetails": [
            {
              "id": "api-reusability",
              "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
              "description": "The API meets a clear business need and is reusable for multiple API consumers."
            },
            {
              "id": "hide-backend-discrepancies",
              "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
              "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
            },
            {
              "id": "value-prop-validated",
              "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
              "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders."
            },
            {
              "id": "consumer-segments-identified",
              "title": "Les segments d'utilisateurs sont identifiés.",
              "description": "API consumer segments (internal and external) are identified."
            },
            {
              "id": "api-roadmap-defined",
              "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
              "description": "High-level roadmaps for API development are established."
            }
          ],
          "stakeholders": [
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "lead",
              "responsibilities": [
                {
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "platform-owner",
              "sourceKey": "platform-owner",
              "sourceStakeholderId": "platform-owner",
              "title": "Responsable de plateforme",
              "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-architect",
              "sourceKey": "api-architect",
              "sourceStakeholderId": "api-architect",
              "title": "Architecte API",
              "description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "locationsCanvas",
                  "resourceTitle": "Location Canvas",
                  "canvasId": "locationsCanvas",
                  "role": "suggested-answer-owner"
                },
                {
                  "resourceId": "capacityCanvas",
                  "resourceTitle": "Capacity Canvas",
                  "canvasId": "capacityCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "businessImpactCanvas",
                  "resourceTitle": "Business Impact Canvas",
                  "canvasId": "businessImpactCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "automation-engineer",
              "sourceKey": "automation-engineer",
              "sourceStakeholderId": "automation-engineer",
              "title": "Ingénieur automatisation",
              "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "businessImpactCanvas",
                  "resourceTitle": "Business Impact Canvas",
                  "canvasId": "businessImpactCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "core",
              "responsibilities": [
                {
                  "resourceId": "businessImpactCanvas",
                  "resourceTitle": "Business Impact Canvas",
                  "canvasId": "businessImpactCanvas",
                  "role": "suggested-answer-owner"
                }
              ]
            },
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            }
          ],
          "evidence": [
            "architecture-decision",
            "documentation",
            "platform-config",
            "metrics"
          ]
        },
        {
          "id": "business-goals",
          "slug": "method/business-goals",
          "icon": "business-center-outline",
          "title": "Objectifs de l'entreprise - Aligner les API sur les objectifs de l'entreprise",
          "description": "Veiller à ce que les API soient alignées sur les objectifs de l'entreprise et contribuent aux objectifs généraux de l'organisation.",
          "whyItMatters": "Les API ne doivent pas être conçues de manière isolée ; elles doivent soutenir et stimuler les objectifs de l'entreprise. Cette station aide les équipes à aligner leurs API sur les objectifs stratégiques, en veillant à ce qu'elles apportent une réelle valeur ajoutée à l'entreprise.",
          "applyInWork": "Fournir des cadres, des modèles et des outils d'alignement commercial pour définir la valeur métier des API. Veiller à ce que les équipes examinent et alignent régulièrement les API sur l'évolution des objectifs de l'entreprise.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Des API alignées sur les objectifs de l'entreprise",
            "Valeur métier clairement définie pour chaque API",
            "Adhésion et soutien des parties prenantes aux initiatives API",
            "Les API contribuent au succès de l'organisation"
          ],
          "steps": [
            {
              "text": "Définissez les objectifs de l'entreprise et la manière dont les API peuvent les soutenir en utilisant **le Business Model Canvas**. Si votre activité consiste à fournir des API, passez par *la station API Product Strategy* et remplissez **l'API Business Model Canvas**.",
              "resourceId": "apiBusinessModelCanvas",
              "resourceTitle": "API Business Model Canvas",
              "canvasId": "apiBusinessModelCanvas"
            },
            {
              "text": "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
              "resourceId": "api-metrics-and-analytics",
              "resourceTitle": "Mesures et analyses de l'API",
              "canvasId": null
            },
            {
              "text": "Engager les parties prenantes pour assurer l'alignement et le soutien des initiatives API.",
              "resourceId": "stakeholder-engagement-best-practices",
              "resourceTitle": "Meilleures pratiques en matière d'engagement des parties prenantes",
              "canvasId": null
            }
          ],
          "questions": [
            "Définissez les objectifs de l'entreprise et la manière dont les API peuvent les soutenir en utilisant **le Business Model Canvas**. Si votre activité consiste à fournir des API, passez par *la station API Product Strategy* et remplissez **l'API Business Model Canvas**.",
            "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
            "Engager les parties prenantes pour assurer l'alignement et le soutien des initiatives API.",
            "Fournir des cadres, des modèles et des outils d'alignement commercial pour définir la valeur métier des API. Veiller à ce que les équipes examinent et alignent régulièrement les API sur l'évolution des objectifs de l'entreprise.",
            "Les API ne doivent pas être conçues de manière isolée ; elles doivent soutenir et stimuler les objectifs de l'entreprise. Cette station aide les équipes à aligner leurs API sur les objectifs stratégiques, en veillant à ce qu'elles apportent une réelle valeur ajoutée à l'entreprise."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-design",
          "slug": "method/api-design",
          "icon": "api",
          "title": "Conception de solution & d'interface",
          "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation.",
          "whyItMatters": "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs.",
          "applyInWork": "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
          "group": "Stations centrales du cycle de vie des capacités",
          "lifecycleStage": "design",
          "outcomes": [
            "Un contrat d'interface validé pour le mode de mise en œuvre choisi",
            "Contrats d'interface réutilisables et validés",
            "Conceptions alignées sur les modèles de domaine et les modèles d'interaction",
            "Traçabilité de la conception à la valeur métier"
          ],
          "steps": [
            {
              "text": "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
              "resourceId": "domainCanvas",
              "resourceTitle": "Domain Canvas",
              "canvasId": "domainCanvas"
            },
            {
              "text": "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
              "resourceId": "interactionCanvas",
              "resourceTitle": "Interaction Canvas",
              "canvasId": "interactionCanvas"
            },
            {
              "text": "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
              "resourceId": "restCanvas",
              "resourceTitle": "REST Canvas",
              "canvasId": "restCanvas"
            },
            {
              "text": "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
              "resourceId": "eventCanvas",
              "resourceTitle": "Event Canvas",
              "canvasId": "eventCanvas"
            },
            {
              "text": "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
              "resourceId": "graphqlCanvas",
              "resourceTitle": "GraphQL Canvas",
              "canvasId": "graphqlCanvas"
            },
            {
              "text": "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
              "resourceId": "api-design-principles",
              "resourceTitle": "Principes de conception de l'API",
              "canvasId": null
            },
            {
              "text": "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
              "resourceId": "contract-first-design",
              "resourceTitle": "Contrat de première conception",
              "canvasId": null
            },
            {
              "text": "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
              "resourceId": "api-audit-checklist",
              "resourceTitle": "Liste de contrôle de l'audit de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
            "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
            "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
            "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
            "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
            "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente.",
            "Appliquez des approches « contract-first » ou « design-first » pour définir et valider le contrat de l'API avant sa mise en œuvre.",
            "Utilisez la liste de contrôle d'audit des API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
            "Utilisez les ressources de conception adaptées au mode de mise en œuvre choisi, par exemple REST, GraphQL, événements, fichiers, produits de données ou intégration directe.",
            "Une bonne conception va au-delà du nommage des endpoints. Elle garantit que l'interface est utilisable, cohérente, vérifiable et traçable aux besoins métier et utilisateurs."
          ],
          "criteria": [
            "architecture-patterns-validated",
            "hide-backend-discrepancies",
            "design-reflects-business-value",
            "api-consistency"
          ],
          "criteriaDetails": [
            {
              "id": "architecture-patterns-validated",
              "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
              "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
            },
            {
              "id": "hide-backend-discrepancies",
              "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
              "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
            },
            {
              "id": "design-reflects-business-value",
              "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
              "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
            },
            {
              "id": "api-consistency",
              "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
              "description": "The API design follows our shared API product and design conventions."
            }
          ],
          "stakeholders": [
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-designer",
              "sourceKey": "api-designer",
              "sourceStakeholderId": "api-designer",
              "title": "Designer API",
              "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "automation-engineer",
              "sourceKey": "automation-engineer",
              "sourceStakeholderId": "automation-engineer",
              "title": "Ingénieur automatisation",
              "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "process-owner",
              "sourceKey": "process-owner",
              "sourceStakeholderId": "process-owner",
              "title": "Responsable de processus",
              "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "api-devrel-specialist",
              "sourceKey": "api-devrel-specialist",
              "sourceStakeholderId": "api-devrel-specialist",
              "title": "Responsable Documentation & DevRel",
              "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            }
          ],
          "evidence": [
            "spec",
            "contract",
            "design-artifact",
            "documentation"
          ]
        },
        {
          "id": "competitive-analysis",
          "slug": "method/competitive-analysis",
          "icon": "trophy-outline",
          "title": "Analyse concurrentielle - Garder une longueur d'avance sur le marché des API",
          "description": "Analyser les API des concurrents pour identifier les forces, les faiblesses et les possibilités de différenciation.",
          "whyItMatters": "Comprendre le paysage concurrentiel aide les équipes à identifier les lacunes, les opportunités et les domaines d'amélioration de leurs API. Cette station fournit des outils pour analyser les concurrents et informer la stratégie API.",
          "applyInWork": "Fournir des outils, des modèles et des ressources d'analyse de la concurrence. Veiller à ce que les équipes analysent régulièrement les concurrents et intègrent les informations dans la stratégie et la conception de l'API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Analyse des forces et des faiblesses des API concurrentes",
            "Identification des possibilités de différenciation",
            "Stratégie API fondée sur la connaissance de la concurrence",
            "Compétitivité accrue sur le marché des API"
          ],
          "steps": [
            {
              "text": "Effectuer une analyse concurrentielle afin d'identifier les principaux concurrents, leurs offres d'API, ainsi que leurs forces et faiblesses.",
              "resourceId": "competitor-analysis-template",
              "resourceTitle": "Modèle d'analyse des concurrents",
              "canvasId": null
            },
            {
              "text": "Identifier les lacunes du marché que vos API peuvent combler, en se basant sur les offres des concurrents.",
              "resourceId": "ecosystem-vision-template",
              "resourceTitle": "Modèle de vision de l'écosystème",
              "canvasId": null
            },
            {
              "text": "Élaborer une stratégie de différenciation qui mette en évidence les caractéristiques et les avantages uniques de vos API.",
              "resourceId": "ecosystem-vision-template",
              "resourceTitle": "Modèle de vision de l'écosystème",
              "canvasId": null
            }
          ],
          "questions": [
            "Effectuer une analyse concurrentielle afin d'identifier les principaux concurrents, leurs offres d'API, ainsi que leurs forces et faiblesses.",
            "Identifier les lacunes du marché que vos API peuvent combler, en se basant sur les offres des concurrents.",
            "Élaborer une stratégie de différenciation qui mette en évidence les caractéristiques et les avantages uniques de vos API.",
            "Fournir des outils, des modèles et des ressources d'analyse de la concurrence. Veiller à ce que les équipes analysent régulièrement les concurrents et intègrent les informations dans la stratégie et la conception de l'API.",
            "Comprendre le paysage concurrentiel aide les équipes à identifier les lacunes, les opportunités et les domaines d'amélioration de leurs API. Cette station fournit des outils pour analyser les concurrents et informer la stratégie API."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-delivery",
          "slug": "method/api-delivery",
          "icon": "code",
          "title": "Mise à disposition & opérations",
          "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation.",
          "whyItMatters": "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe.",
          "applyInWork": "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
          "group": "Stations centrales du cycle de vie des capacités",
          "lifecycleStage": "delivery",
          "outcomes": [
            "Une capacité livrée conformément au contrat d'interface validé",
            "Pipelines CI/CD fiables et automatisés",
            "Tests fonctionnels et non fonctionnels intégrés",
            "Pipelines de livraison sécurisés et conformes"
          ],
          "steps": [
            {
              "text": "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
              "resourceId": "api-development-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de développement d'API",
              "canvasId": null
            },
            {
              "text": "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
              "resourceId": "api-development-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de développement d'API",
              "canvasId": null
            },
            {
              "text": "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
              "resourceId": "api-testing-best-practices",
              "resourceTitle": "Meilleures pratiques de test de l'API",
              "canvasId": null
            },
            {
              "text": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
              "resourceId": "apiops-CI-CD-for-apis",
              "resourceTitle": "APIOps CI/CD pour les API",
              "canvasId": null
            },
            {
              "text": "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
              "resourceId": "api-security-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de sécurité des API",
              "canvasId": null
            },
            {
              "text": "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
              "resourceId": "api-audit-checklist",
              "resourceTitle": "Liste de contrôle de l'audit de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
            "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
            "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
            "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
            "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
            "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
            "Appliquez les pratiques de mise en œuvre, de test, de CI/CD, d'exploitation et de sécurité au mode de mise en œuvre choisi.",
            "Une capacité réutilisable a besoin d'une mise à disposition et d'un fonctionnement fiables, qu'elle soit réalisée sous forme d'API, de flux d'événements, d'échange de fichiers, de produit de données ou d'intégration directe."
          ],
          "criteria": [
            "architecture-patterns-validated",
            "hide-backend-discrepancies",
            "design-reflects-business-value",
            "api-consistency"
          ],
          "criteriaDetails": [
            {
              "id": "architecture-patterns-validated",
              "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
              "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
            },
            {
              "id": "hide-backend-discrepancies",
              "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
              "description": "The API is intended to shield consumers from backend complexity and inconsistencies."
            },
            {
              "id": "design-reflects-business-value",
              "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
              "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
            },
            {
              "id": "api-consistency",
              "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
              "description": "The API design follows our shared API product and design conventions."
            }
          ],
          "stakeholders": [
            {
              "id": "automation-engineer",
              "sourceKey": "automation-engineer",
              "sourceStakeholderId": "automation-engineer",
              "title": "Ingénieur automatisation",
              "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-designer",
              "sourceKey": "api-designer",
              "sourceStakeholderId": "api-designer",
              "title": "Designer API",
              "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "partner-specialist",
              "sourceKey": "partner-specialist",
              "sourceStakeholderId": "partner-specialist",
              "title": "Gestionnaire de partenaires ou de fournisseurs",
              "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "process-owner",
              "sourceKey": "process-owner",
              "sourceStakeholderId": "process-owner",
              "title": "Responsable de processus",
              "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            }
          ],
          "evidence": [
            "implementation",
            "pipeline-config",
            "test-report",
            "security-report"
          ]
        },
        {
          "id": "ecosystem-vision",
          "slug": "method/ecosystem-vision",
          "icon": "globe-book-rounded",
          "title": "Vision de l'écosystème - Créer des API pour un écosystème prospère",
          "description": "Créez une vision de la manière dont vos API s'intègrent dans un écosystème plus large, favorisant la collaboration et l'innovation.",
          "whyItMatters": "Les API ne sont pas des produits autonomes ; elles font partie d'un écosystème plus large. Cette station aide les équipes à définir comment leurs API interagissent avec d'autres systèmes, plateformes et services afin de créer un écosystème prospère qui favorise la collaboration et l'innovation.",
          "applyInWork": "Fournir des cadres de vision de l'écosystème, des stratégies d'engagement des partenaires et des lignes directrices en matière d'intégration. Veiller à ce que les équipes conçoivent les API en tenant compte de l'écosystème et favorisent la collaboration entre les partenaires.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Une vision claire de l'écosystème est définie pour les API",
            "Des API conçues pour permettre la collaboration et l'intégration",
            "Identification et engagement des partenaires de l'écosystème",
            "Les API contribuent à un écosystème dynamique"
          ],
          "steps": [
            {
              "text": "Définissez la vision de l'écosystème pour vos API, y compris la manière dont elles interagiront avec d'autres systèmes et plateformes.",
              "resourceId": "ecosystem-vision-template",
              "resourceTitle": "Modèle de vision de l'écosystème",
              "canvasId": null
            },
            {
              "text": "Identifier les principaux partenaires de l'écosystème et les parties prenantes qui bénéficieront de l'écosystème ou y contribueront.",
              "resourceId": "ecosystem-vision-template",
              "resourceTitle": "Modèle de vision de l'écosystème",
              "canvasId": null
            },
            {
              "text": "Concevoir des API pour permettre une intégration et une collaboration transparentes au sein de l'écosystème.",
              "resourceId": "ecosystem-vision-template",
              "resourceTitle": "Modèle de vision de l'écosystème",
              "canvasId": null
            }
          ],
          "questions": [
            "Définissez la vision de l'écosystème pour vos API, y compris la manière dont elles interagiront avec d'autres systèmes et plateformes.",
            "Identifier les principaux partenaires de l'écosystème et les parties prenantes qui bénéficieront de l'écosystème ou y contribueront.",
            "Concevoir des API pour permettre une intégration et une collaboration transparentes au sein de l'écosystème.",
            "Fournir des cadres de vision de l'écosystème, des stratégies d'engagement des partenaires et des lignes directrices en matière d'intégration. Veiller à ce que les équipes conçoivent les API en tenant compte de l'écosystème et favorisent la collaboration entre les partenaires.",
            "Les API ne sont pas des produits autonomes ; elles font partie d'un écosystème plus large. Cette station aide les équipes à définir comment leurs API interagissent avec d'autres systèmes, plateformes et services afin de créer un écosystème prospère qui favorise la collaboration et l'innovation."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-audit",
          "slug": "method/api-audit",
          "icon": "check-box-outline",
          "title": "Assurance qualité & préparation",
          "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication.",
          "whyItMatters": "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production.",
          "applyInWork": "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
          "group": "Stations centrales du cycle de vie des capacités",
          "lifecycleStage": "publishing",
          "outcomes": [
            "Préparation documentée pour la publication et la réutilisation",
            "Documentation claire des décisions relatives à la conception et à la mise en œuvre de l'API",
            "Sécurité, performance et conformité validées",
            "Réduction du risque de problèmes en production"
          ],
          "steps": [
            {
              "text": "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
              "resourceId": "api-audit-checklist",
              "resourceTitle": "Liste de contrôle de l'audit de l'API",
              "canvasId": null
            },
            {
              "text": "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
              "resourceId": "api-compliance-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de conformité de l'API",
              "canvasId": null
            },
            {
              "text": "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
              "resourceTitle": "",
              "canvasId": null
            }
          ],
          "questions": [
            "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
            "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
            "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
            "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
            "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production."
          ],
          "criteria": [
            "architecture-patterns-validated",
            "design-reflects-business-value",
            "api-description-available",
            "api-consistency",
            "api-contract-tested"
          ],
          "criteriaDetails": [
            {
              "id": "architecture-patterns-validated",
              "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
              "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders."
            },
            {
              "id": "design-reflects-business-value",
              "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
              "description": "The API design and exposed capabilities clearly trace back to business value and user needs."
            },
            {
              "id": "api-description-available",
              "title": "L’interface et ses capacités sont documentées de manière suffisamment claire pour la revue, l’audit et l’onboarding.",
              "description": "The API and its exposed capabilities are described clearly enough for review, audit, and onboarding."
            },
            {
              "id": "api-consistency",
              "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
              "description": "The API design follows our shared API product and design conventions."
            },
            {
              "id": "api-contract-tested",
              "title": "Le contrat d'interface a été validé et testé par rapport aux exigences fonctionnelles et non fonctionnelles.",
              "description": "The API contract is tested and meets functional and non-functional requirements."
            }
          ],
          "stakeholders": [
            {
              "id": "governance-specialist",
              "sourceKey": "governance-specialist",
              "sourceStakeholderId": "governance-specialist",
              "title": "Responsable gouvernance",
              "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-designer",
              "sourceKey": "api-designer",
              "sourceStakeholderId": "api-designer",
              "title": "Designer API",
              "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "process-owner",
              "sourceKey": "process-owner",
              "sourceStakeholderId": "process-owner",
              "title": "Responsable de processus",
              "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "automation-engineer",
              "sourceKey": "automation-engineer",
              "sourceStakeholderId": "automation-engineer",
              "title": "Ingénieur automatisation",
              "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            }
          ],
          "evidence": [
            "audit-report",
            "compliance-report",
            "security-report",
            "test-report"
          ]
        },
        {
          "id": "scalable-infrastructure",
          "slug": "method/scalable-infrastructure",
          "icon": "cloud-done-outline",
          "title": "Infrastructure évolutive - Créer des API sur une base solide",
          "description": "Veillez à ce que votre infrastructure API puisse évoluer pour répondre à la demande croissante et prendre en charge la haute disponibilité.",
          "whyItMatters": "Les API doivent être construites sur une infrastructure robuste capable de gérer un trafic croissant et d'assurer une haute disponibilité. Cette station fournit des lignes directrices pour la conception et la mise en œuvre d'une infrastructure évolutive qui prend en charge la croissance et les performances des API.",
          "applyInWork": "Fournir des lignes directrices pour la conception de l'infrastructure, des modèles \"cloud-native\" et des outils de surveillance. Veiller à ce que les équipes mettent en œuvre une infrastructure évolutive capable de s'adapter à l'évolution de la demande et de prendre en charge les performances de l'API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Infrastructure API évolutive et résiliente",
            "Haute disponibilité et performance sous charge",
            "Des infrastructures conçues pour la croissance future",
            "Réduction des temps d'arrêt et amélioration de l'expérience des utilisateurs"
          ],
          "steps": [
            {
              "text": "Concevoir une infrastructure d'API évolutive et résiliente, en utilisant des modèles et des technologies \"cloud-native\".",
              "resourceId": "scalable-infrastructure-best-practices",
              "resourceTitle": "Meilleures pratiques en matière d'infrastructure évolutive",
              "canvasId": null
            },
            {
              "text": "Mettre en œuvre l'équilibrage des charges, la mise en cache et d'autres techniques pour garantir une disponibilité et des performances élevées. Recueillir les besoins en infrastructure des équipes API à l'aide de Capacity Canvas.",
              "resourceId": "capacityCanvas",
              "resourceTitle": "Capacity Canvas",
              "canvasId": "capacityCanvas"
            },
            {
              "text": "Contrôler les performances et la capacité de l'infrastructure pour s'assurer qu'elle peut répondre à une demande croissante.",
              "resourceId": "scalable-infrastructure-best-practices",
              "resourceTitle": "Meilleures pratiques en matière d'infrastructure évolutive",
              "canvasId": null
            }
          ],
          "questions": [
            "Concevoir une infrastructure d'API évolutive et résiliente, en utilisant des modèles et des technologies \"cloud-native\".",
            "Mettre en œuvre l'équilibrage des charges, la mise en cache et d'autres techniques pour garantir une disponibilité et des performances élevées. Recueillir les besoins en infrastructure des équipes API à l'aide de Capacity Canvas.",
            "Contrôler les performances et la capacité de l'infrastructure pour s'assurer qu'elle peut répondre à une demande croissante.",
            "Fournir des lignes directrices pour la conception de l'infrastructure, des modèles \"cloud-native\" et des outils de surveillance. Veiller à ce que les équipes mettent en œuvre une infrastructure évolutive capable de s'adapter à l'évolution de la demande et de prendre en charge les performances de l'API.",
            "Les API doivent être construites sur une infrastructure robuste capable de gérer un trafic croissant et d'assurer une haute disponibilité. Cette station fournit des lignes directrices pour la conception et la mise en œuvre d'une infrastructure évolutive qui prend en charge la croissance et les performances des API."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-publishing",
          "slug": "method/api-publishing",
          "icon": "deployed-code-outline",
          "title": "Publication & enablement",
          "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support.",
          "whyItMatters": "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie.",
          "applyInWork": "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
          "group": "Stations centrales du cycle de vie des capacités",
          "lifecycleStage": "publishing",
          "outcomes": [
            "Une capacité découvrable et utilisable",
            "Des processus clairs d'intégration et d'enregistrement de l'API",
            "Documentation, modèles de sécurité et politiques disponibles",
            "Des API prêtes pour l'échelle et la gouvernance"
          ],
          "steps": [
            {
              "text": "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
              "resourceId": "apiops-CI-CD-for-apis",
              "resourceTitle": "APIOps CI/CD pour les API",
              "canvasId": null
            },
            {
              "text": "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
              "resourceId": "api-onboarding-best-practices",
              "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
              "canvasId": null
            },
            {
              "text": "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
              "resourceId": "api-audit-checklist",
              "resourceTitle": "Liste de contrôle de l'audit de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
            "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
            "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
            "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
            "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie."
          ],
          "criteria": [
            "audit-passed",
            "audit-reports-shared",
            "api-ready-for-publishing",
            "api-documentation-ready"
          ],
          "criteriaDetails": [
            {
              "id": "audit-passed",
              "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
              "description": "The API passes compliance, security, and audit checks."
            },
            {
              "id": "audit-reports-shared",
              "title": "Les résultats d'audit et les décisions de correction sont partagés avec les parties prenantes concernées.",
              "description": "Audit findings and remediation decisions are shared with the relevant stakeholders."
            },
            {
              "id": "api-ready-for-publishing",
              "title": "La capacité est prête à être publiée ou mise à disposition via le mécanisme de livraison choisi.",
              "description": "The API is ready to be deployed and exposed through the intended gateways and environments."
            },
            {
              "id": "api-documentation-ready",
              "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
              "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
            }
          ],
          "stakeholders": [
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "partner-specialist",
              "sourceKey": "partner-specialist",
              "sourceStakeholderId": "partner-specialist",
              "title": "Gestionnaire de partenaires ou de fournisseurs",
              "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "process-owner",
              "sourceKey": "process-owner",
              "sourceStakeholderId": "process-owner",
              "title": "Responsable de processus",
              "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-devrel-specialist",
              "sourceKey": "api-devrel-specialist",
              "sourceStakeholderId": "api-devrel-specialist",
              "title": "Responsable Documentation & DevRel",
              "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "automation-engineer",
              "sourceKey": "automation-engineer",
              "sourceStakeholderId": "automation-engineer",
              "title": "Ingénieur automatisation",
              "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            }
          ],
          "evidence": [
            "gateway-config",
            "developer-portal",
            "documentation",
            "release-record"
          ]
        },
        {
          "id": "legal-and-compliance",
          "slug": "method/legal-and-compliance",
          "icon": "gavel-rounded",
          "title": "Juridique et conformité - S'assurer que les API respectent les normes réglementaires",
          "description": "Veillez à ce que les API soient conformes aux exigences légales et réglementaires, afin de protéger votre organisation et vos utilisateurs.",
          "whyItMatters": "Les API doivent respecter les normes légales et réglementaires afin de protéger votre organisation et vos utilisateurs. Cette station fournit des outils et des lignes directrices pour s'assurer que les API respectent les exigences de conformité, réduisent les risques juridiques et garantissent la protection des données.",
          "applyInWork": "Fournir des cadres juridiques et de conformité, des listes de contrôle et des outils pour garantir la conformité des API. Veiller à ce que les équipes comprennent et mettent en œuvre les exigences juridiques dans la conception, le développement et la publication des API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "API conformes aux normes légales et réglementaires",
            "Respect des exigences en matière de protection des données et de la vie privée",
            "Risques juridiques identifiés et atténués",
            "Documentation claire des mesures de conformité"
          ],
          "steps": [
            {
              "text": "Identifier les exigences légales et réglementaires qui s'appliquent à vos API, telles que les normes de protection des données, de confidentialité et de sécurité.",
              "resourceId": "api-compliance-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de conformité de l'API",
              "canvasId": null
            },
            {
              "text": "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
              "resourceId": "api-compliance-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de conformité de l'API",
              "canvasId": null
            },
            {
              "text": "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux utilisateurs.",
              "resourceId": "api-compliance-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de conformité de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Identifier les exigences légales et réglementaires qui s'appliquent à vos API, telles que les normes de protection des données, de confidentialité et de sécurité.",
            "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
            "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux utilisateurs.",
            "Fournir des cadres juridiques et de conformité, des listes de contrôle et des outils pour garantir la conformité des API. Veiller à ce que les équipes comprennent et mettent en œuvre les exigences juridiques dans la conception, le développement et la publication des API.",
            "Les API doivent respecter les normes légales et réglementaires afin de protéger votre organisation et vos utilisateurs. Cette station fournit des outils et des lignes directrices pour s'assurer que les API respectent les exigences de conformité, réduisent les risques juridiques et garantissent la protection des données."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "monitoring-and-improving",
          "slug": "method/monitoring-and-improving",
          "icon": "analytics-outline",
          "title": "Suivi & amélioration",
          "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication.",
          "whyItMatters": "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent.",
          "applyInWork": "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
          "group": "Stations centrales du cycle de vie des capacités",
          "lifecycleStage": "improving",
          "outcomes": [
            "Santé et contribution de valeur de la capacité mesurées",
            "Boucles de rétroaction des développeurs en place",
            "Questions identifiées et traitées en permanence",
            "Itération de l'API alignée sur les besoins des utilisateurs"
          ],
          "steps": [
            {
              "text": "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
              "resourceId": "api-metrics-and-analytics",
              "resourceTitle": "Mesures et analyses de l'API",
              "canvasId": null
            },
            {
              "text": "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
              "resourceId": "api-community-engagement-strategies",
              "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
              "canvasId": null
            },
            {
              "text": "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
              "resourceId": "apiops-CI-CD-for-apis",
              "resourceTitle": "APIOps CI/CD pour les API",
              "canvasId": null
            }
          ],
          "questions": [
            "Définissez des métriques d'utilisation, fiabilité, qualité des données, coût, adoption et valeur utilisateur.",
            "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API.",
            "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue.",
            "Utilisez des métriques, analyses et pratiques de feedback pour améliorer continuellement la capacité.",
            "Les capacités ont besoin de retours continus pour rester fiables, utiles, économiquement pertinentes et réutilisables lorsque les utilisateurs, systèmes, données et plateformes évoluent."
          ],
          "criteria": [
            "api-documentation-ready",
            "consumer-support-ready",
            "legal-compliance-clear"
          ],
          "criteriaDetails": [
            {
              "id": "api-documentation-ready",
              "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
              "description": "Consumer-facing API documentation is complete enough for publishing and onboarding."
            },
            {
              "id": "consumer-support-ready",
              "title": "Les processus d'onboarding, de support et de communication sont prêts pour les utilisateurs.",
              "description": "Registration, support, and communication processes are ready for API consumers."
            },
            {
              "id": "legal-compliance-clear",
              "title": "Les exigences juridiques, de confidentialité et de conformité liées à la publication ou à la mise à disposition sont définies et comprises.",
              "description": "Legal, privacy, and compliance requirements for publishing are defined and understood."
            }
          ],
          "stakeholders": [
            {
              "id": "integration-architect",
              "sourceKey": "integration-architect",
              "sourceStakeholderId": "integration-architect",
              "title": "Architecte d'intégration",
              "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "api-product-owner",
              "sourceKey": "api-product-owner",
              "sourceStakeholderId": "api-product-owner",
              "title": "Propriétaire du produit API",
              "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "capability-owner",
              "sourceKey": "capability-owner",
              "sourceStakeholderId": "capability-owner",
              "title": "Responsable de capacité",
              "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "automation-owner",
              "sourceKey": "automation-owner",
              "sourceStakeholderId": "automation-owner",
              "title": "Responsable de l'automatisation",
              "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
              "involvement": "lead",
              "responsibilities": []
            },
            {
              "id": "automation-engineer",
              "sourceKey": "automation-engineer",
              "sourceStakeholderId": "automation-engineer",
              "title": "Ingénieur automatisation",
              "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-engineer",
              "sourceKey": "api-engineer",
              "sourceStakeholderId": "api-engineer",
              "title": "Ingénieur de livraison",
              "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-consumer-specialist",
              "sourceKey": "api-consumer-specialist",
              "sourceStakeholderId": "api-consumer-specialist",
              "title": "Représentant utilisateur API",
              "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "platform-owner",
              "sourceKey": "platform-owner",
              "sourceStakeholderId": "platform-owner",
              "title": "Responsable de plateforme",
              "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "process-owner",
              "sourceKey": "process-owner",
              "sourceStakeholderId": "process-owner",
              "title": "Responsable de processus",
              "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "api-devrel-specialist",
              "sourceKey": "api-devrel-specialist",
              "sourceStakeholderId": "api-devrel-specialist",
              "title": "Responsable Documentation & DevRel",
              "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "business-owner",
              "sourceKey": "business-owner",
              "sourceStakeholderId": "business-owner",
              "title": "Responsable métier",
              "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "operations-specialist",
              "sourceKey": "operations-specialist",
              "sourceStakeholderId": "operations-specialist",
              "title": "Responsable support et opérations",
              "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
              "involvement": "core",
              "responsibilities": []
            },
            {
              "id": "platform-architect",
              "sourceKey": "platform-architect",
              "sourceStakeholderId": "platform-architect",
              "title": "Architecte de la plateforme",
              "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "domain-specialist",
              "sourceKey": "domain-specialist",
              "sourceStakeholderId": "domain-specialist",
              "title": "Expert du domaine",
              "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "compliance-specialist",
              "sourceKey": "compliance-specialist",
              "sourceStakeholderId": "compliance-specialist",
              "title": "Spécialiste en conformité et juridique",
              "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
              "involvement": "consulted",
              "responsibilities": []
            },
            {
              "id": "security-specialist",
              "sourceKey": "security-specialist",
              "sourceStakeholderId": "security-specialist",
              "title": "Spécialiste en sécurité",
              "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
              "involvement": "consulted",
              "responsibilities": []
            }
          ],
          "evidence": [
            "metrics",
            "consumer-feedback",
            "incident-report",
            "roadmap"
          ]
        },
        {
          "id": "security-and-privacy",
          "slug": "method/security-and-privacy",
          "icon": "cloud-lock-outline",
          "title": "Sécurité et confidentialité - Protégez vos API et vos utilisateurs",
          "description": "Mettre en œuvre des mesures de sécurité et de confidentialité pour protéger les API et les données des utilisateurs contre les menaces et les violations.",
          "whyItMatters": "Les API sont vulnérables aux menaces de sécurité et aux violations de données. Cette station fournit des lignes directrices pour la mise en œuvre de mesures de sécurité et de confidentialité qui protègent les API et les données des utilisateurs, garantissant ainsi la confiance et la conformité.",
          "applyInWork": "Fournir des cadres de sécurité, des outils et des meilleures pratiques pour la sécurité et la confidentialité des API. Veiller à ce que les équipes mettent en œuvre des mesures de sécurité tout au long du cycle de vie de l'API, de la conception à la publication et à la surveillance.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "API sécurisées contre les menaces et les vulnérabilités",
            "Les données des utilisateurs sont protégées par des mesures de protection de la vie privée",
            "Mise en œuvre des meilleures pratiques de sécurité dans la conception et le développement des API",
            "Respect des normes et réglementations en matière de sécurité"
          ],
          "steps": [
            {
              "text": "Mettre en œuvre des mesures de sécurité telles que l'authentification, l'autorisation, le cryptage et la limitation du débit pour protéger les API contre les menaces.",
              "resourceId": "api-security-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de sécurité des API",
              "canvasId": null
            },
            {
              "text": "Garantir la confidentialité des données des utilisateurs en mettant en œuvre des mesures de protection des données, telles que l'anonymisation et les contrôles d'accès.",
              "resourceId": "data-privacy-guidelines",
              "resourceTitle": "Lignes directrices sur la protection des données",
              "canvasId": null
            },
            {
              "text": "Mener régulièrement des audits de sécurité et des évaluations de la vulnérabilité afin d'identifier et d'atténuer les risques.",
              "resourceId": "",
              "resourceTitle": "",
              "canvasId": null
            }
          ],
          "questions": [
            "Mettre en œuvre des mesures de sécurité telles que l'authentification, l'autorisation, le cryptage et la limitation du débit pour protéger les API contre les menaces.",
            "Garantir la confidentialité des données des utilisateurs en mettant en œuvre des mesures de protection des données, telles que l'anonymisation et les contrôles d'accès.",
            "Mener régulièrement des audits de sécurité et des évaluations de la vulnérabilité afin d'identifier et d'atténuer les risques.",
            "Fournir des cadres de sécurité, des outils et des meilleures pratiques pour la sécurité et la confidentialité des API. Veiller à ce que les équipes mettent en œuvre des mesures de sécurité tout au long du cycle de vie de l'API, de la conception à la publication et à la surveillance.",
            "Les API sont vulnérables aux menaces de sécurité et aux violations de données. Cette station fournit des lignes directrices pour la mise en œuvre de mesures de sécurité et de confidentialité qui protègent les API et les données des utilisateurs, garantissant ainsi la confiance et la conformité."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "design-standards",
          "slug": "method/design-standards",
          "icon": "design-services-outline",
          "title": "Normes de conception - Garantir une conception cohérente et de haute qualité de l'API",
          "description": "Établir des normes et des lignes directrices en matière de conception afin de garantir une conception cohérente et de haute qualité de l'API dans l'ensemble de l'organisation.",
          "whyItMatters": "Une conception cohérente et de haute qualité des API est essentielle pour la convivialité, la maintenabilité et l'évolutivité. Cette station fournit des normes de conception et des lignes directrices qui aident les équipes à créer des API faciles à utiliser, à comprendre et à maintenir.",
          "applyInWork": "Fournir une documentation sur les normes de conception, les composants réutilisables et les processus de révision de la conception. Veiller à ce que les équipes respectent les normes de conception et procèdent à des révisions régulières afin de maintenir une conception d'API de haute qualité.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Conception cohérente de l'API dans l'ensemble de l'organisation",
            "Des API de haute qualité qui répondent aux besoins des utilisateurs",
            "Modèles et composants de conception réutilisables",
            "Réduction des incohérences de conception et de la dette technique"
          ],
          "steps": [
            {
              "text": "Définir des normes et des lignes directrices pour la conception des API, y compris les conventions de dénomination, les formats de réponse et la gestion des erreurs.",
              "resourceId": "api-design-principles",
              "resourceTitle": "Principes de conception de l'API",
              "canvasId": null
            },
            {
              "text": "Créer des modèles de conception et des composants réutilisables que les équipes peuvent exploiter pour garantir la cohérence et la qualité.",
              "resourceId": "",
              "resourceTitle": "",
              "canvasId": null
            },
            {
              "text": "Procéder à des examens et à des audits de la conception afin de garantir le respect des normes de conception et d'identifier les domaines susceptibles d'être améliorés.",
              "resourceId": "api-audit-checklist",
              "resourceTitle": "Liste de contrôle de l'audit de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Définir des normes et des lignes directrices pour la conception des API, y compris les conventions de dénomination, les formats de réponse et la gestion des erreurs.",
            "Créer des modèles de conception et des composants réutilisables que les équipes peuvent exploiter pour garantir la cohérence et la qualité.",
            "Procéder à des examens et à des audits de la conception afin de garantir le respect des normes de conception et d'identifier les domaines susceptibles d'être améliorés.",
            "Fournir une documentation sur les normes de conception, les composants réutilisables et les processus de révision de la conception. Veiller à ce que les équipes respectent les normes de conception et procèdent à des révisions régulières afin de maintenir une conception d'API de haute qualité.",
            "Une conception cohérente et de haute qualité des API est essentielle pour la convivialité, la maintenabilité et l'évolutivité. Cette station fournit des normes de conception et des lignes directrices qui aident les équipes à créer des API faciles à utiliser, à comprendre et à maintenir."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "vendor-management",
          "slug": "method/vendor-management",
          "icon": "handshake-outline",
          "title": "Gestion des fournisseurs - Gestion des intégrations d'API de tiers",
          "description": "Gérer efficacement les fournisseurs d'API tiers et les intégrations pour garantir la fiabilité et la conformité.",
          "whyItMatters": "Les API tierces peuvent présenter des risques et des dépendances qui ont un impact sur votre écosystème d'API. Ce station fournit des lignes directrices pour gérer les relations avec les fournisseurs, garantir la fiabilité, la conformité et l'alignement sur votre stratégie d'API.",
          "applyInWork": "Fournir des cadres de gestion des fournisseurs, des critères d'évaluation et des outils de suivi. Veiller à ce que les équipes gèrent efficacement les fournisseurs d'API tiers, en garantissant la fiabilité, la conformité et l'alignement sur les normes de l'organisation.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Mise en place de processus efficaces de gestion des fournisseurs",
            "Intégration fiable et sécurisée des API de tiers",
            "Conformité du fournisseur aux normes de l'organisation",
            "Réduction des risques liés aux dépendances avec des tiers"
          ],
          "steps": [
            {
              "text": "Mettre en place des processus de gestion des fournisseurs afin d'évaluer, d'intégrer et de contrôler les fournisseurs d'API tiers.",
              "resourceId": "vendor-management-best-practices",
              "resourceTitle": "Meilleures pratiques de gestion des fournisseurs",
              "canvasId": null
            },
            {
              "text": "Définir les critères d'évaluation des API des fournisseurs, y compris la fiabilité, la sécurité et la conformité.",
              "resourceId": "vendor-management-best-practices",
              "resourceTitle": "Meilleures pratiques de gestion des fournisseurs",
              "canvasId": null
            },
            {
              "text": "Contrôler les performances des fournisseurs et le respect des accords de niveau de service (SLA) et des normes de l'organisation.",
              "resourceId": "vendor-management-best-practices",
              "resourceTitle": "Meilleures pratiques de gestion des fournisseurs",
              "canvasId": null
            }
          ],
          "questions": [
            "Mettre en place des processus de gestion des fournisseurs afin d'évaluer, d'intégrer et de contrôler les fournisseurs d'API tiers.",
            "Définir les critères d'évaluation des API des fournisseurs, y compris la fiabilité, la sécurité et la conformité.",
            "Contrôler les performances des fournisseurs et le respect des accords de niveau de service (SLA) et des normes de l'organisation.",
            "Fournir des cadres de gestion des fournisseurs, des critères d'évaluation et des outils de suivi. Veiller à ce que les équipes gèrent efficacement les fournisseurs d'API tiers, en garantissant la fiabilité, la conformité et l'alignement sur les normes de l'organisation.",
            "Les API tierces peuvent présenter des risques et des dépendances qui ont un impact sur votre écosystème d'API. Ce station fournit des lignes directrices pour gérer les relations avec les fournisseurs, garantir la fiabilité, la conformité et l'alignement sur votre stratégie d'API."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "contract-design",
          "slug": "method/contract-design",
          "icon": "folder-code-outline",
          "title": "Conception des contrats - Définir des contrats API clairs",
          "description": "Créer des contrats d'interface clairs et bien définis qui décrivent les attentes, les responsabilités et les directives d'utilisation.",
          "whyItMatters": "Les contrats d'interface sont essentiels pour garantir la clarté et l'alignement entre les fournisseurs d'API et les utilisateurs. Cette station fournit des lignes directrices pour la conception de contrats d'interface clairs, complets et faciles à comprendre.",
          "applyInWork": "Fournir des modèles de conception de contrats, des formats normalisés et des processus d'examen. Veiller à ce que les équipes créent des contrats d'interface clairs et bien définis qui décrivent les attentes, les responsabilités et les directives d'utilisation.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Contrats d'interface clairs définis pour chaque API",
            "Attentes et responsabilités des fournisseurs d'API et des utilisateurs",
            "Directives d'utilisation et bonnes pratiques documentées",
            "Réduction des malentendus et des litiges concernant l'utilisation de l'API"
          ],
          "steps": [
            {
              "text": "Définir des contrats d'interface qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
              "resourceId": "contract-first-design",
              "resourceTitle": "Contrat de première conception",
              "canvasId": null
            },
            {
              "text": "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'interface lisibles par machine, faciles à partager et à valider.",
              "resourceId": "contract-first-design",
              "resourceTitle": "Contrat de première conception",
              "canvasId": null
            },
            {
              "text": "Veiller à ce que les contrats API soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté.",
              "resourceId": "api-audit-checklist",
              "resourceTitle": "Liste de contrôle de l'audit de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Définir des contrats d'interface qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
            "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'interface lisibles par machine, faciles à partager et à valider.",
            "Veiller à ce que les contrats API soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté.",
            "Fournir des modèles de conception de contrats, des formats normalisés et des processus d'examen. Veiller à ce que les équipes créent des contrats d'interface clairs et bien définis qui décrivent les attentes, les responsabilités et les directives d'utilisation.",
            "Les contrats d'interface sont essentiels pour garantir la clarté et l'alignement entre les fournisseurs d'API et les utilisateurs. Cette station fournit des lignes directrices pour la conception de contrats d'interface clairs, complets et faciles à comprendre."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "development",
          "slug": "method/development",
          "icon": "deployed-code-outline",
          "title": "Développement - Construire des API avec les meilleures pratiques",
          "description": "Mettre en œuvre des API en utilisant les meilleures pratiques et les meilleurs cadres afin de garantir la qualité, la maintenabilité et l'évolutivité.",
          "whyItMatters": "Le développement de l'API est une phase critique qui détermine la qualité et la fiabilité de l'API. Cette station fournit les meilleures pratiques et les cadres pour le développement d'API, garantissant que les API sont construites selon des normes élevées et qu'elles peuvent être maintenues et mises à l'échelle efficacement.",
          "applyInWork": "Fournir des frameworks de développement, des bibliothèques et des normes de codage pour la mise en œuvre de l'API. Veiller à ce que les équipes suivent les meilleures pratiques et effectuent des révisions de code afin de maintenir un développement d'API de haute qualité.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "API développées à l'aide des meilleures pratiques et des meilleurs cadres",
            "Des API de haute qualité, faciles à entretenir et évolutives",
            "Respect des normes et pratiques de codage cohérentes",
            "Réduction du temps de développement et de la dette technique"
          ],
          "steps": [
            {
              "text": "Utiliser des cadres et des bibliothèques établis pour mettre en œuvre les API, en veillant à ce qu'elles soient réutilisables et faciles à entretenir.",
              "resourceId": "api-development-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de développement d'API",
              "canvasId": null
            },
            {
              "text": "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'interface sont validés avant leur mise en œuvre.",
              "resourceId": "contract-first-design",
              "resourceTitle": "Contrat de première conception",
              "canvasId": null
            },
            {
              "text": "Respecter les normes de codage et les meilleures pratiques afin d'assurer un développement cohérent et de haute qualité de l'API.",
              "resourceId": "api-development-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de développement d'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Utiliser des cadres et des bibliothèques établis pour mettre en œuvre les API, en veillant à ce qu'elles soient réutilisables et faciles à entretenir.",
            "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'interface sont validés avant leur mise en œuvre.",
            "Respecter les normes de codage et les meilleures pratiques afin d'assurer un développement cohérent et de haute qualité de l'API.",
            "Fournir des frameworks de développement, des bibliothèques et des normes de codage pour la mise en œuvre de l'API. Veiller à ce que les équipes suivent les meilleures pratiques et effectuent des révisions de code afin de maintenir un développement d'API de haute qualité.",
            "Le développement de l'API est une phase critique qui détermine la qualité et la fiabilité de l'API. Cette station fournit les meilleures pratiques et les cadres pour le développement d'API, garantissant que les API sont construites selon des normes élevées et qu'elles peuvent être maintenues et mises à l'échelle efficacement."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "ci-cd",
          "slug": "method/ci-cd",
          "icon": "deployed-code-update-outline",
          "title": "CI/CD - Automatiser la livraison des API",
          "description": "Mettre en œuvre des pipelines d'intégration continue et de livraison continue (CI/CD) pour automatiser la livraison des API et garantir une qualité constante.",
          "whyItMatters": "CI/CD est essentiel pour garantir que les API sont livrées rapidement, de manière fiable et avec une qualité élevée. Cette station fournit des lignes directrices pour la mise en œuvre de pipelines CI/CD qui automatisent les processus de construction, de test et de déploiement des API.",
          "applyInWork": "Fournir des cadres, des outils et des meilleures pratiques CI/CD pour la livraison d'API. S'assurer que les équipes mettent en œuvre des pipelines automatisés qui prennent en charge l'intégration, le test et le déploiement continus des API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Mise en place de pipelines automatisés CI/CD pour la livraison d'API",
            "Qualité et traçabilité constantes dans la livraison des API",
            "Des itérations plus rapides et une réduction du temps de mise sur le marché",
            "Amélioration de la collaboration et des boucles de rétroaction dans le développement des API"
          ],
          "steps": [
            {
              "text": "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
              "resourceId": "apiops-CI-CD-for-apis",
              "resourceTitle": "APIOps CI/CD pour les API",
              "canvasId": null
            },
            {
              "text": "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
              "resourceId": "api-testing-best-practices",
              "resourceTitle": "Meilleures pratiques de test de l'API",
              "canvasId": null
            },
            {
              "text": "Mettre en œuvre des contrôles de sécurité automatisés et des validations de conformité dans le pipeline CI/CD pour s'assurer que les API sont sécurisées et conformes.",
              "resourceId": "api-security-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de sécurité des API",
              "canvasId": null
            }
          ],
          "questions": [
            "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
            "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
            "Mettre en œuvre des contrôles de sécurité automatisés et des validations de conformité dans le pipeline CI/CD pour s'assurer que les API sont sécurisées et conformes.",
            "Fournir des cadres, des outils et des meilleures pratiques CI/CD pour la livraison d'API. S'assurer que les équipes mettent en œuvre des pipelines automatisés qui prennent en charge l'intégration, le test et le déploiement continus des API.",
            "CI/CD est essentiel pour garantir que les API sont livrées rapidement, de manière fiable et avec une qualité élevée. Cette station fournit des lignes directrices pour la mise en œuvre de pipelines CI/CD qui automatisent les processus de construction, de test et de déploiement des API."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "test-automation",
          "slug": "method/test-automation",
          "icon": "deployed-code-alert-outline",
          "title": "Automatisation des tests - Assurer la qualité de l'API",
          "description": "Mettre en œuvre des pratiques de test automatisées pour garantir la qualité, la fiabilité et les performances de l'API.",
          "whyItMatters": "Les tests automatisés sont essentiels pour garantir que les API fonctionnent correctement et répondent aux normes de qualité. Cette station fournit des lignes directrices pour la mise en œuvre de pratiques de tests automatisés qui couvrent les tests fonctionnels, de sécurité et de performance pour les API.",
          "applyInWork": "Fournir des cadres d'automatisation des tests, des outils et des meilleures pratiques pour les tests d'API. Veiller à ce que les équipes mettent en œuvre des tests automatisés qui couvrent les aspects fonctionnels, de sécurité et de performance des API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Mise en œuvre de pratiques de tests automatisés pour les API",
            "Tests fonctionnels, de sécurité et de performance automatisés",
            "Réduction de l'effort de test manuel et augmentation de la couverture des tests",
            "Amélioration de la fiabilité et de la qualité de l'API"
          ],
          "steps": [
            {
              "text": "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API.",
              "resourceId": "api-testing-best-practices",
              "resourceTitle": "Meilleures pratiques de test de l'API",
              "canvasId": null
            },
            {
              "text": "Mettre en œuvre des cadres d'automatisation des tests qui prennent en charge les tests de contrat, les tests d'intégration et les tests de bout en bout.",
              "resourceId": "api-testing-best-practices",
              "resourceTitle": "Meilleures pratiques de test de l'API",
              "canvasId": null
            },
            {
              "text": "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
              "resourceId": "apiops-CI-CD-for-apis",
              "resourceTitle": "APIOps CI/CD pour les API",
              "canvasId": null
            }
          ],
          "questions": [
            "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API.",
            "Mettre en œuvre des cadres d'automatisation des tests qui prennent en charge les tests de contrat, les tests d'intégration et les tests de bout en bout.",
            "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
            "Fournir des cadres d'automatisation des tests, des outils et des meilleures pratiques pour les tests d'API. Veiller à ce que les équipes mettent en œuvre des tests automatisés qui couvrent les aspects fonctionnels, de sécurité et de performance des API.",
            "Les tests automatisés sont essentiels pour garantir que les API fonctionnent correctement et répondent aux normes de qualité. Cette station fournit des lignes directrices pour la mise en œuvre de pratiques de tests automatisés qui couvrent les tests fonctionnels, de sécurité et de performance pour les API."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "release-management",
          "slug": "method/release-management",
          "icon": "rocket-launch-outline",
          "title": "Gestion des versions - Gérer efficacement les versions de l'API",
          "description": "Mettre en œuvre des pratiques de gestion des versions afin de garantir des versions d'API fluides et contrôlées.",
          "whyItMatters": "Une gestion efficace des versions est essentielle pour garantir que les versions de l'API sont harmonieuses, contrôlées et alignées sur les besoins de l'entreprise. Cette station fournit des lignes directrices pour la gestion des versions d'API, notamment en ce qui concerne les versions, les stratégies de déploiement et les procédures de retour en arrière.",
          "applyInWork": "Fournir des cadres de gestion des versions, des lignes directrices en matière de versions et des stratégies de déploiement. Veiller à ce que les équipes suivent les meilleures pratiques pour gérer les versions de l'API, y compris les procédures de version, de déploiement et de retour en arrière.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Des versions contrôlées et fluides de l'API",
            "Définition des stratégies de version et de déploiement",
            "Procédures d'annulation établies pour les versions de l'API",
            "Réduction des risques liés aux changements d'API"
          ],
          "steps": [
            {
              "text": "Définir des stratégies de versionnement pour les API afin de gérer les changements et d'assurer la compatibilité ascendante.",
              "resourceId": "api-versioning-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de versionnement de l'API",
              "canvasId": null
            },
            {
              "text": "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
              "resourceId": "apiops-CI-CD-for-apis",
              "resourceTitle": "APIOps CI/CD pour les API",
              "canvasId": null
            },
            {
              "text": "Mettre en place des procédures de retour en arrière pour revenir rapidement sur les modifications en cas de problèmes lors des mises à jour de l'API.",
              "resourceId": "",
              "resourceTitle": "",
              "canvasId": null
            }
          ],
          "questions": [
            "Définir des stratégies de versionnement pour les API afin de gérer les changements et d'assurer la compatibilité ascendante.",
            "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
            "Mettre en place des procédures de retour en arrière pour revenir rapidement sur les modifications en cas de problèmes lors des mises à jour de l'API.",
            "Fournir des cadres de gestion des versions, des lignes directrices en matière de versions et des stratégies de déploiement. Veiller à ce que les équipes suivent les meilleures pratiques pour gérer les versions de l'API, y compris les procédures de version, de déploiement et de retour en arrière.",
            "Une gestion efficace des versions est essentielle pour garantir que les versions de l'API sont harmonieuses, contrôlées et alignées sur les besoins de l'entreprise. Cette station fournit des lignes directrices pour la gestion des versions d'API, notamment en ce qui concerne les versions, les stratégies de déploiement et les procédures de retour en arrière."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "service-agreements",
          "slug": "method/service-agreements",
          "icon": "contract-outline",
          "title": "Accords de service - Définir les niveaux de service de l'API",
          "description": "Établir des accords de service qui définissent les attentes, les niveaux de service et les responsabilités des fournisseurs et des utilisateurs.",
          "whyItMatters": "Les accords de service sont essentiels pour garantir la clarté et l'alignement entre les fournisseurs d'API et les utilisateurs. Cette station fournit des lignes directrices pour la création d'accords de service qui décrivent les attentes, les niveaux de service et les responsabilités, réduisant ainsi les malentendus et les litiges.",
          "applyInWork": "Fournir des modèles d'accords de service, des formats normalisés et des processus d'examen. Veiller à ce que les équipes créent des accords de service clairs et bien définis qui décrivent les attentes, les niveaux de service et les responsabilités des fournisseurs d'API et des utilisateurs.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Des accords de service clairs définis pour chaque API",
            "Attentes et niveaux de service définis pour les fournisseurs d'API et les utilisateurs",
            "Responsabilités et processus de soutien documentés",
            "Amélioration de la communication et de la collaboration entre les équipes API"
          ],
          "steps": [
            {
              "text": "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
              "resourceId": "service-agreement-template",
              "resourceTitle": "Modèle de contrat de service",
              "canvasId": null
            },
            {
              "text": "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
              "resourceId": "service-agreement-template",
              "resourceTitle": "Modèle de contrat de service",
              "canvasId": null
            },
            {
              "text": "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté.",
              "resourceId": "service-agreement-template",
              "resourceTitle": "Modèle de contrat de service",
              "canvasId": null
            }
          ],
          "questions": [
            "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
            "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
            "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté.",
            "Fournir des modèles d'accords de service, des formats normalisés et des processus d'examen. Veiller à ce que les équipes créent des accords de service clairs et bien définis qui décrivent les attentes, les niveaux de service et les responsabilités des fournisseurs d'API et des utilisateurs.",
            "Les accords de service sont essentiels pour garantir la clarté et l'alignement entre les fournisseurs d'API et les utilisateurs. Cette station fournit des lignes directrices pour la création d'accords de service qui décrivent les attentes, les niveaux de service et les responsabilités, réduisant ainsi les malentendus et les litiges."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-consumer-adoption",
          "slug": "method/api-consumer-adoption",
          "icon": "chart-data-outline",
          "title": "Adoption de l'API par les utilisateurs - Favoriser l'utilisation de l'API",
          "description": "Mettre en œuvre des stratégies visant à favoriser l'adoption et l'engagement des utilisateurs d'API, en veillant à ce que les API soient utilisées efficacement.",
          "whyItMatters": "Il est essentiel de favoriser l'adoption par les utilisateurs pour réaliser la valeur des API. Cette station fournit des stratégies et des meilleures pratiques pour engager les utilisateurs, en s'assurant qu'ils comprennent comment utiliser efficacement les API et en tirer de la valeur.",
          "applyInWork": "Fournir des ressources d'accueil, du matériel pédagogique et des stratégies d'engagement pour les utilisateurs. Veiller à ce que les équipes mettent en œuvre des stratégies qui favorisent l'adoption, l'engagement et la satisfaction des utilisateurs.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Mise en œuvre de stratégies d'adoption de l'API par les utilisateurs",
            "Augmentation de l'utilisation de l'API et de l'engagement",
            "Les utilisateurs sont informés des caractéristiques et des avantages de l'API",
            "Amélioration de la satisfaction et de la fidélité des utilisateurs"
          ],
          "steps": [
            {
              "text": "Développer des processus et des ressources d'intégration pour aider les utilisateurs à comprendre comment utiliser efficacement les API.",
              "resourceId": "api-onboarding-best-practices",
              "resourceTitle": "Meilleures pratiques en matière d'intégration de l'API",
              "canvasId": null
            },
            {
              "text": "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
              "resourceId": "api-community-engagement-strategies",
              "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
              "canvasId": null
            },
            {
              "text": "S'engager auprès des utilisateurs par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
              "resourceId": "api-community-engagement-strategies",
              "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Développer des processus et des ressources d'intégration pour aider les utilisateurs à comprendre comment utiliser efficacement les API.",
            "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
            "S'engager auprès des utilisateurs par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
            "Fournir des ressources d'accueil, du matériel pédagogique et des stratégies d'engagement pour les utilisateurs. Veiller à ce que les équipes mettent en œuvre des stratégies qui favorisent l'adoption, l'engagement et la satisfaction des utilisateurs.",
            "Il est essentiel de favoriser l'adoption par les utilisateurs pour réaliser la valeur des API. Cette station fournit des stratégies et des meilleures pratiques pour engager les utilisateurs, en s'assurant qu'ils comprennent comment utiliser efficacement les API et en tirer de la valeur."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-promotion",
          "slug": "method/api-promotion",
          "icon": "brand-awareness-outline",
          "title": "Promotion de l'API - Augmenter la visibilité et l'utilisation de l'API",
          "description": "Promouvoir les API afin d'accroître la visibilité, l'utilisation et l'adoption parmi les publics cibles.",
          "whyItMatters": "La promotion des API est essentielle pour accroître leur visibilité et favoriser leur utilisation. Cette station propose des stratégies et des bonnes pratiques pour promouvoir efficacement les API auprès des publics cibles, en veillant à ce qu'ils connaissent les API et comprennent leur valeur.",
          "applyInWork": "Fournir des stratégies de marketing, du matériel promotionnel et des ressources d'engagement communautaire. Veiller à ce que les équipes mettent en œuvre des stratégies efficaces de promotion de l'API qui augmentent la visibilité, l'utilisation et l'adoption parmi les publics cibles.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Mise en œuvre de stratégies de promotion de l'API",
            "Augmentation de la visibilité et de la notoriété de l'API",
            "Taux d'utilisation et d'adoption de l'API plus élevés",
            "Amélioration de l'engagement et de la satisfaction des utilisateurs"
          ],
          "steps": [
            {
              "text": "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
              "resourceId": "api-community-engagement-strategies",
              "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
              "canvasId": null
            },
            {
              "text": "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
              "resourceId": "api-community-engagement-strategies",
              "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
              "canvasId": null
            },
            {
              "text": "S'impliquer dans les communautés et les forums API pour partager les mises à jour de l'API, recueillir des commentaires et promouvoir l'utilisation de l'API.",
              "resourceId": "api-community-engagement-strategies",
              "resourceTitle": "Stratégies d'engagement de la communauté de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
            "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
            "S'impliquer dans les communautés et les forums API pour partager les mises à jour de l'API, recueillir des commentaires et promouvoir l'utilisation de l'API.",
            "Fournir des stratégies de marketing, du matériel promotionnel et des ressources d'engagement communautaire. Veiller à ce que les équipes mettent en œuvre des stratégies efficaces de promotion de l'API qui augmentent la visibilité, l'utilisation et l'adoption parmi les publics cibles.",
            "La promotion des API est essentielle pour accroître leur visibilité et favoriser leur utilisation. Cette station propose des stratégies et des bonnes pratiques pour promouvoir efficacement les API auprès des publics cibles, en veillant à ce qu'ils connaissent les API et comprennent leur valeur."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "partner-integration",
          "slug": "method/partner-integration",
          "icon": "integration-instructions-outline",
          "title": "Intégration des partenaires - Collaborer avec les partenaires",
          "description": "Faciliter l'intégration des partenaires afin d'améliorer les capacités de l'API et d'étendre la portée.",
          "whyItMatters": "Les intégrations de partenaires peuvent améliorer les capacités des API et étendre leur portée. Cette station fournit des lignes directrices pour collaborer avec des partenaires afin d'intégrer leurs API, garantissant ainsi une interopérabilité transparente et la création de valeur.",
          "applyInWork": "Fournir des cadres, des lignes directrices et des outils de suivi pour l'intégration des partenaires. Veiller à ce que les équipes collaborent efficacement avec les partenaires afin d'améliorer les capacités de l'API, d'étendre la portée et de stimuler l'innovation.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Mise en place de processus d'intégration des partenaires",
            "Capacités API améliorées grâce aux API des partenaires",
            "Élargissement de la portée et des débouchés grâce à des partenariats",
            "Amélioration de la collaboration et de l'innovation avec les partenaires"
          ],
          "steps": [
            {
              "text": "Identifier les partenaires potentiels dont les API peuvent améliorer vos capacités en matière d'API et votre proposition de valeur.",
              "resourceId": "ecosystem-vision-template",
              "resourceTitle": "Modèle de vision de l'écosystème",
              "canvasId": null
            },
            {
              "text": "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
              "resourceId": "partner-integration-guidelines",
              "resourceTitle": "Lignes directrices pour l'intégration des partenaires",
              "canvasId": null
            },
            {
              "text": "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API.",
              "resourceId": "partner-integration-guidelines",
              "resourceTitle": "Lignes directrices pour l'intégration des partenaires",
              "canvasId": null
            }
          ],
          "questions": [
            "Identifier les partenaires potentiels dont les API peuvent améliorer vos capacités en matière d'API et votre proposition de valeur.",
            "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
            "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API.",
            "Fournir des cadres, des lignes directrices et des outils de suivi pour l'intégration des partenaires. Veiller à ce que les équipes collaborent efficacement avec les partenaires afin d'améliorer les capacités de l'API, d'étendre la portée et de stimuler l'innovation.",
            "Les intégrations de partenaires peuvent améliorer les capacités des API et étendre leur portée. Cette station fournit des lignes directrices pour collaborer avec des partenaires afin d'intégrer leurs API, garantissant ainsi une interopérabilité transparente et la création de valeur."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "api-mindset",
          "slug": "method/api-mindset",
          "icon": "psychology-outline",
          "title": "L'état d'esprit de l'API - Favoriser une culture axée sur l'API",
          "description": "Cultiver un état d'esprit \"API-first\" dans l'ensemble de l'organisation afin de stimuler l'innovation et la collaboration.",
          "whyItMatters": "Un état d'esprit axé sur les API est essentiel pour favoriser l'innovation et la collaboration au sein de l'entreprise. Cette station fournit des stratégies pour cultiver une culture API-first, en veillant à ce que les API soient considérées comme des actifs stratégiques qui génèrent de la valeur pour l'entreprise.",
          "applyInWork": "Fournir des programmes de formation, des ressources et des stratégies de communication pour favoriser une culture de l'API. S'assurer que les équipes comprennent la valeur des API et sont habilitées à conduire la stratégie et les initiatives en matière d'API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Culture de la priorité aux API établie dans l'ensemble de l'organisation",
            "Amélioration de l'innovation et de la collaboration grâce aux API",
            "Des équipes API habilitées à piloter la stratégie et les initiatives en matière d'API",
            "Amélioration de l'alignement entre les objectifs de l'entreprise et le développement de l'API"
          ],
          "steps": [
            {
              "text": "Promouvoir la valeur des API en tant qu'actifs stratégiques qui génèrent de la valeur métier et de l'innovation.",
              "resourceId": "ecosystem-vision-template",
              "resourceTitle": "Modèle de vision de l'écosystème",
              "canvasId": null
            },
            {
              "text": "Encourager la collaboration interfonctionnelle entre les équipes API, les unités opérationnelles et les parties prenantes afin d'aligner les initiatives API sur les objectifs de l'entreprise.",
              "resourceId": "cross-functional-collaboration-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de collaboration interfonctionnelle",
              "canvasId": null
            },
            {
              "text": "Fournir des formations et des ressources pour aider les équipes à adopter un état d'esprit \"API-first\" et à comprendre les avantages des API.",
              "resourceId": "api-training-programs",
              "resourceTitle": "Programmes de formation de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Promouvoir la valeur des API en tant qu'actifs stratégiques qui génèrent de la valeur métier et de l'innovation.",
            "Encourager la collaboration interfonctionnelle entre les équipes API, les unités opérationnelles et les parties prenantes afin d'aligner les initiatives API sur les objectifs de l'entreprise.",
            "Fournir des formations et des ressources pour aider les équipes à adopter un état d'esprit \"API-first\" et à comprendre les avantages des API.",
            "Fournir des programmes de formation, des ressources et des stratégies de communication pour favoriser une culture de l'API. S'assurer que les équipes comprennent la valeur des API et sont habilitées à conduire la stratégie et les initiatives en matière d'API.",
            "Un état d'esprit axé sur les API est essentiel pour favoriser l'innovation et la collaboration au sein de l'entreprise. Cette station fournit des stratégies pour cultiver une culture API-first, en veillant à ce que les API soient considérées comme des actifs stratégiques qui génèrent de la valeur pour l'entreprise."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "roles-and-responsibilities",
          "slug": "method/roles-and-responsibilities",
          "icon": "manage-accounts-outline",
          "title": "Rôles et responsabilités - Définir les structures de l'équipe API",
          "description": "Définir clairement les rôles et les responsabilités des équipes chargées de l'API afin de garantir une collaboration et une responsabilisation efficaces.",
          "whyItMatters": "Des rôles et des responsabilités clairs sont essentiels pour une collaboration et une responsabilisation efficaces au sein des équipes de l'API. Cette station fournit des lignes directrices pour définir les structures, les rôles et les responsabilités des équipes, en veillant à ce que chacun comprenne sa contribution aux initiatives de l'API.",
          "applyInWork": "Fournir des lignes directrices sur la structure des équipes, des définitions des rôles et des stratégies de communication. Veiller à ce que les équipes aient des rôles et des responsabilités clairs qui favorisent une collaboration et une responsabilisation efficaces dans le cadre des initiatives de l'API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Rôles et responsabilités clairement définis pour les équipes API",
            "Collaboration efficace et responsabilité au sein des équipes API",
            "Amélioration de la communication et de l'alignement entre les membres de l'équipe",
            "Réduction de la confusion et du chevauchement des responsabilités"
          ],
          "steps": [
            {
              "text": "Définir les structures et les rôles des équipes API, y compris les propriétaires de produits API, les développeurs, les architectes et les opérations.",
              "resourceId": "api-team-structure-guidelines",
              "resourceTitle": "Lignes directrices relatives à la structure des équipes de l'API",
              "canvasId": null
            },
            {
              "text": "Établir des responsabilités claires pour chaque rôle, notamment en ce qui concerne la conception, le développement, les essais et les opérations de l'API.",
              "resourceId": "role-communication-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de communication sur les rôles",
              "canvasId": null
            },
            {
              "text": "Veiller à ce que les rôles et les responsabilités soient communiqués à tous les membres de l'équipe et aux parties prenantes afin de garantir l'alignement.",
              "resourceId": "role-communication-best-practices",
              "resourceTitle": "Meilleures pratiques en matière de communication sur les rôles",
              "canvasId": null
            }
          ],
          "questions": [
            "Définir les structures et les rôles des équipes API, y compris les propriétaires de produits API, les développeurs, les architectes et les opérations.",
            "Établir des responsabilités claires pour chaque rôle, notamment en ce qui concerne la conception, le développement, les essais et les opérations de l'API.",
            "Veiller à ce que les rôles et les responsabilités soient communiqués à tous les membres de l'équipe et aux parties prenantes afin de garantir l'alignement.",
            "Fournir des lignes directrices sur la structure des équipes, des définitions des rôles et des stratégies de communication. Veiller à ce que les équipes aient des rôles et des responsabilités clairs qui favorisent une collaboration et une responsabilisation efficaces dans le cadre des initiatives de l'API.",
            "Des rôles et des responsabilités clairs sont essentiels pour une collaboration et une responsabilisation efficaces au sein des équipes de l'API. Cette station fournit des lignes directrices pour définir les structures, les rôles et les responsabilités des équipes, en veillant à ce que chacun comprenne sa contribution aux initiatives de l'API."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "upskilling",
          "slug": "method/upskilling",
          "icon": "school-outline",
          "title": "Upkilling - Améliorer les compétences et les connaissances en matière d'API",
          "description": "Fournir des formations et des ressources pour améliorer les compétences et les connaissances en matière d'API dans l'ensemble de l'organisation.",
          "whyItMatters": "L'apprentissage continu et le perfectionnement sont essentiels pour que les équipes chargées des API soient au fait des dernières technologies, pratiques et tendances. Cette station propose des programmes de formation et des ressources pour améliorer les compétences et les connaissances en matière d'API, afin que les équipes soient en mesure de fournir des API de haute qualité.",
          "applyInWork": "Fournir des programmes de formation, des ressources et des outils d'évaluation pour améliorer les compétences et les connaissances en matière d'API. Veiller à ce que les équipes aient accès à des possibilités d'apprentissage continu qui leur permettent de stimuler l'innovation et la qualité de l'API.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Amélioration des compétences et des connaissances en matière d'API dans l'ensemble de l'organisation",
            "Compétences accrues en matière de conception, de développement et de gestion des API",
            "Amélioration de la capacité à adopter de nouvelles technologies et pratiques",
            "Des équipes responsabilisées pour favoriser l'innovation et la qualité de l'API"
          ],
          "steps": [
            {
              "text": "Identifier les compétences et les connaissances clés en matière d'API qui doivent être améliorées, telles que la conception, la sécurité et les performances des API.",
              "resourceId": "api-training-programs",
              "resourceTitle": "Programmes de formation de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Identifier les compétences et les connaissances clés en matière d'API qui doivent être améliorées, telles que la conception, la sécurité et les performances des API.",
            "Fournir des programmes de formation, des ressources et des outils d'évaluation pour améliorer les compétences et les connaissances en matière d'API. Veiller à ce que les équipes aient accès à des possibilités d'apprentissage continu qui leur permettent de stimuler l'innovation et la qualité de l'API.",
            "L'apprentissage continu et le perfectionnement sont essentiels pour que les équipes chargées des API soient au fait des dernières technologies, pratiques et tendances. Cette station propose des programmes de formation et des ressources pour améliorer les compétences et les connaissances en matière d'API, afin que les équipes soient en mesure de fournir des API de haute qualité."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "operating-guidelines",
          "slug": "method/operating-guidelines",
          "icon": "list-alt-outline",
          "title": "Lignes directrices opérationnelles - Établir une gouvernance de l'API",
          "description": "Établir des lignes directrices opérationnelles et des pratiques de gouvernance pour garantir une gestion et une qualité cohérentes de l'API.",
          "whyItMatters": "Une gouvernance efficace des API est essentielle pour garantir une gestion, une qualité et une conformité cohérentes des API. Cette station fournit des lignes directrices opérationnelles et des pratiques de gouvernance qui aident les équipes à gérer efficacement les API, en veillant à ce qu'elles s'alignent sur les normes et les meilleures pratiques de l'organisation.",
          "applyInWork": "Fournir des lignes directrices opérationnelles, des cadres de gouvernance et des outils de surveillance pour la gestion des API. Veiller à ce que les équipes suivent les pratiques établies qui favorisent une gestion cohérente de l'API, la qualité et la conformité avec les normes de l'organisation.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Mise en place de pratiques de gouvernance de l'API",
            "Gestion et qualité cohérentes de l'API dans l'ensemble de l'organisation",
            "Respect des normes et des meilleures pratiques de l'organisation",
            "Amélioration de la visibilité et du contrôle des initiatives en matière d'API"
          ],
          "steps": [
            {
              "text": "Définir des lignes directrices opérationnelles basées sur les cycles APIOps qui décrivent les processus, les normes et les meilleures pratiques pour la gestion de l'API.",
              "resourceId": "",
              "resourceTitle": "",
              "canvasId": null
            },
            {
              "text": "Mettre en place des pratiques de gouvernance qui garantissent une gestion cohérente des API, y compris des examens, des audits et des contrôles de conformité.",
              "resourceId": "",
              "resourceTitle": "",
              "canvasId": null
            },
            {
              "text": "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance.",
              "resourceId": "api-metrics-and-analytics",
              "resourceTitle": "Mesures et analyses de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Définir des lignes directrices opérationnelles basées sur les cycles APIOps qui décrivent les processus, les normes et les meilleures pratiques pour la gestion de l'API.",
            "Mettre en place des pratiques de gouvernance qui garantissent une gestion cohérente des API, y compris des examens, des audits et des contrôles de conformité.",
            "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance.",
            "Fournir des lignes directrices opérationnelles, des cadres de gouvernance et des outils de surveillance pour la gestion des API. Veiller à ce que les équipes suivent les pratiques établies qui favorisent une gestion cohérente de l'API, la qualité et la conformité avec les normes de l'organisation.",
            "Une gouvernance efficace des API est essentielle pour garantir une gestion, une qualité et une conformité cohérentes des API. Cette station fournit des lignes directrices opérationnelles et des pratiques de gouvernance qui aident les équipes à gérer efficacement les API, en veillant à ce qu'elles s'alignent sur les normes et les meilleures pratiques de l'organisation."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "portfolio-management",
          "slug": "method/portfolio-management",
          "icon": "cases-outline",
          "title": "Gestion de portefeuille - Gérer efficacement le portefeuille d'API",
          "description": "Gérer efficacement le portefeuille d'API afin de garantir l'alignement sur les objectifs de l'entreprise et les initiatives stratégiques.",
          "whyItMatters": "Une gestion efficace du portefeuille d'API est essentielle pour garantir que les API s'alignent sur les objectifs de l'entreprise et les initiatives stratégiques. Ce station fournit des lignes directrices pour la gestion du portefeuille d'API, en veillant à ce que les API soient classées par ordre de priorité, contrôlées et optimisées pour offrir une valeur maximale.",
          "applyInWork": "Fournir des cadres de gestion de portefeuille, des critères de priorisation et des outils de suivi pour la gestion des API. Veiller à ce que les équipes gèrent efficacement le portefeuille d'API, en assurant l'alignement sur les objectifs de l'entreprise, les initiatives stratégiques et la fourniture d'une valeur maximale.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Mise en place de pratiques de gestion du portefeuille API",
            "Des API alignées sur les objectifs de l'entreprise et les initiatives stratégiques",
            "Hiérarchisation et optimisation des API en fonction de leur valeur et de leur impact",
            "Amélioration de la visibilité et du contrôle du portefeuille d'API"
          ],
          "steps": [
            {
              "text": "Définir des pratiques de gestion de portefeuille qui décrivent les processus de gestion du portefeuille d'API, y compris l'établissement de priorités, le suivi et l'optimisation.",
              "resourceId": "api-portfolio-management-guidelines",
              "resourceTitle": "Lignes directrices pour la gestion du portefeuille de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Définir des pratiques de gestion de portefeuille qui décrivent les processus de gestion du portefeuille d'API, y compris l'établissement de priorités, le suivi et l'optimisation.",
            "Fournir des cadres de gestion de portefeuille, des critères de priorisation et des outils de suivi pour la gestion des API. Veiller à ce que les équipes gèrent efficacement le portefeuille d'API, en assurant l'alignement sur les objectifs de l'entreprise, les initiatives stratégiques et la fourniture d'une valeur maximale.",
            "Une gestion efficace du portefeuille d'API est essentielle pour garantir que les API s'alignent sur les objectifs de l'entreprise et les initiatives stratégiques. Ce station fournit des lignes directrices pour la gestion du portefeuille d'API, en veillant à ce que les API soient classées par ordre de priorité, contrôlées et optimisées pour offrir une valeur maximale."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        },
        {
          "id": "budget-and-resource-management",
          "slug": "method/budget-and-resource-management",
          "icon": "money-bag-outline",
          "title": "Gestion du budget et des ressources - Optimiser les investissements dans l'API",
          "description": "Optimiser la gestion du budget et des ressources pour les initiatives API afin de garantir l'efficacité des investissements et de l'affectation des ressources.",
          "whyItMatters": "Une gestion efficace du budget et des ressources est essentielle pour garantir que les initiatives en matière d'API sont bien financées et disposent des ressources nécessaires. Ce station fournit des lignes directrices pour optimiser la gestion du budget et des ressources, en veillant à ce que les initiatives en matière d'API soient alignées sur les objectifs de l'entreprise et apportent une valeur maximale.",
          "applyInWork": "Fournir des cadres de gestion budgétaire, des critères de priorisation et des outils de suivi pour les initiatives API. Veiller à ce que les équipes gèrent efficacement les budgets et les ressources, en optimisant les investissements dans le développement et la gestion des API afin d'obtenir une valeur maximale.",
          "group": "Stations de soutien",
          "lifecycleStage": "supporting",
          "outcomes": [
            "Pratiques de gestion du budget et des ressources établies pour les initiatives de l'API",
            "Affectation efficace des ressources aux initiatives de l'API",
            "Optimisation des investissements dans le développement et la gestion des API",
            "Amélioration de la visibilité financière et du contrôle des initiatives API"
          ],
          "steps": [
            {
              "text": "Définir des pratiques de gestion du budget et des ressources qui décrivent les processus de gestion des budgets et des ressources pour les initiatives de l'API.",
              "resourceId": "api-portfolio-management-guidelines",
              "resourceTitle": "Lignes directrices pour la gestion du portefeuille de l'API",
              "canvasId": null
            }
          ],
          "questions": [
            "Définir des pratiques de gestion du budget et des ressources qui décrivent les processus de gestion des budgets et des ressources pour les initiatives de l'API.",
            "Fournir des cadres de gestion budgétaire, des critères de priorisation et des outils de suivi pour les initiatives API. Veiller à ce que les équipes gèrent efficacement les budgets et les ressources, en optimisant les investissements dans le développement et la gestion des API afin d'obtenir une valeur maximale.",
            "Une gestion efficace du budget et des ressources est essentielle pour garantir que les initiatives en matière d'API sont bien financées et disposent des ressources nécessaires. Ce station fournit des lignes directrices pour optimiser la gestion du budget et des ressources, en veillant à ce que les initiatives en matière d'API soient alignées sur les objectifs de l'entreprise et apportent une valeur maximale."
          ],
          "criteria": [],
          "criteriaDetails": [],
          "stakeholders": [],
          "evidence": []
        }
      ],
      "stakeholders": [
        {
          "id": "api-architect",
          "sourceKey": "api-architect",
          "sourceStakeholderId": "api-architect",
          "title": "Architecte API",
          "description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
          "involvement": ""
        },
        {
          "id": "integration-architect",
          "sourceKey": "integration-architect",
          "sourceStakeholderId": "integration-architect",
          "title": "Architecte d'intégration",
          "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
          "involvement": ""
        },
        {
          "id": "platform-architect",
          "sourceKey": "platform-architect",
          "sourceStakeholderId": "platform-architect",
          "title": "Architecte de la plateforme",
          "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
          "involvement": ""
        },
        {
          "id": "api-designer",
          "sourceKey": "api-designer",
          "sourceStakeholderId": "api-designer",
          "title": "Designer API",
          "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
          "involvement": ""
        },
        {
          "id": "domain-specialist",
          "sourceKey": "domain-specialist",
          "sourceStakeholderId": "domain-specialist",
          "title": "Expert du domaine",
          "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
          "involvement": ""
        },
        {
          "id": "partner-specialist",
          "sourceKey": "partner-specialist",
          "sourceStakeholderId": "partner-specialist",
          "title": "Gestionnaire de partenaires ou de fournisseurs",
          "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
          "involvement": ""
        },
        {
          "id": "automation-engineer",
          "sourceKey": "automation-engineer",
          "sourceStakeholderId": "automation-engineer",
          "title": "Ingénieur automatisation",
          "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
          "involvement": ""
        },
        {
          "id": "api-engineer",
          "sourceKey": "api-engineer",
          "sourceStakeholderId": "api-engineer",
          "title": "Ingénieur de livraison",
          "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
          "involvement": ""
        },
        {
          "id": "api-product-owner",
          "sourceKey": "api-product-owner",
          "sourceStakeholderId": "api-product-owner",
          "title": "Propriétaire du produit API",
          "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
          "involvement": ""
        },
        {
          "id": "customer-specialist",
          "sourceKey": "customer-specialist",
          "sourceStakeholderId": "customer-specialist",
          "title": "Représentant client ou partenaire",
          "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
          "involvement": ""
        },
        {
          "id": "api-consumer-specialist",
          "sourceKey": "api-consumer-specialist",
          "sourceStakeholderId": "api-consumer-specialist",
          "title": "Représentant utilisateur API",
          "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
          "involvement": ""
        },
        {
          "id": "capability-owner",
          "sourceKey": "capability-owner",
          "sourceStakeholderId": "capability-owner",
          "title": "Responsable de capacité",
          "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
          "involvement": ""
        },
        {
          "id": "automation-owner",
          "sourceKey": "automation-owner",
          "sourceStakeholderId": "automation-owner",
          "title": "Responsable de l'automatisation",
          "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
          "involvement": ""
        },
        {
          "id": "platform-owner",
          "sourceKey": "platform-owner",
          "sourceStakeholderId": "platform-owner",
          "title": "Responsable de plateforme",
          "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
          "involvement": ""
        },
        {
          "id": "process-owner",
          "sourceKey": "process-owner",
          "sourceStakeholderId": "process-owner",
          "title": "Responsable de processus",
          "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
          "involvement": ""
        },
        {
          "id": "api-devrel-specialist",
          "sourceKey": "api-devrel-specialist",
          "sourceStakeholderId": "api-devrel-specialist",
          "title": "Responsable Documentation & DevRel",
          "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
          "involvement": ""
        },
        {
          "id": "api-program-owner",
          "sourceKey": "api-program-owner",
          "sourceStakeholderId": "api-program-owner",
          "title": "Responsable du programme API",
          "description": "Coordonne les pratiques du portefeuille API, l'alignement organisationnel et le développement à long terme des capacités API.",
          "involvement": ""
        },
        {
          "id": "governance-specialist",
          "sourceKey": "governance-specialist",
          "sourceStakeholderId": "governance-specialist",
          "title": "Responsable gouvernance",
          "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
          "involvement": ""
        },
        {
          "id": "business-owner",
          "sourceKey": "business-owner",
          "sourceStakeholderId": "business-owner",
          "title": "Responsable métier",
          "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
          "involvement": ""
        },
        {
          "id": "operations-specialist",
          "sourceKey": "operations-specialist",
          "sourceStakeholderId": "operations-specialist",
          "title": "Responsable support et opérations",
          "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
          "involvement": ""
        },
        {
          "id": "compliance-specialist",
          "sourceKey": "compliance-specialist",
          "sourceStakeholderId": "compliance-specialist",
          "title": "Spécialiste en conformité et juridique",
          "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
          "involvement": ""
        },
        {
          "id": "security-specialist",
          "sourceKey": "security-specialist",
          "sourceStakeholderId": "security-specialist",
          "title": "Spécialiste en sécurité",
          "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
          "involvement": ""
        }
      ],
      "routeProfiles": [
        {
          "id": "api-architect",
          "stakeholderId": "api-architect",
          "title": "Architecte API",
          "summary": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
          "stakeholder": {
            "id": "api-architect",
            "sourceKey": "api-architect",
            "sourceStakeholderId": "api-architect",
            "title": "Architecte API",
            "description": "Responsable de l'architecture API, des principes de conception et de la qualité des contrats d'interface.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            }
          ],
          "stations": [
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            }
          ],
          "canvases": [
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            }
          ],
          "decisions": [
            "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
            "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
            "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
            "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
            "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
            "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
          ],
          "outputs": [
            "Décision d'architecture et de plateforme validée",
            "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
            "Conception en vue d'une réutilisation interne et d'une évolutivité externe",
            "architecture-decision",
            "documentation",
            "platform-config",
            "metrics"
          ],
          "recommendedResources": [
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-metrics-and-analytics",
              "slug": "resources/api-metrics-and-analytics",
              "title": "Mesures et analyses de l'API",
              "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 119,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "partner-integration-guidelines",
              "slug": "resources/partner-integration-guidelines",
              "title": "Lignes directrices pour l'intégration des partenaires",
              "description": "Listes de contrôle de l'intégration et modèles de communication pour gérer les aspects techniques et juridiques des relations avec des API tierces.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 164,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices pour l'intégration des partenaires »",
                "Approche cohérente pour appliquer « Lignes directrices pour l'intégration des partenaires »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
                "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "api-architect:facilitate-station",
            "api-architect:use-resources",
            "api-architect:next-actions"
          ]
        },
        {
          "id": "integration-architect",
          "stakeholderId": "integration-architect",
          "title": "Architecte d'intégration",
          "summary": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
          "stakeholder": {
            "id": "integration-architect",
            "sourceKey": "integration-architect",
            "sourceStakeholderId": "integration-architect",
            "title": "Architecte d'intégration",
            "description": "Conçoit les approches d’intégration et les modes de mise en œuvre qui relient la capacité ou l’API aux autres systèmes.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            }
          ],
          "decisions": [
            "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
            "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
            "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
            "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
            "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
            "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
          ],
          "outputs": [
            "Décision d'architecture et de plateforme validée",
            "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
            "Conception en vue d'une réutilisation interne et d'une évolutivité externe",
            "architecture-decision",
            "documentation",
            "platform-config",
            "metrics",
            "Un contrat d'interface validé pour le mode de mise en œuvre choisi"
          ],
          "recommendedResources": [
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "contract-first-design",
              "slug": "resources/contract-first-design",
              "title": "Contrat de première conception",
              "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 146,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                "Approche cohérente pour appliquer « Contrat de première conception »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-contract-example.yaml",
              "sourceUrl": null,
              "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
              "draft": true
            },
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            }
          ],
          "promptIds": [
            "integration-architect:facilitate-station",
            "integration-architect:use-resources",
            "integration-architect:next-actions"
          ]
        },
        {
          "id": "platform-architect",
          "stakeholderId": "platform-architect",
          "title": "Architecte de la plateforme",
          "summary": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
          "stakeholder": {
            "id": "platform-architect",
            "sourceKey": "platform-architect",
            "sourceStakeholderId": "platform-architect",
            "title": "Architecte de la plateforme",
            "description": "Oriente les décisions relatives à la plateforme, à l’intégration, à l’évolutivité et à l’architecture qui déterminent comment la capacité ou l’API est construite et exploitée.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "apiBusinessModelCanvas",
              "title": "API Business Model Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Décision d'architecture et de plateforme validée"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "contract-first-design",
              "slug": "resources/contract-first-design",
              "title": "Contrat de première conception",
              "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 146,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                "Approche cohérente pour appliquer « Contrat de première conception »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-contract-example.yaml",
              "sourceUrl": null,
              "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
              "draft": true
            },
            {
              "id": "api-development-best-practices",
              "slug": "resources/api-development-best-practices",
              "title": "Meilleures pratiques en matière de développement d'API",
              "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 112,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
              "sourceUrl": null,
              "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
              "draft": true
            }
          ],
          "promptIds": [
            "platform-architect:facilitate-station",
            "platform-architect:use-resources",
            "platform-architect:next-actions"
          ]
        },
        {
          "id": "api-designer",
          "stakeholderId": "api-designer",
          "title": "Designer API",
          "summary": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
          "stakeholder": {
            "id": "api-designer",
            "sourceKey": "api-designer",
            "sourceStakeholderId": "api-designer",
            "title": "Designer API",
            "description": "Conçoit le contrat d’interface, le modèle d’interaction, la cohérence et l’utilisabilité des capacités exposées.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            }
          ],
          "canvases": [
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            }
          ],
          "decisions": [
            "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface.",
            "Utilisez le canevas d'interaction pour définir la manière dont les utilisateurs interagiront avec l'API, en veillant à ce qu'elle réponde à leurs besoins et à leurs attentes.",
            "Appliquer les modèles de conception REST pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
            "Appliquer des modèles de conception orientés événements pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
            "Appliquer les modèles de conception GraphQL pour créer des contrats d'interface cohérents et réutilisables qui sont validés avec les parties prenantes.",
            "Utiliser les principes de conception et le guide de style des API pour aligner vos décisions de conception sur des règles communes et permettre une validation d'audit cohérente."
          ],
          "outputs": [
            "Un contrat d'interface validé pour le mode de mise en œuvre choisi",
            "Contrats d'interface réutilisables et validés",
            "Conceptions alignées sur les modèles de domaine et les modèles d'interaction",
            "Traçabilité de la conception à la valeur métier",
            "spec",
            "contract",
            "design-artifact",
            "documentation"
          ],
          "recommendedResources": [
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "contract-first-design",
              "slug": "resources/contract-first-design",
              "title": "Contrat de première conception",
              "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 146,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                "Approche cohérente pour appliquer « Contrat de première conception »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-contract-example.yaml",
              "sourceUrl": null,
              "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
              "draft": true
            },
            {
              "id": "api-development-best-practices",
              "slug": "resources/api-development-best-practices",
              "title": "Meilleures pratiques en matière de développement d'API",
              "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 112,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
              "sourceUrl": null,
              "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
              "draft": true
            },
            {
              "id": "api-testing-best-practices",
              "slug": "resources/api-testing-best-practices",
              "title": "Meilleures pratiques de test de l'API",
              "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 133,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "apiops-CI-CD-for-apis",
              "slug": "resources/apiops-CI-CD-for-apis",
              "title": "APIOps CI/CD pour les API",
              "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 140,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-audit-checklist",
              "slug": "resources/api-audit-checklist",
              "title": "Liste de contrôle de l'audit de l'API",
              "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
              "category": "checklist",
              "icon": "check-box-outline",
              "order": 13,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-audit-checklist.json",
              "sourceUrl": null,
              "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
              "draft": false
            },
            {
              "id": "api-compliance-best-practices",
              "slug": "resources/api-compliance-best-practices",
              "title": "Meilleures pratiques en matière de conformité de l'API",
              "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 104,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
                "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
                "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "api-designer:facilitate-station",
            "api-designer:use-resources",
            "api-designer:next-actions"
          ]
        },
        {
          "id": "domain-specialist",
          "stakeholderId": "domain-specialist",
          "title": "Expert du domaine",
          "summary": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
          "stakeholder": {
            "id": "domain-specialist",
            "sourceKey": "domain-specialist",
            "sourceStakeholderId": "domain-specialist",
            "title": "Expert du domaine",
            "description": "Apporte une connaissance approfondie du domaine métier, des concepts, des règles et des contraintes que la capacité ou l’interface doit refléter.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "apiBusinessModelCanvas",
              "title": "API Business Model Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Exigences utilisateurs et attentes d'onboarding explicites"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "contract-first-design",
              "slug": "resources/contract-first-design",
              "title": "Contrat de première conception",
              "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 146,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                "Approche cohérente pour appliquer « Contrat de première conception »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-contract-example.yaml",
              "sourceUrl": null,
              "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
              "draft": true
            },
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            }
          ],
          "promptIds": [
            "domain-specialist:facilitate-station",
            "domain-specialist:use-resources",
            "domain-specialist:next-actions"
          ]
        },
        {
          "id": "partner-specialist",
          "stakeholderId": "partner-specialist",
          "title": "Gestionnaire de partenaires ou de fournisseurs",
          "summary": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
          "stakeholder": {
            "id": "partner-specialist",
            "sourceKey": "partner-specialist",
            "sourceStakeholderId": "partner-specialist",
            "title": "Gestionnaire de partenaires ou de fournisseurs",
            "description": "Coordonne les relations avec les partenaires, fournisseurs ou prestataires externes qui influencent la stratégie et la mise en œuvre de la capacité ou de l’API.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            }
          ],
          "stations": [
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            }
          ],
          "decisions": [
            "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser.",
            "Documenter la manière dont les utilisateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement.",
            "Veiller à ce que les modèles de sécurité, la configuration de la passerelle et les termes juridiques soient clairs et accessibles aux utilisateurs.",
            "Publiez la responsabilité, la documentation, l'onboarding, les contacts support, les attentes de service, le statut de cycle de vie et les chemins d'accès.",
            "Une capacité réutilisable ne crée de la valeur que si les utilisateurs peuvent la trouver, comprendre le contrat d'interface et les attentes de service, demander l'accès et connaître le support ainsi que la responsabilité du cycle de vie.",
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision."
          ],
          "outputs": [
            "Une capacité découvrable et utilisable",
            "Des processus clairs d'intégration et d'enregistrement de l'API",
            "Documentation, modèles de sécurité et politiques disponibles",
            "Des API prêtes pour l'échelle et la gouvernance",
            "gateway-config",
            "developer-portal",
            "documentation",
            "release-record"
          ],
          "recommendedResources": [
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "service-agreement-template",
              "slug": "resources/service-agreement-template",
              "title": "Modèle de contrat de service",
              "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 172,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
                "Approche cohérente pour appliquer « Modèle de contrat de service »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
                "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
                "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-development-best-practices",
              "slug": "resources/api-development-best-practices",
              "title": "Meilleures pratiques en matière de développement d'API",
              "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 112,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
              "sourceUrl": null,
              "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
              "draft": true
            },
            {
              "id": "api-testing-best-practices",
              "slug": "resources/api-testing-best-practices",
              "title": "Meilleures pratiques de test de l'API",
              "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 133,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "apiops-CI-CD-for-apis",
              "slug": "resources/apiops-CI-CD-for-apis",
              "title": "APIOps CI/CD pour les API",
              "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 140,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "partner-specialist:facilitate-station",
            "partner-specialist:use-resources",
            "partner-specialist:next-actions"
          ]
        },
        {
          "id": "automation-engineer",
          "stakeholderId": "automation-engineer",
          "title": "Ingénieur automatisation",
          "summary": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
          "stakeholder": {
            "id": "automation-engineer",
            "sourceKey": "automation-engineer",
            "sourceStakeholderId": "automation-engineer",
            "title": "Ingénieur automatisation",
            "description": "Met en œuvre, teste, intègre et exploite les solutions d’automatisation et les workflows associés.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Décision d'architecture et de plateforme validée"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "automation-operational-ownership-guide",
              "slug": "resources/automation-operational-ownership-guide",
              "title": "Guide de responsabilité opérationnelle",
              "description": "Guide pour définir responsabilité, runbooks, supervision, support, suivi, contrôle des changements et amélioration continue.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 185,
              "outcomes": [
                "Modèle opérationnel clair",
                "Responsabilités de propriété, support et escalade attribuées",
                "Pratiques de suivi et changement prêtes pour exploitation"
              ],
              "steps": [
                "Définissez les responsables métier, techniques et opérationnels.",
                "Documentez runbooks, support, signaux de suivi, attentes de service et escalades.",
                "Définissez le contrôle des changements pour workflows, plateforme et règles."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "process-workflow-design-guide",
              "slug": "resources/process-workflow-design-guide",
              "title": "Guide de conception des processus et workflows",
              "description": "Guide pour modéliser étapes, rôles, transferts, décisions, états, entrées, sorties et exceptions d’un workflow automatisé.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 181,
              "outcomes": [
                "Conception claire du workflow automatisé",
                "Étapes et transferts documentés avant mise en œuvre",
                "États, entrées, sorties et exceptions compris"
              ],
              "steps": [
                "Cartographiez le processus actuel et cible, avec les responsabilités humaines et système.",
                "Identifiez déclencheurs, états, décisions, données, sorties et critères de fin.",
                "Documentez les transferts entre utilisateurs, systèmes, opérations et support.",
                "Confirmez les étapes automatisées et celles nécessitant un jugement humain."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "decision-business-rules-guide",
              "slug": "resources/decision-business-rules-guide",
              "title": "Guide des décisions et règles métier",
              "description": "Guide pour capturer règles, seuils, décisions, validations, critères d’éligibilité et responsabilités.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 182,
              "outcomes": [
                "Décisions et règles métier explicites",
                "Règles et seuils documentés avec leurs responsables",
                "Décisions traçables aux politiques, processus ou objectifs métier"
              ],
              "steps": [
                "Listez les décisions que l’automatisation doit prendre ou soutenir.",
                "Documentez conditions, seuils, exceptions, validations et escalades.",
                "Identifiez les responsables et la gouvernance des changements."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "automation-engineer:facilitate-station",
            "automation-engineer:use-resources",
            "automation-engineer:next-actions"
          ]
        },
        {
          "id": "api-engineer",
          "stakeholderId": "api-engineer",
          "title": "Ingénieur de livraison",
          "summary": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
          "stakeholder": {
            "id": "api-engineer",
            "sourceKey": "api-engineer",
            "sourceStakeholderId": "api-engineer",
            "title": "Ingénieur de livraison",
            "description": "Assume la responsabilité de la mise en œuvre, de l’automatisation, des tests et du flux de publication nécessaires pour livrer la capacité, l’API ou l’automatisation de manière fiable.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            }
          ],
          "decisions": [
            "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis.",
            "Construisez l'implémentation de l'API à partir du contrat validé en utilisant des frameworks, des bibliothèques et des normes d'équipe établis.",
            "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
            "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
            "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
            "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité."
          ],
          "outputs": [
            "Une capacité livrée conformément au contrat d'interface validé",
            "Pipelines CI/CD fiables et automatisés",
            "Tests fonctionnels et non fonctionnels intégrés",
            "Pipelines de livraison sécurisés et conformes",
            "implementation",
            "pipeline-config",
            "test-report",
            "security-report"
          ],
          "recommendedResources": [
            {
              "id": "api-development-best-practices",
              "slug": "resources/api-development-best-practices",
              "title": "Meilleures pratiques en matière de développement d'API",
              "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 112,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
              "sourceUrl": null,
              "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
              "draft": true
            },
            {
              "id": "api-testing-best-practices",
              "slug": "resources/api-testing-best-practices",
              "title": "Meilleures pratiques de test de l'API",
              "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 133,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "apiops-CI-CD-for-apis",
              "slug": "resources/apiops-CI-CD-for-apis",
              "title": "APIOps CI/CD pour les API",
              "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 140,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-audit-checklist",
              "slug": "resources/api-audit-checklist",
              "title": "Liste de contrôle de l'audit de l'API",
              "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
              "category": "checklist",
              "icon": "check-box-outline",
              "order": 13,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-audit-checklist.json",
              "sourceUrl": null,
              "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
              "draft": false
            },
            {
              "id": "api-compliance-best-practices",
              "slug": "resources/api-compliance-best-practices",
              "title": "Meilleures pratiques en matière de conformité de l'API",
              "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 104,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
                "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
                "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            }
          ],
          "promptIds": [
            "api-engineer:facilitate-station",
            "api-engineer:use-resources",
            "api-engineer:next-actions"
          ]
        },
        {
          "id": "api-product-owner",
          "stakeholderId": "api-product-owner",
          "title": "Propriétaire du produit API",
          "summary": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
          "stakeholder": {
            "id": "api-product-owner",
            "sourceKey": "api-product-owner",
            "sourceStakeholderId": "api-product-owner",
            "title": "Propriétaire du produit API",
            "description": "Pilote l’opportunité API, la priorisation et les décisions au niveau produit tout au long du cycle de vie.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            }
          ],
          "stations": [
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "apiBusinessModelCanvas",
              "title": "API Business Model Canvas"
            }
          ],
          "decisions": [
            "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
            "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
            "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
            "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
            "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
            "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
          ],
          "outputs": [
            "Décision d'architecture et de plateforme validée",
            "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
            "Conception en vue d'une réutilisation interne et d'une évolutivité externe",
            "architecture-decision",
            "documentation",
            "platform-config",
            "metrics",
            "Un contrat d'interface validé pour le mode de mise en œuvre choisi"
          ],
          "recommendedResources": [
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "contract-first-design",
              "slug": "resources/contract-first-design",
              "title": "Contrat de première conception",
              "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 146,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                "Approche cohérente pour appliquer « Contrat de première conception »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-contract-example.yaml",
              "sourceUrl": null,
              "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
              "draft": true
            },
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            }
          ],
          "promptIds": [
            "api-product-owner:facilitate-station",
            "api-product-owner:use-resources",
            "api-product-owner:next-actions"
          ]
        },
        {
          "id": "customer-specialist",
          "stakeholderId": "customer-specialist",
          "title": "Représentant client ou partenaire",
          "summary": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
          "stakeholder": {
            "id": "customer-specialist",
            "sourceKey": "customer-specialist",
            "sourceStakeholderId": "customer-specialist",
            "title": "Représentant client ou partenaire",
            "description": "Contribue à la perspective du client ou partenaire pour le parcours, la valeur et le modèle de collaboration.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "apiBusinessModelCanvas",
              "title": "API Business Model Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Exigences utilisateurs et attentes d'onboarding explicites"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "apiValuePropositionCanvas",
              "slug": "resources/api-value-proposition-canvas",
              "title": "API Value Proposition Canvas",
              "description": "Aligner les fonctionnalités de l'API sur les besoins des utilisateurs en établissant une correspondance entre les tâches, les douleurs et les gains et les produits de l'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2,
              "outcomes": [
                "Développement de fonctionnalités ciblées",
                "Alignement sur les besoins des utilisateurs",
                "Amélioration de la satisfaction des consommateurs d'API"
              ],
              "steps": [
                "Liste des tâches liées au parcours de l'utilisateur",
                "Identifier les caractéristiques permettant d'obtenir les gains escomptés",
                "Définir des caractéristiques permettant de relever les défis",
                "Cartographier les caractéristiques des produits de l'API"
              ],
              "canvasId": "apiValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "apiBusinessModelCanvas",
              "slug": "resources/api-business-model-canvas",
              "title": "API Business Model Canvas",
              "description": "Évaluer stratégiquement la viabilité de l'activité API en établissant une cartographie des propositions de valeur, des segments de consommateurs et des ressources clés.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3,
              "outcomes": [
                "Une stratégie commerciale claire pour les API",
                "Identification des ressources et des partenaires clés",
                "Alignement des fonctionnalités de l'API sur les objectifs de l'entreprise"
              ],
              "steps": [
                "Résumer la proposition de valeur de l'API",
                "Définir les segments de consommateurs",
                "Identifier les stratégies de relations avec les développeurs",
                "Cartographier les canaux de distribution",
                "Documentez les ressources et activités clés.",
                "Identifier les principaux partenaires et parties prenantes",
                "Mettre en évidence les avantages et les coûts"
              ],
              "canvasId": "apiBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            }
          ],
          "promptIds": [
            "customer-specialist:facilitate-station",
            "customer-specialist:use-resources",
            "customer-specialist:next-actions"
          ]
        },
        {
          "id": "api-consumer-specialist",
          "stakeholderId": "api-consumer-specialist",
          "title": "Représentant utilisateur API",
          "summary": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
          "stakeholder": {
            "id": "api-consumer-specialist",
            "sourceKey": "api-consumer-specialist",
            "sourceStakeholderId": "api-consumer-specialist",
            "title": "Représentant utilisateur API",
            "description": "Représente les besoins des développeurs, intégrateurs ou autres utilisateurs d'API qui utilisent l'API directement.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            },
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            }
          ],
          "canvases": [
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            },
            {
              "id": "apiBusinessModelCanvas",
              "title": "API Business Model Canvas"
            }
          ],
          "decisions": [
            "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
            "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
            "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
            "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
            "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur.",
            "Clarifiez les objets métier, les termes, les règles et les responsabilités avant de concevoir le contrat d'interface."
          ],
          "outputs": [
            "Exigences utilisateurs et attentes d'onboarding explicites",
            "Définir le parcours de l'expérience API",
            "Planifier l'intégration, la documentation et le retour d'information",
            "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)",
            "design-artifact",
            "documentation",
            "consumer-feedback",
            "Un contrat d'interface validé pour le mode de mise en œuvre choisi"
          ],
          "recommendedResources": [
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "contract-first-design",
              "slug": "resources/contract-first-design",
              "title": "Contrat de première conception",
              "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 146,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                "Approche cohérente pour appliquer « Contrat de première conception »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-contract-example.yaml",
              "sourceUrl": null,
              "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
              "draft": true
            },
            {
              "id": "service-agreement-template",
              "slug": "resources/service-agreement-template",
              "title": "Modèle de contrat de service",
              "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 172,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
                "Approche cohérente pour appliquer « Modèle de contrat de service »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
                "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
                "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-metrics-and-analytics",
              "slug": "resources/api-metrics-and-analytics",
              "title": "Mesures et analyses de l'API",
              "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 119,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-community-engagement-strategies",
              "slug": "resources/api-community-engagement-strategies",
              "title": "Stratégies d'engagement de la communauté de l'API",
              "description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 103,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
                "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
                "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
                "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
                "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
                "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            }
          ],
          "promptIds": [
            "api-consumer-specialist:facilitate-station",
            "api-consumer-specialist:use-resources",
            "api-consumer-specialist:next-actions"
          ]
        },
        {
          "id": "capability-owner",
          "stakeholderId": "capability-owner",
          "title": "Responsable de capacité",
          "summary": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
          "stakeholder": {
            "id": "capability-owner",
            "sourceKey": "capability-owner",
            "sourceStakeholderId": "capability-owner",
            "title": "Responsable de capacité",
            "description": "Responsable de la vision, de la valeur, des priorités, du cycle de vie et de la réutilisation de la capacité auprès des utilisateurs.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Exigences utilisateurs et attentes d'onboarding explicites"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            }
          ],
          "promptIds": [
            "capability-owner:facilitate-station",
            "capability-owner:use-resources",
            "capability-owner:next-actions"
          ]
        },
        {
          "id": "automation-owner",
          "stakeholderId": "automation-owner",
          "title": "Responsable de l'automatisation",
          "summary": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
          "stakeholder": {
            "id": "automation-owner",
            "sourceKey": "automation-owner",
            "sourceStakeholderId": "automation-owner",
            "title": "Responsable de l'automatisation",
            "description": "Responsable des objectifs, de la valeur métier, des priorités, des contrôles et des résultats du cycle de vie de l’automatisation.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Exigences utilisateurs et attentes d'onboarding explicites"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "automation-operational-ownership-guide",
              "slug": "resources/automation-operational-ownership-guide",
              "title": "Guide de responsabilité opérationnelle",
              "description": "Guide pour définir responsabilité, runbooks, supervision, support, suivi, contrôle des changements et amélioration continue.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 185,
              "outcomes": [
                "Modèle opérationnel clair",
                "Responsabilités de propriété, support et escalade attribuées",
                "Pratiques de suivi et changement prêtes pour exploitation"
              ],
              "steps": [
                "Définissez les responsables métier, techniques et opérationnels.",
                "Documentez runbooks, support, signaux de suivi, attentes de service et escalades.",
                "Définissez le contrôle des changements pour workflows, plateforme et règles."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "process-workflow-design-guide",
              "slug": "resources/process-workflow-design-guide",
              "title": "Guide de conception des processus et workflows",
              "description": "Guide pour modéliser étapes, rôles, transferts, décisions, états, entrées, sorties et exceptions d’un workflow automatisé.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 181,
              "outcomes": [
                "Conception claire du workflow automatisé",
                "Étapes et transferts documentés avant mise en œuvre",
                "États, entrées, sorties et exceptions compris"
              ],
              "steps": [
                "Cartographiez le processus actuel et cible, avec les responsabilités humaines et système.",
                "Identifiez déclencheurs, états, décisions, données, sorties et critères de fin.",
                "Documentez les transferts entre utilisateurs, systèmes, opérations et support.",
                "Confirmez les étapes automatisées et celles nécessitant un jugement humain."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "automation-owner:facilitate-station",
            "automation-owner:use-resources",
            "automation-owner:next-actions"
          ]
        },
        {
          "id": "platform-owner",
          "stakeholderId": "platform-owner",
          "title": "Responsable de plateforme",
          "summary": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
          "stakeholder": {
            "id": "platform-owner",
            "sourceKey": "platform-owner",
            "sourceStakeholderId": "platform-owner",
            "title": "Responsable de plateforme",
            "description": "Responsable des capacités de la plateforme, de la feuille de route, du modèle opérationnel et des attentes de service.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            }
          ],
          "decisions": [
            "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
            "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
            "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
            "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
            "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
            "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
          ],
          "outputs": [
            "Décision d'architecture et de plateforme validée",
            "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
            "Conception en vue d'une réutilisation interne et d'une évolutivité externe",
            "architecture-decision",
            "documentation",
            "platform-config",
            "metrics",
            "Une opportunité de capacité indépendante de la technologie"
          ],
          "recommendedResources": [
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-metrics-and-analytics",
              "slug": "resources/api-metrics-and-analytics",
              "title": "Mesures et analyses de l'API",
              "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 119,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-community-engagement-strategies",
              "slug": "resources/api-community-engagement-strategies",
              "title": "Stratégies d'engagement de la communauté de l'API",
              "description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 103,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
                "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
                "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
                "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
                "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
                "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "partner-integration-guidelines",
              "slug": "resources/partner-integration-guidelines",
              "title": "Lignes directrices pour l'intégration des partenaires",
              "description": "Listes de contrôle de l'intégration et modèles de communication pour gérer les aspects techniques et juridiques des relations avec des API tierces.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 164,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices pour l'intégration des partenaires »",
                "Approche cohérente pour appliquer « Lignes directrices pour l'intégration des partenaires »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
                "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "platform-owner:facilitate-station",
            "platform-owner:use-resources",
            "platform-owner:next-actions"
          ]
        },
        {
          "id": "process-owner",
          "stakeholderId": "process-owner",
          "title": "Responsable de processus",
          "summary": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
          "stakeholder": {
            "id": "process-owner",
            "sourceKey": "process-owner",
            "sourceStakeholderId": "process-owner",
            "title": "Responsable de processus",
            "description": "Responsable du processus métier à automatiser, y compris les objectifs, les règles, les résultats et les priorités d’amélioration.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Exigences utilisateurs et attentes d'onboarding explicites"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "process-workflow-design-guide",
              "slug": "resources/process-workflow-design-guide",
              "title": "Guide de conception des processus et workflows",
              "description": "Guide pour modéliser étapes, rôles, transferts, décisions, états, entrées, sorties et exceptions d’un workflow automatisé.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 181,
              "outcomes": [
                "Conception claire du workflow automatisé",
                "Étapes et transferts documentés avant mise en œuvre",
                "États, entrées, sorties et exceptions compris"
              ],
              "steps": [
                "Cartographiez le processus actuel et cible, avec les responsabilités humaines et système.",
                "Identifiez déclencheurs, états, décisions, données, sorties et critères de fin.",
                "Documentez les transferts entre utilisateurs, systèmes, opérations et support.",
                "Confirmez les étapes automatisées et celles nécessitant un jugement humain."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "decision-business-rules-guide",
              "slug": "resources/decision-business-rules-guide",
              "title": "Guide des décisions et règles métier",
              "description": "Guide pour capturer règles, seuils, décisions, validations, critères d’éligibilité et responsabilités.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 182,
              "outcomes": [
                "Décisions et règles métier explicites",
                "Règles et seuils documentés avec leurs responsables",
                "Décisions traçables aux politiques, processus ou objectifs métier"
              ],
              "steps": [
                "Listez les décisions que l’automatisation doit prendre ou soutenir.",
                "Documentez conditions, seuils, exceptions, validations et escalades.",
                "Identifiez les responsables et la gouvernance des changements."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "automation-trigger-handoff-exception-guide",
              "slug": "resources/automation-trigger-handoff-exception-guide",
              "title": "Guide des déclencheurs, transferts et exceptions",
              "description": "Guide pour définir déclencheurs, transferts humains, exceptions, reprises, actions compensatoires et escalades.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 183,
              "outcomes": [
                "Déclencheurs et chemins d’exception définis",
                "Transferts humains et escalades explicites",
                "Exceptions, reprises et compensations conçues avant livraison"
              ],
              "steps": [
                "Définissez événements, horaires, actions utilisateur ou états système déclencheurs.",
                "Cartographiez les transferts vers utilisateurs, opérateurs ou support.",
                "Documentez exceptions, reprises, délais et solutions de repli.",
                "Définissez alertes et seuils d’escalade."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "automation-testing-guide",
              "slug": "resources/automation-testing-guide",
              "title": "Guide de test des automatisations",
              "description": "Guide pour tester workflows, décisions, intégrations, exceptions, rollback, supervision et impact utilisateur.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 184,
              "outcomes": [
                "Comportement de l’automatisation validé",
                "Tests des workflows, règles, exceptions et intégrations définis",
                "Confiance avant publication pour les parcours automatisés et assistés"
              ],
              "steps": [
                "Créez des tests pour parcours nominaux, cas limites, exceptions, reprises et transferts.",
                "Validez règles métier et décisions avec des données représentatives.",
                "Testez rollback, reprise, observabilité et intervention manuelle.",
                "Impliquez utilisateurs et opérateurs dans les tests d’acceptation."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "automation-operational-ownership-guide",
              "slug": "resources/automation-operational-ownership-guide",
              "title": "Guide de responsabilité opérationnelle",
              "description": "Guide pour définir responsabilité, runbooks, supervision, support, suivi, contrôle des changements et amélioration continue.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 185,
              "outcomes": [
                "Modèle opérationnel clair",
                "Responsabilités de propriété, support et escalade attribuées",
                "Pratiques de suivi et changement prêtes pour exploitation"
              ],
              "steps": [
                "Définissez les responsables métier, techniques et opérationnels.",
                "Documentez runbooks, support, signaux de suivi, attentes de service et escalades.",
                "Définissez le contrôle des changements pour workflows, plateforme et règles."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "process-owner:facilitate-station",
            "process-owner:use-resources",
            "process-owner:next-actions"
          ]
        },
        {
          "id": "api-devrel-specialist",
          "stakeholderId": "api-devrel-specialist",
          "title": "Responsable Documentation & DevRel",
          "summary": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
          "stakeholder": {
            "id": "api-devrel-specialist",
            "sourceKey": "api-devrel-specialist",
            "sourceStakeholderId": "api-devrel-specialist",
            "title": "Responsable Documentation & DevRel",
            "description": "Responsable des contenus d'onboarding, de la communication avec les développeurs et de la qualité de la documentation API.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            }
          ],
          "canvases": [
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            }
          ],
          "decisions": [
            "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
            "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
            "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
            "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
            "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur.",
            "Publiez les informations de capacité dans les catalogues, portails, passerelles ou environnements appropriés afin que plusieurs utilisateurs puissent la réutiliser."
          ],
          "outputs": [
            "Exigences utilisateurs et attentes d'onboarding explicites",
            "Définir le parcours de l'expérience API",
            "Planifier l'intégration, la documentation et le retour d'information",
            "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)",
            "design-artifact",
            "documentation",
            "consumer-feedback",
            "Une capacité découvrable et utilisable"
          ],
          "recommendedResources": [
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "service-agreement-template",
              "slug": "resources/service-agreement-template",
              "title": "Modèle de contrat de service",
              "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 172,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
                "Approche cohérente pour appliquer « Modèle de contrat de service »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
                "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
                "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-metrics-and-analytics",
              "slug": "resources/api-metrics-and-analytics",
              "title": "Mesures et analyses de l'API",
              "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 119,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-community-engagement-strategies",
              "slug": "resources/api-community-engagement-strategies",
              "title": "Stratégies d'engagement de la communauté de l'API",
              "description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 103,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
                "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
                "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
                "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
                "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
                "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "contract-first-design",
              "slug": "resources/contract-first-design",
              "title": "Contrat de première conception",
              "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 146,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                "Approche cohérente pour appliquer « Contrat de première conception »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-contract-example.yaml",
              "sourceUrl": null,
              "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
              "draft": true
            },
            {
              "id": "apiValuePropositionCanvas",
              "slug": "resources/api-value-proposition-canvas",
              "title": "API Value Proposition Canvas",
              "description": "Aligner les fonctionnalités de l'API sur les besoins des utilisateurs en établissant une correspondance entre les tâches, les douleurs et les gains et les produits de l'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2,
              "outcomes": [
                "Développement de fonctionnalités ciblées",
                "Alignement sur les besoins des utilisateurs",
                "Amélioration de la satisfaction des consommateurs d'API"
              ],
              "steps": [
                "Liste des tâches liées au parcours de l'utilisateur",
                "Identifier les caractéristiques permettant d'obtenir les gains escomptés",
                "Définir des caractéristiques permettant de relever les défis",
                "Cartographier les caractéristiques des produits de l'API"
              ],
              "canvasId": "apiValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            }
          ],
          "promptIds": [
            "api-devrel-specialist:facilitate-station",
            "api-devrel-specialist:use-resources",
            "api-devrel-specialist:next-actions"
          ]
        },
        {
          "id": "governance-specialist",
          "stakeholderId": "governance-specialist",
          "title": "Responsable gouvernance",
          "summary": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
          "stakeholder": {
            "id": "governance-specialist",
            "sourceKey": "governance-specialist",
            "sourceStakeholderId": "governance-specialist",
            "title": "Responsable gouvernance",
            "description": "Représente les pratiques de revue, d'audit et de gouvernance à l'échelle de l'organisation pour la qualité et la conformité des API.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            }
          ],
          "canvases": [],
          "decisions": [
            "Utilisez des checklists, linters, tests et revues pour vérifier cohérence, standards, sécurité, performance et conformité.",
            "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes.",
            "Collaborer avec les équipes de gouvernance et les experts du domaine pour s'assurer que les API sont prêtes pour la production.",
            "Utilisez les ressources d'audit et de conformité pour vérifier que la capacité peut être publiée et réutilisée de manière contrôlée.",
            "Les capacités réutilisables créent des risques opérationnels, liés aux données, à la sécurité, à la confidentialité, à la conformité et à l'expérience utilisateur. Les revues de préparation réduisent les surprises avant la publication ou l'utilisation en production."
          ],
          "outputs": [
            "Préparation documentée pour la publication et la réutilisation",
            "Documentation claire des décisions relatives à la conception et à la mise en œuvre de l'API",
            "Sécurité, performance et conformité validées",
            "Réduction du risque de problèmes en production",
            "audit-report",
            "compliance-report",
            "security-report",
            "test-report"
          ],
          "recommendedResources": [
            {
              "id": "api-audit-checklist",
              "slug": "resources/api-audit-checklist",
              "title": "Liste de contrôle de l'audit de l'API",
              "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
              "category": "checklist",
              "icon": "check-box-outline",
              "order": 13,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-audit-checklist.json",
              "sourceUrl": null,
              "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
              "draft": false
            },
            {
              "id": "api-compliance-best-practices",
              "slug": "resources/api-compliance-best-practices",
              "title": "Meilleures pratiques en matière de conformité de l'API",
              "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 104,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
                "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
                "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "automation-readiness-checklist",
              "slug": "resources/automation-readiness-checklist",
              "title": "Checklist de préparation des automatisations",
              "description": "Checklist pour valider workflow, contrôles, risques, conformité, supervision humaine, preuves de test, rollback, opérations et préparation.",
              "category": "checklist",
              "icon": "check-box-outline",
              "order": 187,
              "outcomes": [
                "Préparation de l’automatisation documentée",
                "Écarts et mesures d’atténuation connus avant publication",
                "Preuves pour qualité, risques, conformité, supervision et approbation"
              ],
              "steps": [
                "Examinez workflow, règles métier, contrôles, accès, données et exceptions.",
                "Vérifiez preuves de test, rollback, supervision et support.",
                "Confirmez responsabilités, runbooks, suivi et contrôle des changements.",
                "Consignez les écarts, décisions et risques acceptés."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "governance-specialist:facilitate-station",
            "governance-specialist:use-resources",
            "governance-specialist:next-actions"
          ]
        },
        {
          "id": "business-owner",
          "stakeholderId": "business-owner",
          "title": "Responsable métier",
          "summary": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
          "stakeholder": {
            "id": "business-owner",
            "sourceKey": "business-owner",
            "sourceStakeholderId": "business-owner",
            "title": "Responsable métier",
            "description": "Représente les objectifs métier, le financement et les résultats attendus de l’initiative de capacité, d’API ou d’automatisation.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "apiBusinessModelCanvas",
              "title": "API Business Model Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Exigences utilisateurs et attentes d'onboarding explicites"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "service-agreement-template",
              "slug": "resources/service-agreement-template",
              "title": "Modèle de contrat de service",
              "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 172,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
                "Approche cohérente pour appliquer « Modèle de contrat de service »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
                "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
                "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "business-owner:facilitate-station",
            "business-owner:use-resources",
            "business-owner:next-actions"
          ]
        },
        {
          "id": "operations-specialist",
          "stakeholderId": "operations-specialist",
          "title": "Responsable support et opérations",
          "summary": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
          "stakeholder": {
            "id": "operations-specialist",
            "sourceKey": "operations-specialist",
            "sourceStakeholderId": "operations-specialist",
            "title": "Responsable support et opérations",
            "description": "Représente le support en production, la gestion des incidents, l’observabilité et la préparation opérationnelle pour la capacité, l’API ou l’automatisation.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            }
          ],
          "canvases": [
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            }
          ],
          "decisions": [
            "Utilisez le Consumer Experience Requirements Canvas pour documenter objectifs utilisateurs, disponibilité, fraîcheur, volumes, performance, qualité des données, sécurité, onboarding, changements, observabilité et attentes de reprise.",
            "Utilisez le canevas du parcours client pour le parcours de l'utilisateur, de la découverte et de l'évaluation à l'intégration, au dépannage et à l'utilisation continue.",
            "Utilisez le parcours ainsi obtenu pour améliorer l'intégration, la documentation, l'assistance et les boucles de rétroaction pour l'utilisateur.",
            "Utilisez les ressources d'expérience utilisateur et d'onboarding pour rendre explicites les attentes des utilisateurs et des fournisseurs.",
            "La bonne architecture dépend des objectifs des utilisateurs, des attentes d'onboarding, des niveaux de service, de la qualité des données, de la tolérance au changement, de l'observabilité, du support et des contraintes du fournisseur.",
            "Utilisez les pratiques de développement pour implémenter le contrat d'interface validé avec les frameworks, bibliothèques et standards d'équipe établis."
          ],
          "outputs": [
            "Exigences utilisateurs et attentes d'onboarding explicites",
            "Définir le parcours de l'expérience API",
            "Planifier l'intégration, la documentation et le retour d'information",
            "Améliorer l'adoption grâce à une véritable empathie + l'expérience du développeur (DX)",
            "design-artifact",
            "documentation",
            "consumer-feedback",
            "Une capacité livrée conformément au contrat d'interface validé"
          ],
          "recommendedResources": [
            {
              "id": "consumerExperienceRequirementsCanvas",
              "slug": "resources/consumer-experience-requirements-canvas",
              "title": "Consumer Experience Requirements Canvas",
              "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.2,
              "outcomes": [
                "Exigences utilisateurs et de service indépendantes de la technologie",
                "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
                "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
              ],
              "steps": [
                "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
                "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
                "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
                "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
              ],
              "canvasId": "consumerExperienceRequirementsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-onboarding-best-practices",
              "slug": "resources/api-onboarding-best-practices",
              "title": "Meilleures pratiques en matière d'intégration de l'API",
              "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 121,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
                "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
                "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-development-best-practices",
              "slug": "resources/api-development-best-practices",
              "title": "Meilleures pratiques en matière de développement d'API",
              "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 112,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
              "sourceUrl": null,
              "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
              "draft": true
            },
            {
              "id": "api-testing-best-practices",
              "slug": "resources/api-testing-best-practices",
              "title": "Meilleures pratiques de test de l'API",
              "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 133,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "apiops-CI-CD-for-apis",
              "slug": "resources/apiops-CI-CD-for-apis",
              "title": "APIOps CI/CD pour les API",
              "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 140,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-audit-checklist",
              "slug": "resources/api-audit-checklist",
              "title": "Liste de contrôle de l'audit de l'API",
              "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
              "category": "checklist",
              "icon": "check-box-outline",
              "order": 13,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-audit-checklist.json",
              "sourceUrl": null,
              "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
              "draft": false
            },
            {
              "id": "api-compliance-best-practices",
              "slug": "resources/api-compliance-best-practices",
              "title": "Meilleures pratiques en matière de conformité de l'API",
              "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 104,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
                "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
                "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "service-agreement-template",
              "slug": "resources/service-agreement-template",
              "title": "Modèle de contrat de service",
              "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 172,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
                "Approche cohérente pour appliquer « Modèle de contrat de service »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
                "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
                "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-metrics-and-analytics",
              "slug": "resources/api-metrics-and-analytics",
              "title": "Mesures et analyses de l'API",
              "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 119,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
                "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
                "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
                "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-community-engagement-strategies",
              "slug": "resources/api-community-engagement-strategies",
              "title": "Stratégies d'engagement de la communauté de l'API",
              "description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 103,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
                "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
                "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
                "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
                "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
                "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "operations-specialist:facilitate-station",
            "operations-specialist:use-resources",
            "operations-specialist:next-actions"
          ]
        },
        {
          "id": "compliance-specialist",
          "stakeholderId": "compliance-specialist",
          "title": "Spécialiste en conformité et juridique",
          "summary": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
          "stakeholder": {
            "id": "compliance-specialist",
            "sourceKey": "compliance-specialist",
            "sourceStakeholderId": "compliance-specialist",
            "title": "Spécialiste en conformité et juridique",
            "description": "Clarifie les exigences juridiques, de confidentialité, réglementaires et contractuelles qui affectent la capacité, l’API, l’interface ou l’automatisation.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            },
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "api-consumer-experience",
              "title": "Exigences utilisateurs & onboarding",
              "description": "Capturez les exigences des utilisateurs, l'onboarding, les standards, les exigences non fonctionnelles, les attentes de service, les contraintes, la sécurité, les protocoles, la fraîcheur des données, les SLA, l'observabilité, la reprise, l'adoption et les responsabilités des fournisseurs."
            }
          ],
          "canvases": [
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "consumerExperienceRequirementsCanvas",
              "title": "Consumer Experience Requirements Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "apiBusinessModelCanvas",
              "title": "API Business Model Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            }
          ],
          "decisions": [
            "Analysez le parcours client ou partenaire d'où émerge le besoin de capacité, puis identifiez les tâches, irritants, gains, entrées, sorties et points de décision.",
            "Définir les entités de base, leurs attributs et leurs relations pour créer une compréhension conceptuelle partagée à travers les parcours et éventuellement les API.",
            "Utilisez le canevas de proposition de valeur de l'API pour recenser les tâches métier prises en charge ainsi que les difficultés, les avantages et les fonctionnalités pour l'utilisateur qui façonnent les API nouvelles ou réutilisables.",
            "Définissez la valeur - pour les utilisateurs et l'entreprise - à l'aide du modèle commercial de l'API, afin de rendre votre stratégie API visuelle, partageable et facile à valider avec vos utilisateurs à la prochaine station.",
            "Utilisez des canvases de parcours, de domaine, de proposition de valeur et de modèle métier pour capturer les exigences indépendamment de la technologie et décider si la capacité doit être réutilisable.",
            "Les initiatives d'intégration et d'API passent souvent trop vite à un choix technique. Cette station maintient l'équipe concentrée sur le parcours métier, le domaine, la valeur, le potentiel de réutilisation, la responsabilité et la faisabilité avant de choisir API, événements, fichiers, flux, produits de données ou intégration directe."
          ],
          "outputs": [
            "Une opportunité de capacité indépendante de la technologie",
            "Un langage commun entre le produit, le design et la technologie",
            "Un argumentaire ou un dossier solide pour le financement/l'approbation",
            "design-artifact",
            "documentation",
            "research",
            "roadmap",
            "Décision d'architecture et de plateforme validée"
          ],
          "recommendedResources": [
            {
              "id": "customerJourneyCanvas",
              "slug": "resources/customer-journey-canvas",
              "title": "Customer Journey Canvas",
              "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 1,
              "outcomes": [
                "Compréhension partagée du parcours client, partenaire ou utilisateur",
                "Besoins, irritants, gains, entrées et sorties documentés",
                "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
              ],
              "steps": [
                "Définir le profil du client",
                "Identifier les éléments déclencheurs du voyage",
                "Décrire la fin du voyage",
                "Cartographier les étapes du voyage avec les intrants et les extrants",
                "Identifier les problèmes des clients",
                "Résumer les gains pour les clients",
                "Définir les intrants nécessaires et les résultats qui en découlent",
                "Définir les interactions API pour chaque étape"
              ],
              "canvasId": "customerJourneyCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "slug": "resources/capability-value-proposition-canvas",
              "title": "Capability Value Proposition Canvas",
              "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 2.1,
              "outcomes": [
                "Proposition de valeur claire pour une capacité réutilisable",
                "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
                "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
              ],
              "steps": [
                "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
                "Identifiez les caractéristiques de capacité qui permettent les gains.",
                "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
                "Regroupez les caractéristiques en capacités réutilisables candidates."
              ],
              "canvasId": "capabilityValuePropositionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "slug": "resources/capability-business-model-canvas",
              "title": "Capability Business Model Canvas",
              "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 3.1,
              "outcomes": [
                "Modèle opérationnel viable pour une capacité réutilisable",
                "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
                "Coûts et bénéfices visibles avant l’engagement architectural"
              ],
              "steps": [
                "Résumez la proposition de valeur de la capacité.",
                "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
                "Définissez les activités, ressources et partenaires clés.",
                "Documentez les coûts et les bénéfices.",
                "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
                "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
              ],
              "canvasId": "capabilityBusinessModelCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "api-development-best-practices",
              "slug": "resources/api-development-best-practices",
              "title": "Meilleures pratiques en matière de développement d'API",
              "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 112,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
              "sourceUrl": null,
              "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
              "draft": true
            },
            {
              "id": "api-testing-best-practices",
              "slug": "resources/api-testing-best-practices",
              "title": "Meilleures pratiques de test de l'API",
              "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 133,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "apiops-CI-CD-for-apis",
              "slug": "resources/apiops-CI-CD-for-apis",
              "title": "APIOps CI/CD pour les API",
              "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 140,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            }
          ],
          "promptIds": [
            "compliance-specialist:facilitate-station",
            "compliance-specialist:use-resources",
            "compliance-specialist:next-actions"
          ]
        },
        {
          "id": "security-specialist",
          "stakeholderId": "security-specialist",
          "title": "Spécialiste en sécurité",
          "summary": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
          "stakeholder": {
            "id": "security-specialist",
            "sourceKey": "security-specialist",
            "sourceStakeholderId": "security-specialist",
            "title": "Spécialiste en sécurité",
            "description": "Assure que les risques de sécurité, les contrôles et les limites de confiance sont pris en compte tout au long du cycle de vie.",
            "involvement": ""
          },
          "cycles": [
            {
              "id": "capability-productization-cycle",
              "title": "Cycle de productisation des capacités",
              "description": "Cycle pour transformer des capacites metier en capacites numeriques reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "api-productization-cycle",
              "title": "Cycle de productisation des API",
              "description": "Parcours APIOps Cycles centré sur les API pour productiser, concevoir, livrer, publier et améliorer des produits API."
            },
            {
              "id": "integration-productization-cycle",
              "title": "Cycle de productisation des capacités d’intégration",
              "description": "Cycle pour productiser des capacites d integration reutilisables avant de choisir le mode de mise en oeuvre."
            },
            {
              "id": "automation-cycle",
              "title": "Cycle d’automatisation",
              "description": "Cycle pour identifier, concevoir, livrer, enable et améliorer des opportunités d’automatisation."
            }
          ],
          "stations": [
            {
              "id": "api-platform-architecture",
              "title": "Architecture & décisions de plateforme",
              "description": "Utilisez les exigences et contraintes pour choisir l'architecture, les capacités de plateforme, la gouvernance et le modèle opérationnel."
            },
            {
              "id": "api-design",
              "title": "Conception de solution & d'interface",
              "description": "Concevez le mode de mise en œuvre choisi, le contrat d'interface, les modèles d'interaction, les structures de données et les détails d'utilisation avant l'implémentation."
            },
            {
              "id": "api-delivery",
              "title": "Mise à disposition & opérations",
              "description": "Mettez en œuvre le mode choisi avec des pratiques adaptées d'ingénierie, de test, de sécurité, d'automatisation et d'exploitation."
            },
            {
              "id": "api-audit",
              "title": "Assurance qualité & préparation",
              "description": "Vérifiez le contrat d'interface, les contrôles, le modèle de support, l'observabilité, la documentation et la préparation du cycle de vie avant publication."
            },
            {
              "id": "api-publishing",
              "title": "Publication & enablement",
              "description": "Publiez les informations de capacité afin que les utilisateurs puissent la trouver, l'évaluer, demander l'accès, s'onboarder, l'utiliser et obtenir du support."
            },
            {
              "id": "monitoring-and-improving",
              "title": "Suivi & amélioration",
              "description": "Suivez l'utilisation, la fiabilité, la qualité des données, les résultats utilisateurs, les coûts opérationnels et les opportunités de réutilisation après publication."
            },
            {
              "id": "api-product-strategy",
              "title": "Stratégie de capacité",
              "description": "Décrivez le besoin métier comme une capacité réutilisable avant de choisir le mode de mise en œuvre."
            }
          ],
          "canvases": [
            {
              "id": "businessImpactCanvas",
              "title": "Business Impact Canvas"
            },
            {
              "id": "locationsCanvas",
              "title": "Locations Canvas"
            },
            {
              "id": "capacityCanvas",
              "title": "Capacity Canvas"
            },
            {
              "id": "domainCanvas",
              "title": "Domain Canvas"
            },
            {
              "id": "interactionCanvas",
              "title": "Interaction Canvas"
            },
            {
              "id": "customerJourneyCanvas",
              "title": "Customer Journey Canvas"
            },
            {
              "id": "capabilityValuePropositionCanvas",
              "title": "Capability Value Proposition Canvas"
            },
            {
              "id": "capabilityBusinessModelCanvas",
              "title": "Capability Business Model Canvas"
            },
            {
              "id": "restCanvas",
              "title": "REST Canvas"
            },
            {
              "id": "eventCanvas",
              "title": "Event Canvas"
            },
            {
              "id": "graphqlCanvas",
              "title": "GraphQL Canvas"
            },
            {
              "id": "apiValuePropositionCanvas",
              "title": "API Value Proposition Canvas"
            },
            {
              "id": "apiBusinessModelCanvas",
              "title": "API Business Model Canvas"
            }
          ],
          "decisions": [
            "Utilisez les ressources Business Impact, Capacity, Security et Architecture Decision pour évaluer systématiquement les risques, contraintes et alternatives.",
            "Cartographier les emplacements réglementaires, de conformité et de réseau des fournisseurs d'API et des utilisateurs afin de garantir l'accessibilité et la conformité.",
            "Le Capacity Canvas aligne les modèles de transactions commerciales, les tendances de consommation futures et les solutions techniques pour garantir l'évolutivité et les performances de l'API, et fournit des informations essentielles pour les décisions d'évolution et la planification de l'infrastructure.",
            "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
            "Utilisez les ressources d'architecture et de plateforme pour comparer les options de mise en œuvre viables et prendre une décision traçable.",
            "Une capacité réutilisable nécessite des décisions d'architecture alignées sur les exigences utilisateurs, la sécurité, les flux de données, le modèle opérationnel et la réalité des plateformes existantes."
          ],
          "outputs": [
            "Décision d'architecture et de plateforme validée",
            "Mettre en œuvre une gouvernance cohérente sans contrôle descendant lourd",
            "Conception en vue d'une réutilisation interne et d'une évolutivité externe",
            "architecture-decision",
            "documentation",
            "platform-config",
            "metrics",
            "Un contrat d'interface validé pour le mode de mise en œuvre choisi"
          ],
          "recommendedResources": [
            {
              "id": "businessImpactCanvas",
              "slug": "resources/business-impact-canvas",
              "title": "Business Impact Canvas",
              "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 4,
              "outcomes": [
                "Évaluation documentée des impacts métier et opérationnels",
                "Risques et mesures d’atténuation priorisés",
                "Éléments probants pour les décisions d’architecture et de plateforme"
              ],
              "steps": [
                "Risques liés à la disponibilité : Identifier les risques et les impacts.",
                "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
                "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
                "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
                "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
                "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
              ],
              "canvasId": "businessImpactCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "locationsCanvas",
              "slug": "resources/location-canvas",
              "title": "Location Canvas",
              "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 6,
              "outcomes": [
                "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
                "Contraintes régionales de performance et d’accessibilité identifiées",
                "Résidence des données, limites de confiance et réglementations applicables clarifiées"
              ],
              "steps": [
                "Carte des emplacements des fournisseurs d'API.",
                "Documenter l'emplacement des consommateurs.",
                "Identifier les réglementations applicables.",
                "Documenter l'endroit où les données doivent être stockées.",
                "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
                "Valider les performances du réseau dans les différentes régions."
              ],
              "canvasId": "locationsCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "capacityCanvas",
              "slug": "resources/capacity-canvas",
              "title": "Capacity Canvas",
              "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 7,
              "outcomes": [
                "Exigences de capacité alignées sur la demande métier attendue",
                "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
                "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
              ],
              "steps": [
                "Documenter les volumes d'affaires actuels",
                "Prévoir les tendances futures de la consommation",
                "Planifier les pics de charge et les exigences de disponibilité",
                "Définir les stratégies de mise en cache et de limitation du débit",
                "Proposer des stratégies de mise à l'échelle"
              ],
              "canvasId": "capacityCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "domainCanvas",
              "slug": "resources/domain-canvas",
              "title": "Domain Canvas",
              "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 152,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
                "Approche cohérente pour appliquer « Domain Canvas »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
              ],
              "canvasId": "domainCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "interactionCanvas",
              "slug": "resources/interaction-canvas",
              "title": "Interaction Canvas",
              "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
              "category": "canvas",
              "icon": "dashboard-outline",
              "order": 9,
              "outcomes": [
                "Modèle d’interaction défini pour la capacité choisie",
                "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
                "Règles de validation et attentes d’interaction convenues"
              ],
              "steps": [
                "Associer les interactions de l'API aux tâches de l'utilisateur",
                "Définir des points finaux pour chaque interaction",
                "Documentez les entrées et les sorties de chaque interaction.",
                "Spécifier les règles et contraintes de validation",
                "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
              ],
              "canvasId": "interactionCanvas",
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": false
            },
            {
              "id": "contract-first-design",
              "slug": "resources/contract-first-design",
              "title": "Contrat de première conception",
              "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 146,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
                "Approche cohérente pour appliquer « Contrat de première conception »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
                "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
                "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-contract-example.yaml",
              "sourceUrl": null,
              "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
              "draft": true
            },
            {
              "id": "api-development-best-practices",
              "slug": "resources/api-development-best-practices",
              "title": "Meilleures pratiques en matière de développement d'API",
              "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 112,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
                "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
              "sourceUrl": null,
              "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
              "draft": true
            },
            {
              "id": "api-testing-best-practices",
              "slug": "resources/api-testing-best-practices",
              "title": "Meilleures pratiques de test de l'API",
              "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 133,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
                "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
                "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
                "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "apiops-CI-CD-for-apis",
              "slug": "resources/apiops-CI-CD-for-apis",
              "title": "APIOps CI/CD pour les API",
              "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
              "category": "guideline",
              "icon": "edit-document-outline",
              "order": 140,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
                "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
                "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
                "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
                "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
              ],
              "canvasId": null,
              "sourcePath": null,
              "sourceUrl": null,
              "contentMarkdown": null,
              "draft": true
            },
            {
              "id": "api-audit-checklist",
              "slug": "resources/api-audit-checklist",
              "title": "Liste de contrôle de l'audit de l'API",
              "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
              "category": "checklist",
              "icon": "check-box-outline",
              "order": 13,
              "outcomes": [
                "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
                "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
                "Meilleure application des pratiques associées"
              ],
              "steps": [
                "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
                "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
                "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
              ],
              "canvasId": null,
              "sourcePath": "src/snippets/api-audit-checklist.json",
              "sourceUrl": null,
              "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
              "draft": false
            }
          ],
          "promptIds": [
            "security-specialist:facilitate-station",
            "security-specialist:use-resources",
            "security-specialist:next-actions"
          ]
        }
      ],
      "resources": [
        {
          "id": "customerJourneyCanvas",
          "slug": "resources/customer-journey-canvas",
          "title": "Customer Journey Canvas",
          "description": "Cartographier les parcours des clients pour identifier les besoins et les points de douleur, afin d'améliorer la conception de l'API et l'expérience de l'utilisateur.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 1,
          "outcomes": [
            "Compréhension partagée du parcours client, partenaire ou utilisateur",
            "Besoins, irritants, gains, entrées et sorties documentés",
            "Éléments du parcours disponibles pour les décisions de capacité, d’exigences et d’architecture"
          ],
          "steps": [
            "Définir le profil du client",
            "Identifier les éléments déclencheurs du voyage",
            "Décrire la fin du voyage",
            "Cartographier les étapes du voyage avec les intrants et les extrants",
            "Identifier les problèmes des clients",
            "Résumer les gains pour les clients",
            "Définir les intrants nécessaires et les résultats qui en découlent",
            "Définir les interactions API pour chaque étape"
          ],
          "canvasId": "customerJourneyCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "apiValuePropositionCanvas",
          "slug": "resources/api-value-proposition-canvas",
          "title": "API Value Proposition Canvas",
          "description": "Aligner les fonctionnalités de l'API sur les besoins des utilisateurs en établissant une correspondance entre les tâches, les douleurs et les gains et les produits de l'API.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 2,
          "outcomes": [
            "Développement de fonctionnalités ciblées",
            "Alignement sur les besoins des utilisateurs",
            "Amélioration de la satisfaction des consommateurs d'API"
          ],
          "steps": [
            "Liste des tâches liées au parcours de l'utilisateur",
            "Identifier les caractéristiques permettant d'obtenir les gains escomptés",
            "Définir des caractéristiques permettant de relever les défis",
            "Cartographier les caractéristiques des produits de l'API"
          ],
          "canvasId": "apiValuePropositionCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "capabilityValuePropositionCanvas",
          "slug": "resources/capability-value-proposition-canvas",
          "title": "Capability Value Proposition Canvas",
          "description": "Un canvas indépendant de la technologie pour cartographier les tâches, gains, irritants et capacités réutilisables candidates des utilisateurs avant de sélectionner un mode de mise en œuvre.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 2.1,
          "outcomes": [
            "Proposition de valeur claire pour une capacité réutilisable",
            "Tâches, gains et irritants des utilisateurs capturés sans présupposer de technologie",
            "Capacités réutilisables candidates identifiées pour l’évaluation d’architecture"
          ],
          "steps": [
            "Listez les tâches et résultats utilisateurs que la capacité doit prendre en charge.",
            "Identifiez les caractéristiques de capacité qui permettent les gains.",
            "Identifiez les caractéristiques de capacité qui réduisent les irritants.",
            "Regroupez les caractéristiques en capacités réutilisables candidates."
          ],
          "canvasId": "capabilityValuePropositionCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "apiBusinessModelCanvas",
          "slug": "resources/api-business-model-canvas",
          "title": "API Business Model Canvas",
          "description": "Évaluer stratégiquement la viabilité de l'activité API en établissant une cartographie des propositions de valeur, des segments de consommateurs et des ressources clés.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 3,
          "outcomes": [
            "Une stratégie commerciale claire pour les API",
            "Identification des ressources et des partenaires clés",
            "Alignement des fonctionnalités de l'API sur les objectifs de l'entreprise"
          ],
          "steps": [
            "Résumer la proposition de valeur de l'API",
            "Définir les segments de consommateurs",
            "Identifier les stratégies de relations avec les développeurs",
            "Cartographier les canaux de distribution",
            "Documentez les ressources et activités clés.",
            "Identifier les principaux partenaires et parties prenantes",
            "Mettre en évidence les avantages et les coûts"
          ],
          "canvasId": "apiBusinessModelCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "capabilityBusinessModelCanvas",
          "slug": "resources/capability-business-model-canvas",
          "title": "Capability Business Model Canvas",
          "description": "Un business model canvas pour les capacités réutilisables, couvrant la valeur, les utilisateurs, la responsabilité, l’engagement, les coûts et les bénéfices sans présupposer de mode de mise en œuvre.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 3.1,
          "outcomes": [
            "Modèle opérationnel viable pour une capacité réutilisable",
            "Responsabilité, utilisateurs, canaux, partenaires et besoins de support clarifiés",
            "Coûts et bénéfices visibles avant l’engagement architectural"
          ],
          "steps": [
            "Résumez la proposition de valeur de la capacité.",
            "Identifiez les segments d’utilisateurs et les canaux d’engagement.",
            "Définissez les activités, ressources et partenaires clés.",
            "Documentez les coûts et les bénéfices.",
            "Clarifiez la responsabilité, le financement, le support et les attentes de cycle de vie.",
            "Validez le modèle avec les utilisateurs, producteurs et parties prenantes de gouvernance."
          ],
          "canvasId": "capabilityBusinessModelCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "consumerExperienceRequirementsCanvas",
          "slug": "resources/consumer-experience-requirements-canvas",
          "title": "Consumer Experience Requirements Canvas",
          "description": "Un canvas d’exigences pour l’expérience utilisateur et les besoins non fonctionnels, destiné à guider les décisions ultérieures d’architecture et de mode de mise en œuvre.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 3.2,
          "outcomes": [
            "Exigences utilisateurs et de service indépendantes de la technologie",
            "Besoins d’expérience et exigences non fonctionnelles capturés avant le début de la conception",
            "Impacts architecturaux documentés pour le choix du mode de mise en œuvre"
          ],
          "steps": [
            "Capturez les objectifs des utilisateurs et leur contexte d’usage.",
            "Documentez les attentes de disponibilité, de fraîcheur, de volume, de performance, de qualité et de cohérence des données.",
            "Documentez les attentes de sécurité, de confidentialité, d’onboarding, de changement, d’observabilité, de support et de reprise.",
            "Résumez ce que les exigences impliquent pour les modes de mise en œuvre possibles."
          ],
          "canvasId": "consumerExperienceRequirementsCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "businessImpactCanvas",
          "slug": "resources/business-impact-canvas",
          "title": "Business Impact Canvas",
          "description": "Identifiez les risques métier, de disponibilité, de sécurité, de données, de conformité et d’exploitation qui doivent orienter les décisions d’architecture et de plateforme.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 4,
          "outcomes": [
            "Évaluation documentée des impacts métier et opérationnels",
            "Risques et mesures d’atténuation priorisés",
            "Éléments probants pour les décisions d’architecture et de plateforme"
          ],
          "steps": [
            "Risques liés à la disponibilité : Identifier les risques et les impacts.",
            "Moyens d'atténuer les risques liés à la disponibilité : Définir les mesures d'atténuation.",
            "Risques liés à la sécurité : Documenter les risques liés à la sécurité.",
            "Moyens d'atténuer les risques de sécurité : Proposer des stratégies pour atténuer les risques de sécurité.",
            "Risques liés aux données : Identifier les risques pour l'exactitude ou la disponibilité des données.",
            "Moyens d'atténuer les risques liés aux données : Prévoir des stratégies pour faire face aux risques liés aux données."
          ],
          "canvasId": "businessImpactCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "locationsCanvas",
          "slug": "resources/location-canvas",
          "title": "Location Canvas",
          "description": "Cartographier les emplacements des fournisseurs d'API et des consommateurs pour garantir la conformité et les performances dans toutes les régions.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 6,
          "outcomes": [
            "Exigences de localisation, de résidence des données, de réseau et de réglementation documentées",
            "Contraintes régionales de performance et d’accessibilité identifiées",
            "Résidence des données, limites de confiance et réglementations applicables clarifiées"
          ],
          "steps": [
            "Carte des emplacements des fournisseurs d'API.",
            "Documenter l'emplacement des consommateurs.",
            "Identifier les réglementations applicables.",
            "Documenter l'endroit où les données doivent être stockées.",
            "s'assurer que les API sont accessibles dans toutes les régions du réseau prévues.",
            "Valider les performances du réseau dans les différentes régions."
          ],
          "canvasId": "locationsCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "capacityCanvas",
          "slug": "resources/capacity-canvas",
          "title": "Capacity Canvas",
          "description": "Planifiez la capacité pour la demande actuelle et future, notamment les volumes, les pics, la latence, la disponibilité, la mise à l’échelle, la mise en cache et la limitation de débit pour la capacité et le mode de mise en œuvre choisis.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 7,
          "outcomes": [
            "Exigences de capacité alignées sur la demande métier attendue",
            "Hypothèses de pics de charge, de disponibilité et de croissance documentées",
            "Décisions de mise à l’échelle, de mise en cache et de limitation de débit définies"
          ],
          "steps": [
            "Documenter les volumes d'affaires actuels",
            "Prévoir les tendances futures de la consommation",
            "Planifier les pics de charge et les exigences de disponibilité",
            "Définir les stratégies de mise en cache et de limitation du débit",
            "Proposer des stratégies de mise à l'échelle"
          ],
          "canvasId": "capacityCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "interactionCanvas",
          "slug": "resources/interaction-canvas",
          "title": "Interaction Canvas",
          "description": "Définir les interactions API, les flux de travail et les réponses attendues afin de garantir une expérience cohérente pour les consommateurs d'API.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 9,
          "outcomes": [
            "Modèle d’interaction défini pour la capacité choisie",
            "Entrées, sorties, commandes, requêtes, événements et réponses clarifiés",
            "Règles de validation et attentes d’interaction convenues"
          ],
          "steps": [
            "Associer les interactions de l'API aux tâches de l'utilisateur",
            "Définir des points finaux pour chaque interaction",
            "Documentez les entrées et les sorties de chaque interaction.",
            "Spécifier les règles et contraintes de validation",
            "Créer des modèles d'interaction pour les interactions CRUD, axées sur les requêtes, axées sur les commandes et axées sur les événements."
          ],
          "canvasId": "interactionCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "restCanvas",
          "slug": "resources/rest-canvas",
          "title": "REST Canvas",
          "description": "Concevoir des API en utilisant les principes RESTful, en définissant des ressources, des verbes et des exemples de requêtes et de réponses.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 10,
          "outcomes": [
            "Conception cohérente de l'API RESTful",
            "Ressources définies et leurs interactions",
            "Exemples de demandes et de réponses pour plus de clarté"
          ],
          "steps": [
            "Identifier les ressources clés exposées par l'API",
            "Définir la structure du modèle de ressources de l'API",
            "Spécifier les verbes HTTP utilisés pour interagir avec les ressources",
            "Fournir des exemples de demandes et de réponses pour chaque verbe"
          ],
          "canvasId": "restCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "graphqlCanvas",
          "slug": "resources/graphql-canvas",
          "title": "GraphQL Canvas",
          "description": "Concevoir des API GraphQL en définissant des types, des requêtes, des mutations et des abonnements.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 11,
          "outcomes": [
            "Conception d'une API GraphQL structurée",
            "Types définis et leurs relations",
            "Des requêtes, des mutations et des abonnements clairs"
          ],
          "steps": [
            "Quels sont les problèmes que les consommateurs d'API tentent de résoudre ? De quelles données ont-ils besoin ?",
            "Définir les types GraphQL et leurs attributs : Quels sont les principaux types exposés (par exemple, Utilisateur, Commande, Produit) ?",
            "Cartographier les relations entre les types : Comment les types sont-ils liés les uns aux autres dans les requêtes imbriquées ?",
            "Spécifier les requêtes pour l'extraction des données",
            "Définir les mutations pour la modification des données : Quelles sont les opérations qui modifient les données (par exemple, création, mise à jour, suppression) ?",
            "Abonnements aux grandes lignes pour des mises à jour en temps réel",
            "Définir l'authentification et l'autorisation : Qui peut accéder à quels champs ou types ?",
            "Tenez compte des contraintes de pagination, de filtrage ou de limitation du débit."
          ],
          "canvasId": "graphqlCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "eventCanvas",
          "slug": "resources/event-canvas",
          "title": "Event Canvas",
          "description": "Concevez des interfaces et intégrations événementielles en définissant les événements, déclencheurs, schémas, producteurs, utilisateurs et logiques de traitement.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 12,
          "outcomes": [
            "Modèle d’interaction événementiel défini",
            "Événements, déclencheurs, schémas, producteurs et utilisateurs clarifiés",
            "Attentes de traitement, d’accusé de réception et de gestion des échecs documentées"
          ],
          "steps": [
            "Identifier les événements clés du système",
            "Définir des déclencheurs pour chaque événement",
            "Décrivez le traitement des événements, les changements d’état et la gestion des échecs.",
            "Préciser les résultats obtenus ou les remerciements"
          ],
          "canvasId": "eventCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "api-audit-checklist",
          "slug": "resources/api-audit-checklist",
          "title": "Liste de contrôle de l'audit de l'API",
          "description": "Une liste de contrôle basée sur le cycle de vie permettant de vérifier l'état de préparation de l'API à travers les phases de conception, de livraison, de publication et de conformité à l'aide de critères d'audit et de preuves définis.",
          "category": "checklist",
          "icon": "check-box-outline",
          "order": 13,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Liste de contrôle de l'audit de l'API »",
            "Approche cohérente pour appliquer « Liste de contrôle de l'audit de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Utilisez la liste de contrôle de l'audit de l'API pour vous assurer que la conception de l'API répond aux exigences fonctionnelles et non fonctionnelles, notamment en matière de sécurité, de performances et de conformité.",
            "Réalisez des audits pour évaluer la couverture du cycle de vie et vérifier que l'API respecte les normes métier, de conception et opérationnelles.",
            "S'assurer que la documentation, les modèles de sécurité, la configuration de la passerelle et les exigences légales sont clairement définis, validés et étayés par des preuves."
          ],
          "canvasId": null,
          "sourcePath": "src/snippets/api-audit-checklist.json",
          "sourceUrl": null,
          "contentMarkdown": "{\r\n  \"profiles\": {\r\n    \"read-only\": {\r\n      \"description\": \"API profile that is read-only and does not allow create, update, or delete operations.\"\r\n    },\r\n    \"full-crud\": {\r\n      \"description\": \"General API profile that allows create, update, and delete operations.\"\r\n    }\r\n  },\r\n  \"lifecycleStages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6\r\n    }\r\n  ],\r\n  \"stages\": [\r\n    {\r\n      \"id\": \"strategy\",\r\n      \"title\": \"Strategy\",\r\n      \"readinessLabel\": \"Strategy is Ready When...\",\r\n      \"order\": 1,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"based-on-clear-business-needs\",\r\n          \"label\": \"API is based on clear business needs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiBusinessModelCanvas\",\r\n            \"apiValuePropositionCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"design-artifact\",\r\n            \"documentation\",\r\n            \"research\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\",\r\n            \"specs/canvases/api-product-strategy/apiBusinessModelCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"concept-items-audited\",\r\n          \"label\": \"All concept checklist items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"strategy\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"strategy\",\r\n          \"producedByStation\": [\r\n            \"api-product-strategy\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"business-goals-defined\",\r\n            \"market-research-done\",\r\n            \"stakeholder-approval\",\r\n            \"metrics-feedback-available\",\r\n            \"api-opportunity-documented\",\r\n            \"api-reusability\",\r\n            \"value-prop-validated\",\r\n            \"consumer-segments-identified\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/concept-review-report.json\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"architecture\",\r\n      \"title\": \"Architecture\",\r\n      \"readinessLabel\": \"Architecture is Ready When...\",\r\n      \"order\": 2,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"versioning-decided\",\r\n          \"label\": \"Versioning strategy decided and supported by gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VERSION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-versioning-best-practices\",\r\n            \"apiops-CI-CD-for-apis\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"ci-cd\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"only-via-gateway\",\r\n          \"label\": \"Only accessible via API gateway\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-reusability\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-02\",\r\n            \"REST-CAPACITY-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"businessImpactCanvas\",\r\n            \"locationsCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"infra-config\",\r\n            \"security-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/architecture/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"rate-limits-enforced\",\r\n          \"label\": \"Rate limits are enforced\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"architecture\",\r\n          \"producedByStation\": [\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-roadmap-defined\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CAPACITY-01\",\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"capacityCanvas\",\r\n            \"api-security-best-practices\",\r\n            \"scalable-infrastructure-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"runtime\",\r\n            \"monitoring\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-platform-architecture/capacityCanvas.empty.json\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"design\",\r\n      \"title\": \"Design\",\r\n      \"readinessLabel\": \"Design is Ready When...\",\r\n      \"order\": 3,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"endpoint-descriptions-present\",\r\n          \"label\": \"Endpoints have business value and feature descriptions\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"operationDescriptions\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\",\r\n            \"api-opportunity-documented\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiValuePropositionCanvas\",\r\n            \"customerJourneyCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"specs/canvases/api-product-strategy/apiValuePropositionCanvas.empty.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"hides-raw-backend-data\",\r\n          \"label\": \"API hides raw backend data and is designed for shared use\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"interactionCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-product-strategy/domainCanvas.empty.json\",\r\n            \"specs/canvases/api-design/interactionCanvas.empty.json\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"design-consistent\",\r\n          \"label\": \"API design is consistent with other APIs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-platform-architecture\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-reusability\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DOMAIN-02\",\r\n            \"REST-CX-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"design-artifact\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/canvases/api-design/restCanvas.empty.json\",\r\n            \"docs/api/design/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"descriptive-english-naming\",\r\n          \"label\": \"Data and attribute naming uses descriptive English\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"fieldNamesDescriptive\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"mandatory-fields-specified\",\r\n          \"label\": \"Mandatory fields are specified\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"requiredFieldsPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"dates-use-iso\",\r\n          \"label\": \"Dates use ISO format with timezone\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"dateFormatTimezone\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"general-data-uses-standard-values\",\r\n          \"label\": \"General data uses standard values\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"standardizedEnumsOrPatterns\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-DATA-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"field-names-avoid-acronyms\",\r\n          \"label\": \"Field names avoid acronyms and use full words\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"avoidAcronyms\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-NAMING-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"create-returns-identifiers\",\r\n          \"label\": \"Creating new resources returns identifiers\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is read-only and does not create resources.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"paths-max-two-resources\",\r\n          \"label\": \"Endpoint paths contain max two resources or sub-resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"pathDepthMax\",\r\n            \"maxDepth\": 2\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PATH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"examples-present\",\r\n          \"label\": \"Endpoints and attributes include examples\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CX-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-for-create-update\",\r\n          \"label\": \"POST is used for create or update\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose create or update operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"design-reflects-business-value\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-for-remove\",\r\n          \"label\": \"DELETE is used to remove resources\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose delete operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-no-request-body\",\r\n          \"label\": \"GET has no request body and returns content\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"getNoRequestBody\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"get-empty-returns-204\",\r\n          \"label\": \"GET returns 204 if response body is empty\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current contract returns content for all GET operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-200\",\r\n          \"label\": \"POST returns 200 OK when updating\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST updates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-200-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"post-returns-201\",\r\n          \"label\": \"POST returns 201 Created with ID on create\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose POST creates.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-201-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"delete-returns-204\",\r\n          \"label\": \"DELETE returns 204 on success\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"Read-only profile does not expose DELETE operations.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-RESP-204-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-onboarding-best-practices\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"400-errors-specific\",\r\n          \"label\": \"400 errors provide specific error information\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"errorResponsesSpecific\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-consumer-experience\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\",\r\n            \"value-prop-validated\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-400-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"restCanvas\",\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"401-unauthorized\",\r\n          \"label\": \"401 Unauthorized for wrong credentials\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current public storefront contract is intentionally unauthenticated.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-401-01\",\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"403-forbidden\",\r\n          \"label\": \"403 Forbidden for unauthorized operations\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"The current profile is public read-only and exposes no unauthorized operations.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-ERROR-403-01\",\r\n            \"REST-SEC-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-contains-schemas\",\r\n          \"label\": \"Spec contains request and response schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"schemasPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"restCanvas\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"contract\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"pseudo-identifiers\",\r\n          \"label\": \"UUIDs or pseudo-identifiers instead of DB IDs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"opaqueIdentifiers\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-07\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"domainCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"no-sensitive-data-in-urls\",\r\n          \"label\": \"No sensitive data in URLs\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"noSensitiveDataInPaths\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"hide-backend-discrepancies\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-06\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"contract-first-design\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"http-methods-match-resources\",\r\n          \"label\": \"HTTP methods only for intended resources\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"methodResourceConsistency\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"design\",\r\n          \"producedByStation\": [\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-HTTP-GET-01\",\r\n            \"REST-HTTP-POST-01\",\r\n            \"REST-HTTP-PUT-01\",\r\n            \"REST-HTTP-DELETE-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"restCanvas\",\r\n            \"api-design-principles\",\r\n            \"contract-first-design\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"delivery\",\r\n      \"title\": \"Delivery\",\r\n      \"readinessLabel\": \"Delivery is Ready When...\",\r\n      \"order\": 4,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"design-items-audited\",\r\n          \"label\": \"All prototype and design items are audited\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"aggregate\",\r\n          \"check\": {\r\n            \"type\": \"stageCoverage\",\r\n            \"stageId\": \"design\"\r\n          },\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-design\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"design-reflects-business-value\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"report\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"audit/production-readiness-review.json\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-validated-on-change\",\r\n          \"label\": \"Spec validated on every change\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"validationWorkflowPresent\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-audit-checklist\",\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"schema-and-examples-pass\",\r\n          \"label\": \"Schema and examples pass validation\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"openapi\",\r\n          \"check\": {\r\n            \"type\": \"examplesPassValidation\"\r\n          },\r\n          \"automationLevel\": \"auto\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-design\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-consistency\",\r\n            \"architecture-patterns-validated\",\r\n            \"api-contract-tested\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-AUDIT-01\",\r\n            \"REST-CONTRACT-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"api-audit-checklist\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"test\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"uses-https\",\r\n          \"label\": \"Uses HTTPS or encrypted protocols\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"auth-protection\",\r\n          \"label\": \"Endpoints protected by authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"gateway-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"token-auth\",\r\n          \"label\": \"Token-based authentication\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"csrf-protection\",\r\n          \"label\": \"Protected against CSRF\",\r\n          \"applicableTo\": [\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"This profile is intentionally public read-only.\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-08\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-development-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"inputs-auto-validated\",\r\n          \"label\": \"Inputs auto-validated by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-VALIDATION-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"contract-first-design\",\r\n            \"api-testing-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\",\r\n            \"test\",\r\n            \"spec\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"outputs-auto-escaped\",\r\n          \"label\": \"Outputs auto-escaped by framework\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"n/a\",\r\n          \"defaultStatus\": \"na\",\r\n          \"reason\": \"JSON APIs do not typically require output escaping in the same way as HTML rendering.\",\r\n          \"automationLevel\": \"manual\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-development-best-practices\",\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"code\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"encryption-in-transit\",\r\n          \"label\": \"Encryption for data in transit and storage\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\",\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-SEC-05\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"data-privacy-guidelines\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"infra-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"message-integrity\",\r\n          \"label\": \"Message integrity implemented\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"delivery\",\r\n          \"producedByStation\": [\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"architecture-patterns-validated\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-OBS-01\",\r\n            \"REST-SEC-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-security-best-practices\",\r\n            \"api-compliance-best-practices\",\r\n            \"api-metrics-and-analytics\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"security-config\",\r\n            \"monitoring\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/delivery/README.md\",\r\n            \"docs/api/architecture/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"publishing\",\r\n      \"title\": \"Publishing\",\r\n      \"readinessLabel\": \"Publishing is Ready When...\",\r\n      \"order\": 5,\r\n      \"items\": [\r\n        {\r\n          \"id\": \"published-via-api-management\",\r\n          \"label\": \"Published via API management\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-01\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"gateway-config\",\r\n            \"ci-cd\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"visible-in-dev-portal\",\r\n          \"label\": \"Visible in developer portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-community-engagement-strategies\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"docs-auto-generated\",\r\n          \"label\": \"Docs auto-generated from spec and schema\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"partial\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-documentation-ready\",\r\n            \"api-ready-for-publishing\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\",\r\n            \"REST-PUBLISH-03\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"contract-first-design\",\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"spec\",\r\n            \"documentation\",\r\n            \"ci-cd\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"specs/openapi/api.yaml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"docs/api/audit/design-audit.read-only.md\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"spec-auto-updated\",\r\n          \"label\": \"Spec auto-updated to gateway and dev portal\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\",\r\n            \"api-delivery\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\",\r\n            \"api-consistency\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-CONTRACT-02\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"apiops-CI-CD-for-apis\",\r\n            \"contract-first-design\",\r\n            \"api-onboarding-best-practices\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"ci-cd\",\r\n            \"gateway-config\",\r\n            \"documentation\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \".github/workflows/openapi-lint.yml\",\r\n            \"docs/api/publishing/README.md\",\r\n            \"specs/openapi/api.yaml\"\r\n          ]\r\n        },\r\n        {\r\n          \"id\": \"official-domain\",\r\n          \"label\": \"Published under official organization domain\",\r\n          \"applicableTo\": [\r\n            \"read-only\",\r\n            \"full-crud\"\r\n          ],\r\n          \"kind\": \"manual\",\r\n          \"defaultStatus\": \"gap\",\r\n          \"automationLevel\": \"semi\",\r\n          \"primaryStage\": \"publishing\",\r\n          \"producedByStation\": [\r\n            \"api-publishing\"\r\n          ],\r\n          \"producedByStationCriteria\": [\r\n            \"api-ready-for-publishing\",\r\n            \"audit-passed\"\r\n          ],\r\n          \"guidelines\": [\r\n            \"REST-PUBLISH-04\"\r\n          ],\r\n          \"resourceSource\": [\r\n            \"api-onboarding-best-practices\",\r\n            \"api-audit-checklist\"\r\n          ],\r\n          \"expectedEvidenceTags\": [\r\n            \"documentation\",\r\n            \"runtime\"\r\n          ],\r\n          \"expectedEvidence\": [\r\n            \"docs/api/publishing/README.md\"\r\n          ]\r\n        }\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"improving\",\r\n      \"title\": \"Improving\",\r\n      \"readinessLabel\": \"Improving is Ready When...\",\r\n      \"order\": 6,\r\n      \"items\": []\r\n    }\r\n  ],\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"based-on-clear-business-needs\",\r\n        \"hides-raw-backend-data\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}\r\n",
          "draft": false
        },
        {
          "id": "api-design-principles",
          "slug": "resources/api-design-principles",
          "title": "Principes de conception de l'API",
          "description": "Un guide concis sur l'ergonomie, la facilité de découverte et la cohérence des API, fondé sur des règles de conception communes et les besoins réels des consommateurs.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 14,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Principes de conception de l'API »",
            "Approche cohérente pour appliquer « Principes de conception de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "**Consumer-first design:** commencer chaque cycle APIOps en rassemblant les objectifs des utilisateurs et les termes du domaine afin que les APIs résolvent des problèmes réels.",
            "**Noms et comportements cohérents:** appliquer des conventions partagées pour les ressources, les erreurs et les formats afin de rendre les API prévisibles.",
            "**Dirigé par le contrat:** capturer l'interface avec OpenAPI ou AsyncAPI avant le codage pour aligner les équipes et permettre l'automatisation.",
            "**Utilisabilité et facilité de découverte:** fournir une documentation et des exemples clairs afin que les développeurs comprennent rapidement comment utiliser l'API.",
            "**Itérer en sécurité :** faites évoluer les conceptions par petits incréments versionnés afin que les changements ne perturbent pas les utilisateurs existants."
          ],
          "canvasId": null,
          "sourcePath": "src/snippets/api-style-guide.json",
          "sourceUrl": null,
          "contentMarkdown": "{\r\n  \"guidelines\": [\r\n    {\r\n      \"id\": \"REST-CONTRACT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST implement endpoints, parameters, request bodies, response bodies, and error responses as defined in the validated OpenAPI contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-contains-schemas\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CONTRACT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST keep the implementation, published OpenAPI description, gateway configuration, and developer portal documentation aligned on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"docs-auto-generated\",\r\n        \"spec-auto-updated\",\r\n        \"spec-validated-on-change\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VALIDATION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate path parameters, query parameters, headers, and JSON request bodies against the OpenAPI schema before business processing.\",\r\n      \"relatedAuditItems\": [\r\n        \"mandatory-fields-specified\",\r\n        \"400-errors-specific\",\r\n        \"inputs-auto-validated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST expose business-oriented resources and attributes rather than raw backend tables, internal service payloads, or system-specific field names.\",\r\n      \"relatedAuditItems\": [\r\n        \"hides-raw-backend-data\",\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DOMAIN-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST preserve validated meanings of entities, attributes, statuses, and source-of-truth rules across all endpoints and operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\",\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use descriptive English names for resources and attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"descriptive-english-naming\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-NAMING-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST avoid unexplained acronyms in public field and resource names.\",\r\n      \"relatedAuditItems\": [\r\n        \"field-names-avoid-acronyms\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API MUST use ISO date-time values with timezone information where dates are exposed.\",\r\n      \"relatedAuditItems\": [\r\n        \"dates-use-iso\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-DATA-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"domain-modeling\",\r\n      \"requirement\": \"The REST API SHOULD use standard codes, controlled vocabularies, and standardized value sets where applicable.\",\r\n      \"relatedAuditItems\": [\r\n        \"general-data-uses-standard-values\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST describe the business value and feature intent of each endpoint or capability.\",\r\n      \"relatedAuditItems\": [\r\n        \"endpoint-descriptions-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API MUST include examples for endpoints, request bodies, response bodies, and key attributes.\",\r\n      \"relatedAuditItems\": [\r\n        \"examples-present\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CX-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"consumer-experience\",\r\n      \"requirement\": \"The REST API SHOULD use consistent pagination, filtering, sorting, and response conventions across resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"design-consistent\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-GET-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use GET for safe read-only operations and MUST NOT define a request body for GET operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-POST-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use POST for resource creation and other non-idempotent operations.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-PUT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use PUT only for full resource replacement.\",\r\n      \"relatedAuditItems\": [\r\n        \"post-for-create-update\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-HTTP-DELETE-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"http-semantics\",\r\n      \"requirement\": \"The REST API MUST use DELETE to remove resources.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-for-remove\",\r\n        \"http-methods-match-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PATH-01\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"resource-modeling\",\r\n      \"requirement\": \"The REST API SHOULD keep endpoint paths shallow and avoid more than two resource or sub-resource levels unless explicitly justified.\",\r\n      \"relatedAuditItems\": [\r\n        \"paths-max-two-resources\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-200-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 200 OK for successful reads and updates that include a response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-no-request-body\",\r\n        \"post-returns-200\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-201-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 201 Created and the created resource identifier when a new resource is created.\",\r\n      \"relatedAuditItems\": [\r\n        \"create-returns-identifiers\",\r\n        \"post-returns-201\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API MUST return 204 No Content for successful delete operations that do not return a body.\",\r\n      \"relatedAuditItems\": [\r\n        \"delete-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-RESP-204-02\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"status-codes\",\r\n      \"requirement\": \"The REST API SHOULD return 204 No Content for successful operations that intentionally return no response body.\",\r\n      \"relatedAuditItems\": [\r\n        \"get-empty-returns-204\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-400-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST define 400 Bad Request responses with specific and actionable validation error information.\",\r\n      \"relatedAuditItems\": [\r\n        \"400-errors-specific\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-401-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 401 Unauthorized for missing or invalid credentials.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-ERROR-403-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"error-handling\",\r\n      \"requirement\": \"The REST API MUST return 403 Forbidden for authenticated clients lacking sufficient permission.\",\r\n      \"relatedAuditItems\": [\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-VERSION-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"versioning\",\r\n      \"requirement\": \"The REST API MUST define a versioning strategy before production release, and the strategy MUST be supportable by the API gateway.\",\r\n      \"relatedAuditItems\": [\r\n        \"versioning-decided\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST require authentication for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use token-based authentication or another approved modern authentication mechanism for protected endpoints.\",\r\n      \"relatedAuditItems\": [\r\n        \"token-auth\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-03\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST enforce object-level and function-level authorization on every protected operation.\",\r\n      \"relatedAuditItems\": [\r\n        \"401-unauthorized\",\r\n        \"403-forbidden\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST mitigate OWASP API risks including broken object level authorization, broken function level authorization, injection, and unrestricted resource consumption.\",\r\n      \"relatedAuditItems\": [\r\n        \"auth-protection\",\r\n        \"rate-limits-enforced\",\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-05\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST use HTTPS or another approved encrypted protocol for all traffic.\",\r\n      \"relatedAuditItems\": [\r\n        \"uses-https\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-06\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST NOT expose sensitive information in URLs, query strings, logs, or unnecessary response fields.\",\r\n      \"relatedAuditItems\": [\r\n        \"no-sensitive-data-in-urls\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-07\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API SHOULD use UUIDs or other non-sequential public identifiers where direct database identifiers would increase exposure risk.\",\r\n      \"relatedAuditItems\": [\r\n        \"pseudo-identifiers\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-SEC-08\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"security\",\r\n      \"requirement\": \"The REST API MUST implement CSRF protection where relevant to the authentication model and client interaction pattern.\",\r\n      \"relatedAuditItems\": [\r\n        \"csrf-protection\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST define and enforce rate limits, throttling, or quotas according to capacity expectations.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-CAPACITY-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"resilience-capacity\",\r\n      \"requirement\": \"The REST API MUST implement resilience controls such as timeouts, fallback behavior, and degradation handling according to business impact.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\",\r\n        \"encryption-in-transit\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-OBS-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"observability\",\r\n      \"requirement\": \"The REST API MUST implement logs, metrics, and monitoring needed to observe validation failures, auth failures, traffic, latency, and dependency health.\",\r\n      \"relatedAuditItems\": [\r\n        \"rate-limits-enforced\",\r\n        \"message-integrity\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published through an API management platform.\",\r\n      \"relatedAuditItems\": [\r\n        \"published-via-api-management\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be accessible only through approved API gateway paths and managed entry points.\",\r\n      \"relatedAuditItems\": [\r\n        \"only-via-gateway\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-03\",\r\n      \"priority\": \"SHOULD\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API SHOULD be visible in a developer portal with documentation generated from the contract.\",\r\n      \"relatedAuditItems\": [\r\n        \"visible-in-dev-portal\",\r\n        \"docs-auto-generated\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-PUBLISH-04\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"publishing-governance\",\r\n      \"requirement\": \"The REST API MUST be published under an approved organizational domain.\",\r\n      \"relatedAuditItems\": [\r\n        \"official-domain\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-01\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST validate the specification, schema, and examples on every change.\",\r\n      \"relatedAuditItems\": [\r\n        \"spec-validated-on-change\",\r\n        \"schema-and-examples-pass\"\r\n      ]\r\n    },\r\n    {\r\n      \"id\": \"REST-AUDIT-02\",\r\n      \"priority\": \"MUST\",\r\n      \"category\": \"contract-governance\",\r\n      \"requirement\": \"The REST API MUST pass concept, design, security, and production-readiness checks before release.\",\r\n      \"relatedAuditItems\": [\r\n        \"concept-items-audited\",\r\n        \"design-items-audited\"\r\n      ]\r\n    }\r\n  ]\r\n}",
          "draft": false
        },
        {
          "id": "api-community-engagement-strategies",
          "slug": "resources/api-community-engagement-strategies",
          "title": "Stratégies d'engagement de la communauté de l'API",
          "description": "Un guide pour favoriser l'adoption des API en cultivant des communautés grâce à des contenus, des canaux d'assistance, des boucles de retour d'information et des stratégies d'engagement social.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 103,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Stratégies d'engagement de la communauté de l'API »",
            "Approche cohérente pour appliquer « Stratégies d'engagement de la communauté de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Élaborer des stratégies de marketing pour promouvoir les API auprès des publics cibles, y compris les médias sociaux, les blogs et les webinaires.",
            "Créer du matériel promotionnel (par exemple, des études de cas, des exemples de réussite) qui met en évidence la valeur et les avantages des API.",
            "Créer des supports pédagogiques (par exemple, des tutoriels, de la documentation) qui expliquent les caractéristiques, les avantages et les modes d'utilisation de l'API.",
            "S'engager auprès des consommateurs d'API par le biais de boucles de retour d'information, de canaux d'assistance et de forums communautaires afin de comprendre leurs besoins et d'améliorer l'adoption de l'API.",
            "Analyser les indicateurs d'utilisation de l'API et intégrer les commentaires des utilisateurs dans les itérations de l'API."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-compliance-best-practices",
          "slug": "resources/api-compliance-best-practices",
          "title": "Meilleures pratiques en matière de conformité de l'API",
          "description": "Veiller à ce que les API respectent la conformité légale, réglementaire et interne grâce à la documentation, aux contrôles et aux validations automatisées.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 104,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de conformité de l'API »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière de conformité de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Documenter les mesures de conformité et veiller à ce qu'elles soient communiquées aux parties prenantes et aux consommateurs.",
            "Mettre en œuvre des mesures pour s'assurer que les API sont conformes à ces exigences, y compris le cryptage des données, les contrôles d'accès et les pistes d'audit.",
            "Utiliser des listes de contrôle, des linters et des outils de test pour vérifier la cohérence et la conformité avec les normes."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-development-best-practices",
          "slug": "resources/api-development-best-practices",
          "title": "Meilleures pratiques en matière de développement d'API",
          "description": "Guide de mise en œuvre pour transformer un contrat d’interface API validé en une base de code API cohérente et maintenable, à l’aide de bibliothèques standard, de modèles réutilisables et de workflows de développement harmonisés.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 112,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de développement d'API »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière de développement d'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Appliquez ces pratiques au contrat d’interface API validé et au plan de mise en œuvre avant de commencer le développement.",
            "Utilisez des frameworks, des bibliothèques et des normes de codage établis pour implémenter le contrat de manière cohérente et maintenable."
          ],
          "canvasId": null,
          "sourcePath": "src/snippets/fr/api-design-principles-guidance.md",
          "sourceUrl": null,
          "contentMarkdown": "## Comment démarrer le travail de livraison de l'API en s'appuyant sur les phases précédentes (« étapes »)\r\nUtilisez ces conseils au début de la `API Delivery` i.e. « livraison de l'API », une fois que le contrat API (par exemple OpenAPI) et les principaux livrables des étapes précédentes ont été examinés et acceptés.\r\nL'objectif n'est pas de concevoir la mise en œuvre de manière isolée. L'objectif est de traduire les livrables convenus lors des étapes précédentes en une structure de code concrète, en règles de validation, en comportement d'exécution et en décisions relatives à la livraison du produit API.\r\n\r\n---\r\n\r\n### 1. Partez du contrat validé\r\n- Considérez le contrat API validé comme le principal point de référence pour les décisions de mise en œuvre.\r\n- Veillez à ce que le contrat et la mise en œuvre restent alignés tout au long de la livraison du produit API.\r\n- Utilisez le contrat pour piloter la validation des requêtes, le mappage des réponses, la documentation et les tests.\r\n\r\n---\r\n\r\n### 2. Utilisez les résultats du domaine pour préserver le sens métier\r\n- Utilisez les résultats du `Domain Canvas` pour guider la dénomination, la manière dont l'implémentation est divisée en responsabilités métier claires, et la manière dont les différents systèmes backend sont connectés sans exposer leurs différences.\r\n- Préservez les significations validées des entités, des attributs, des statuts et des règles de source de vérité.\r\n- Évitez de laisser transparaître des modèles spécifiques au backend ou des incohérences dans l'API publique.\r\n\r\n---\r\n\r\n### 3. Utilisez les résultats du parcours pour préserver les flux critiques\r\n- Utilisez les résultats du `Customer Journey Canvas` pour identifier les flux utilisateur qu’il est le plus important de prendre en charge en priorité.\r\n- Utilisez les résultats de l’`API Consumer Experience` pour que l’API reste compréhensible, prévisible et facile à intégrer.\r\n- Laissez les priorités de parcours convenues déterminer quels chemins de mise en œuvre nécessitent la plus grande fiabilité, la latence la plus faible, les erreurs les plus claires et la plus forte concentration opérationnelle.\r\n\r\n---\r\n\r\n### 4. Utilisez les résultats de la proposition de valeur pour préserver la valeur pour le consommateur\r\n- Utilisez les résultats du `API Value Proposition Canvas` pour que la mise en œuvre reste centrée sur les difficultés, les gains et les fonctionnalités de l’API convenus.\r\n- Préservez les significations des champs, le comportement et les promesses qui ont rendu l’API précieuse lors des étapes précédentes.\r\n- Assurez-vous que la gestion des erreurs, l’actualité des données et la nomenclature soutiennent à la fois l’expérience développeur visée et le cas d’utilisation métier.\r\n\r\n---\r\n\r\n### 5. Utilisez les résultats de l'architecture pour orienter les décisions d'exécution\r\n- Utilisez les résultats du `Business Impact Canvas` pour orienter les décisions en matière de résilience, de délai d'expiration, de repli et de dégradation.\r\n- Utilisez les résultats du `Locations Canvas` pour orienter les limites du réseau, les limites de confiance, les chemins d'accès et les contraintes de déploiement.\r\n- Utilisez les résultats du `Capacity Canvas` pour orienter les limites de débit, la mise en cache, la mise à l'échelle et le comportement en cas de pic de charge.\r\n- Utilisez les recommandations du `API Metrics And Analytics` pour déterminer ce qui doit être surveillé dès la première implémentation.\r\n\r\n---\r\n\r\n### 6. Utilisez les résultats de la conception des interactions et des protocoles pour définir la structure du code\r\n- Utilisez les résultats du `Interaction Canvas` pour éviter d’implémenter trop tôt des styles d’interaction non pris en charge.\r\n- Utilisez les résultats de conception `REST`, `Event` ou `GraphQL` pour définir le comportement spécifique au protocole en matière de requêtes, de réponses et de validation.\r\n- Reflétez clairement le style d'interaction sélectionné dans la structure du code, les responsabilités et la stratégie de test.\r\n\r\n---\r\n\r\n### 7. Utilisez les résultats de l'audit pour améliorer la livraison avant que le codage n'aille trop loin\r\n- Utilisez les conclusions de l'audit pour éliminer toute ambiguïté avant que la mise en œuvre ne se propage dans l'ensemble du code.\r\n- Corrigez rapidement les règles de requête floues, les validations manquantes, les contrats d'erreur faibles et les lacunes opérationnelles.\r\n- Considérez l'audit comme une boucle d'amélioration de la conception avant la mise en production, et non seulement comme une étape de décision finale.\r\n\r\n---\r\n\r\n### 8. Appliquez les recommandations, puis résumez\r\n- Appliquez ces recommandations à l'API actuelle et au plan de mise en œuvre.\r\n- Résumez les implications pour la structure du code, la validation des requêtes, l'intégration des sources, la sécurité, la surveillance et les alertes, ainsi que les tests.\r\n- Ne créez pas d'artefact de livraison distinct, sauf si l'équipe ou l'utilisateur en a spécifiquement besoin.\r\n",
          "draft": true
        },
        {
          "id": "api-metrics-and-analytics",
          "slug": "resources/api-metrics-and-analytics",
          "title": "Mesures et analyses de l'API",
          "description": "Une ressource pour définir, collecter et analyser les performances de l'API et les données d'utilisation afin d'aligner les KPI techniques sur les résultats de l'entreprise.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 119,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Mesures et analyses de l'API »",
            "Approche cohérente pour appliquer « Mesures et analyses de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Identifier les indicateurs clés de performance (KPI) pour mesurer la réussite de l'API par rapport aux objectifs de l'entreprise.",
            "Définir et surveiller les indicateurs de performance (par exemple, les appels API, la latence, les taux d'erreur) et les indicateurs d'adoption (par exemple, NPS).",
            "Contrôler les initiatives API afin de garantir le respect des lignes directrices opérationnelles et des pratiques de gouvernance."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-onboarding-best-practices",
          "slug": "resources/api-onboarding-best-practices",
          "title": "Meilleures pratiques en matière d'intégration de l'API",
          "description": "Meilleures pratiques pour rationaliser les parcours d'accueil des consommateurs d'API avec une inscription étape par étape, une découverte et des conseils pour le premier appel.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 121,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'intégration de l'API »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière d'intégration de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Définir le parcours du consommateur d'API, de la découverte au dépannage, en identifiant les points de contact clés et les points douloureux.",
            "Développer des processus et des ressources d'intégration pour aider les consommateurs d'API à comprendre comment utiliser efficacement les API.",
            "Documenter la manière dont les consommateurs trouvent et utilisent l'API, y compris les processus d'accueil et d'enregistrement."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-portfolio-management-guidelines",
          "slug": "resources/api-portfolio-management-guidelines",
          "title": "Lignes directrices pour la gestion du portefeuille de l'API",
          "description": "Un guide pour gérer stratégiquement la suite d'API d'une organisation - en donnant la priorité aux API, en allouant des ressources et en contrôlant les performances tout au long du cycle de vie.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 123,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices pour la gestion du portefeuille de l'API »",
            "Approche cohérente pour appliquer « Lignes directrices pour la gestion du portefeuille de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Définir des pratiques de gestion de portefeuille qui décrivent les processus de gestion du portefeuille d'API, y compris l'établissement de priorités, le suivi et l'optimisation.",
            "Définir des pratiques de gestion du budget et des ressources qui décrivent les processus de gestion des budgets et des ressources pour les initiatives de l'API.",
            "Établir des critères d'évaluation et de hiérarchisation des affectations budgétaires en fonction de la valeur commerciale, de l'impact et de l'alignement sur les initiatives stratégiques.",
            "Contrôler le portefeuille d'API pour s'assurer que les API apportent de la valeur, répondent aux attentes en matière de performances et s'alignent sur les objectifs de l'entreprise."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-security-best-practices",
          "slug": "resources/api-security-best-practices",
          "title": "Meilleures pratiques en matière de sécurité des API",
          "description": "Un ensemble de contrôles exploitables pour sécuriser les API, y compris l'authentification, l'autorisation, le cryptage, la limitation du débit et les contrôles de conformité au niveau du pipeline.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 130,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de sécurité des API »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière de sécurité des API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "S'assurer que les API répondent aux exigences de sécurité et de conformité grâce à des contrôles et des audits automatisés.",
            "Mettre en œuvre des mesures de sécurité telles que l'authentification, l'autorisation, le cryptage et la limitation du débit pour protéger les API contre les menaces.",
            "Mettre en œuvre des contrôles de sécurité automatisés et des validations de conformité dans le pipeline CI/CD pour s'assurer que les API sont sécurisées et conformes."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-team-structure-guidelines",
          "slug": "resources/api-team-structure-guidelines",
          "title": "Lignes directrices relatives à la structure des équipes de l'API",
          "description": "Orientation organisationnelle pour définir les rôles et les responsabilités au sein des équipes API afin de garantir la clarté, la collaboration et la responsabilité.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 132,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices relatives à la structure des équipes de l'API »",
            "Approche cohérente pour appliquer « Lignes directrices relatives à la structure des équipes de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Définir les structures et les rôles des équipes API, y compris les propriétaires de produits API, les développeurs, les architectes et les opérations."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-testing-best-practices",
          "slug": "resources/api-testing-best-practices",
          "title": "Meilleures pratiques de test de l'API",
          "description": "Lignes directrices pour la mise en œuvre de tests fonctionnels, de performance et de sécurité automatisés tout au long du cycle de vie de l'API.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 133,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de test de l'API »",
            "Approche cohérente pour appliquer « Meilleures pratiques de test de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Tester les fonctionnalités, la sécurité et les performances des API à l'aide d'outils de test automatisés.",
            "Intégrer des tests fonctionnels et non fonctionnels dans le pipeline CI/CD pour s'assurer que les API répondent aux normes de qualité.",
            "Utiliser des outils de test automatisés pour valider les fonctionnalités, la sécurité et les performances de l'API."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-training-programs",
          "slug": "resources/api-training-programs",
          "title": "Programmes de formation de l'API",
          "description": "Une feuille de route pour l'amélioration des compétences des équipes avec des parcours d'apprentissage structurés en matière de conception, de gouvernance, de performance et de sécurité des API.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 134,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Programmes de formation de l'API »",
            "Approche cohérente pour appliquer « Programmes de formation de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Identifier les compétences et les connaissances clés en matière d'API qui doivent être améliorées, telles que la conception, la sécurité et les performances des API.",
            "Encourager la formation continue par des cours en ligne, des certifications et l'engagement communautaire.",
            "Fournir des formations et des ressources pour aider les équipes à adopter un état d'esprit \"API-first\" et à comprendre les avantages des API.",
            "Fournir des programmes de formation, des ateliers et des ressources pour aider les équipes à améliorer leurs compétences et leurs connaissances en matière d'API."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "api-versioning-best-practices",
          "slug": "resources/api-versioning-best-practices",
          "title": "Meilleures pratiques en matière de versionnement de l'API",
          "description": "Stratégies d'introduction, de maintenance et de retrait des versions de l'API tout en préservant la compatibilité ascendante et la confiance des consommateurs.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 138,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de versionnement de l'API »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière de versionnement de l'API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Définir des stratégies de versionnement pour les API afin de gérer les changements et d'assurer la compatibilité ascendante."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "apiops-CI-CD-for-apis",
          "slug": "resources/apiops-CI-CD-for-apis",
          "title": "APIOps CI/CD pour les API",
          "description": "Des conseils de déploiement qui intègrent les tâches du cycle de vie de l'API - conception, test, gouvernance - dans les pipelines d'intégration et de livraison en continu.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 140,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « APIOps CI/CD pour les API »",
            "Approche cohérente pour appliquer « APIOps CI/CD pour les API »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Utiliser les pipelines CI/CD pour automatiser les processus de construction, de test et de déploiement, en garantissant une qualité et une traçabilité constantes.",
            "Intégrer des tests automatisés dans le pipeline CI/CD pour assurer une validation continue de la qualité de l'API.",
            "Mettre en œuvre des stratégies de déploiement (par exemple, des déploiements \"bleu-vert\", des versions \"canari\") afin de minimiser les risques lors des mises à jour de l'API.",
            "Prendre l'habitude d'examiner les mesures et de planifier des activités d'amélioration continue."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "competitor-analysis-template",
          "slug": "resources/competitor-analysis-template",
          "title": "Modèle d'analyse des concurrents",
          "description": "Une feuille de travail structurée pour comparer vos offres d'API à celles de vos concurrents en identifiant les forces, les faiblesses et les différentiateurs de valeur.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 143,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Modèle d'analyse des concurrents »",
            "Approche cohérente pour appliquer « Modèle d'analyse des concurrents »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Effectuer une analyse concurrentielle afin d'identifier les principaux concurrents et leurs offres d'API.",
            "Analyser les API des concurrents pour comprendre leurs forces, leurs faiblesses et leurs arguments de vente uniques."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "contract-first-design",
          "slug": "resources/contract-first-design",
          "title": "Contrat de première conception",
          "description": "Une ligne directrice qui préconise des approches \"API-first\" utilisant des contrats formels (par exemple, OpenAPI) pour aligner les parties prenantes avant le développement.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 146,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Contrat de première conception »",
            "Approche cohérente pour appliquer « Contrat de première conception »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Appliquer des approches de type \"contrat d'abord\" ou \"conception d'abord\" pour s'assurer que les contrats d'API sont validés avant leur mise en œuvre.",
            "Définir des contrats d'API qui décrivent les attentes, les responsabilités et les directives d'utilisation pour chaque API.",
            "Utiliser des formats normalisés (par exemple, OpenAPI, AsyncAPI) pour créer des contrats d'API lisibles par machine, faciles à partager et à valider."
          ],
          "canvasId": null,
          "sourcePath": "src/snippets/api-contract-example.yaml",
          "sourceUrl": null,
          "contentMarkdown": "openapi: 3.0.3\r\ninfo:\r\n  title: Sample Catalog API\r\n  version: 1.0.0\r\n  description: |\r\n    Starter example for a read-only APIOps Cycles API.\r\n    This example keeps the contract audit-friendly and easy to extend.\r\nservers:\r\n  - url: /v1\r\n    description: Versioned API base path\r\ntags:\r\n  - name: catalog\r\n    description: Browse and search catalog items\r\npaths:\r\n  /items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List catalog items\r\n      description: Returns a paginated list of public catalog items.\r\n      operationId: listItems\r\n      parameters:\r\n        - $ref: \"#/components/parameters/searchTerm\"\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n        - $ref: \"#/components/parameters/page\"\r\n        - $ref: \"#/components/parameters/pageSize\"\r\n      responses:\r\n        \"200\":\r\n          description: Item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n              examples:\r\n                default:\r\n                  value:\r\n                    data:\r\n                      - itemId: item-123\r\n                        slug: blue-widget\r\n                        name: Blue Widget\r\n                        status: published\r\n                    page:\r\n                      number: 1\r\n                      size: 20\r\n                      totalItems: 1\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"429\":\r\n          $ref: \"#/components/responses/TooManyRequests\"\r\n  /items/{itemId}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by id\r\n      description: Returns a single public catalog item by opaque identifier.\r\n      operationId: getItemById\r\n      parameters:\r\n        - $ref: \"#/components/parameters/itemId\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"400\":\r\n          $ref: \"#/components/responses/BadRequest\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /items/by-slug/{slug}:\r\n    get:\r\n      tags: [catalog]\r\n      summary: Get item by slug\r\n      description: Returns a single item by public slug.\r\n      operationId: getItemBySlug\r\n      parameters:\r\n        - $ref: \"#/components/parameters/slug\"\r\n      responses:\r\n        \"200\":\r\n          description: Item details\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemDetail\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\n  /categories/{categoryId}/items:\r\n    get:\r\n      tags: [catalog]\r\n      summary: List items in category\r\n      description: Returns public items in a category.\r\n      operationId: listItemsByCategory\r\n      parameters:\r\n        - $ref: \"#/components/parameters/categoryId\"\r\n      responses:\r\n        \"200\":\r\n          description: Category item list\r\n          content:\r\n            application/json:\r\n              schema:\r\n                $ref: \"#/components/schemas/ItemListResponse\"\r\n        \"404\":\r\n          $ref: \"#/components/responses/NotFound\"\r\ncomponents:\r\n  parameters:\r\n    itemId:\r\n      name: itemId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: item-123\r\n    slug:\r\n      name: slug\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\r\n      example: blue-widget\r\n    categoryId:\r\n      name: categoryId\r\n      in: path\r\n      required: true\r\n      schema:\r\n        type: string\r\n        pattern: \"^[a-z0-9][a-z0-9-]{1,63}$\"\r\n      example: home-goods\r\n    searchTerm:\r\n      name: searchTerm\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: string\r\n        minLength: 1\r\n      example: widget\r\n    page:\r\n      name: page\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        default: 1\r\n    pageSize:\r\n      name: pageSize\r\n      in: query\r\n      required: false\r\n      schema:\r\n        type: integer\r\n        minimum: 1\r\n        maximum: 100\r\n        default: 20\r\n  responses:\r\n    BadRequest:\r\n      description: Validation failed\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n          examples:\r\n            default:\r\n              value:\r\n                code: BAD_REQUEST\r\n                message: Invalid request\r\n    NotFound:\r\n      description: Resource not found\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n    TooManyRequests:\r\n      description: Rate limit exceeded\r\n      headers:\r\n        Retry-After:\r\n          schema:\r\n            type: integer\r\n          description: Seconds until the next allowed request.\r\n      content:\r\n        application/json:\r\n          schema:\r\n            $ref: \"#/components/schemas/ErrorResponse\"\r\n  schemas:\r\n    ItemListResponse:\r\n      type: object\r\n      required: [data, page]\r\n      properties:\r\n        data:\r\n          type: array\r\n          items:\r\n            $ref: \"#/components/schemas/ItemSummary\"\r\n        page:\r\n          $ref: \"#/components/schemas/Page\"\r\n    ItemSummary:\r\n      type: object\r\n      required: [itemId, slug, name, status]\r\n      properties:\r\n        itemId:\r\n          type: string\r\n        slug:\r\n          type: string\r\n        name:\r\n          type: string\r\n        status:\r\n          type: string\r\n          enum: [published, hidden]\r\n    ItemDetail:\r\n      allOf:\r\n        - $ref: \"#/components/schemas/ItemSummary\"\r\n        - type: object\r\n          properties:\r\n            description:\r\n              type: string\r\n            categories:\r\n              type: array\r\n              items:\r\n                type: string\r\n            variants:\r\n              type: array\r\n              items:\r\n                $ref: \"#/components/schemas/Variant\"\r\n    Variant:\r\n      type: object\r\n      required: [variantId, sku, price, inventory]\r\n      properties:\r\n        variantId:\r\n          type: string\r\n        sku:\r\n          type: string\r\n        price:\r\n          $ref: \"#/components/schemas/Price\"\r\n        inventory:\r\n          $ref: \"#/components/schemas/Inventory\"\r\n    Price:\r\n      type: object\r\n      required: [amount, currency]\r\n      properties:\r\n        amount:\r\n          type: number\r\n          format: decimal\r\n        currency:\r\n          type: string\r\n          example: EUR\r\n    Inventory:\r\n      type: object\r\n      required: [available]\r\n      properties:\r\n        available:\r\n          type: integer\r\n          minimum: 0\r\n        reserved:\r\n          type: integer\r\n          minimum: 0\r\n        source:\r\n          type: string\r\n    Page:\r\n      type: object\r\n      required: [number, size, totalItems]\r\n      properties:\r\n        number:\r\n          type: integer\r\n        size:\r\n          type: integer\r\n        totalItems:\r\n          type: integer\r\n    ErrorResponse:\r\n      type: object\r\n      required: [code, message]\r\n      properties:\r\n        code:\r\n          type: string\r\n        message:\r\n          type: string\r\n",
          "draft": true
        },
        {
          "id": "cross-functional-collaboration-best-practices",
          "slug": "resources/cross-functional-collaboration-best-practices",
          "title": "Meilleures pratiques en matière de collaboration interfonctionnelle",
          "description": "Pratiques visant à faciliter la communication et l'alignement entre les équipes commerciales et techniques lors de la planification ou de la fourniture d'API.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 147,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de collaboration interfonctionnelle »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière de collaboration interfonctionnelle »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Encourager la collaboration interfonctionnelle entre les équipes API, les unités opérationnelles et les parties prenantes afin d'aligner les initiatives API sur les objectifs de l'entreprise."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "data-privacy-guidelines",
          "slug": "resources/data-privacy-guidelines",
          "title": "Lignes directrices sur la protection des données",
          "description": "Les considérations de conception pour s'assurer que les API respectent les réglementations sur la protection des données comme le GDPR grâce à l'anonymisation et aux contrôles d'accès.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 148,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices sur la protection des données »",
            "Approche cohérente pour appliquer « Lignes directrices sur la protection des données »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Garantir la confidentialité des données des utilisateurs en mettant en œuvre des mesures de protection des données, telles que l'anonymisation et les contrôles d'accès."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "domainCanvas",
          "slug": "resources/domain-canvas",
          "title": "Domain Canvas",
          "description": "Un outil de modélisation pour définir et communiquer les entités et les relations clés de votre domaine, en assurant la cohérence sémantique entre les API.",
          "category": "canvas",
          "icon": "dashboard-outline",
          "order": 152,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Domain Canvas »",
            "Approche cohérente pour appliquer « Domain Canvas »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Définir les entités de base, leurs attributs et leurs relations afin de créer une compréhension conceptuelle partagée entre les API."
          ],
          "canvasId": "domainCanvas",
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": false
        },
        {
          "id": "ecosystem-vision-template",
          "slug": "resources/ecosystem-vision-template",
          "title": "Modèle de vision de l'écosystème",
          "description": "Un outil de planification stratégique pour définir l'écosystème de l'API, y compris les partenaires cibles, les chaînes de valeur et les possibilités d'intégration.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 154,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de vision de l'écosystème »",
            "Approche cohérente pour appliquer « Modèle de vision de l'écosystème »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Réaliser des études de marché pour identifier les tendances, les opportunités et les menaces dans le domaine des API.",
            "Identifier les principaux partenaires de l'écosystème et les parties prenantes qui bénéficieront de l'écosystème ou y contribueront.",
            "Identifier les lacunes du marché que vos API peuvent combler, en se basant sur les offres des concurrents.",
            "Identifier les partenaires potentiels dont les API peuvent améliorer vos capacités en matière d'API et votre proposition de valeur.",
            "Élaborer une stratégie de différenciation qui mette en évidence les caractéristiques et les avantages uniques de vos API.",
            "Définissez la vision de l'écosystème pour vos API, y compris la manière dont elles interagiront avec d'autres systèmes et plateformes.",
            "Concevoir des API pour permettre une intégration et une collaboration transparentes au sein de l'écosystème."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "industry-standards-and-best-practices",
          "slug": "resources/industry-standards-and-best-practices",
          "title": "Normes industrielles et meilleures pratiques",
          "description": "Une ressource de référence pour aligner la conception et le fonctionnement de l'API sur des cadres et des spécifications largement reconnus dans l'industrie.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 157,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Normes industrielles et meilleures pratiques »",
            "Approche cohérente pour appliquer « Normes industrielles et meilleures pratiques »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Identifier les normes et les meilleures pratiques du secteur pour s'assurer que les API sont compétitives et conformes."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "partner-integration-guidelines",
          "slug": "resources/partner-integration-guidelines",
          "title": "Lignes directrices pour l'intégration des partenaires",
          "description": "Listes de contrôle de l'intégration et modèles de communication pour gérer les aspects techniques et juridiques des relations avec des API tierces.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 164,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Lignes directrices pour l'intégration des partenaires »",
            "Approche cohérente pour appliquer « Lignes directrices pour l'intégration des partenaires »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Établir des processus d'intégration et des lignes directrices pour la collaboration avec les partenaires, y compris l'intégration technique, le partage des données et le soutien.",
            "Surveillez les performances et la conformité de l'API de vos partenaires pour garantir la fiabilité et l'alignement avec votre stratégie d'API."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "role-communication-best-practices",
          "slug": "resources/role-communication-best-practices",
          "title": "Meilleures pratiques en matière de communication sur les rôles",
          "description": "Outils permettant de définir et de documenter les responsabilités de chacun dans le cadre des initiatives API, afin de garantir la clarté des transferts et des responsabilités.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 167,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière de communication sur les rôles »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière de communication sur les rôles »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Établir des responsabilités claires pour chaque rôle, notamment en ce qui concerne la conception, le développement, les tests et les opérations de l'API.",
            "Veiller à ce que les rôles et les responsabilités soient communiqués à tous les membres de l'équipe et aux parties prenantes afin d'assurer l'alignement."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "scalable-infrastructure-best-practices",
          "slug": "resources/scalable-infrastructure-best-practices",
          "title": "Meilleures pratiques en matière d'infrastructure évolutive",
          "description": "Des conseils architecturaux pour s'assurer que les API sont déployées sur une infrastructure capable de gérer avec élasticité les pics d'utilisation et la croissance.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 168,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'infrastructure évolutive »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière d'infrastructure évolutive »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Concevoir une infrastructure d'API évolutive et résiliente, en utilisant des modèles et des technologies \"cloud-native\".",
            "Contrôler les performances et la capacité de l'infrastructure pour s'assurer qu'elle peut répondre à une demande croissante."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "service-agreement-template",
          "slug": "resources/service-agreement-template",
          "title": "Modèle de contrat de service",
          "description": "Un format d'accord personnalisable qui définit les attentes, les accords de niveau de service, les responsabilités et les conditions d'accès pour la consommation d'API.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 172,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Modèle de contrat de service »",
            "Approche cohérente pour appliquer « Modèle de contrat de service »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Définir des accords de service qui décrivent les attentes, les niveaux de service et les responsabilités pour chaque API.",
            "Utiliser des formats normalisés pour créer des accords de service lisibles par machine, faciles à partager et à valider.",
            "Veiller à ce que les accords de service soient examinés et approuvés par les parties prenantes afin de garantir l'alignement et la clarté."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "stakeholder-engagement-best-practices",
          "slug": "resources/stakeholder-engagement-best-practices",
          "title": "Meilleures pratiques en matière d'engagement des parties prenantes",
          "description": "Tactiques d'engagement pour aligner les parties prenantes internes et externes sur les objectifs, la valeur et la gouvernance partagés de l'API.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 173,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques en matière d'engagement des parties prenantes »",
            "Approche cohérente pour appliquer « Meilleures pratiques en matière d'engagement des parties prenantes »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Engager les parties prenantes pour assurer l'alignement et le soutien des initiatives API."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "test-automation-frameworks",
          "slug": "resources/test-automation-frameworks",
          "title": "Cadres d'automatisation des tests",
          "description": "Outils et modèles recommandés pour automatiser les tests de contrat, de régression et d'intégration des API dans les différents environnements.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 174,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Cadres d'automatisation des tests »",
            "Approche cohérente pour appliquer « Cadres d'automatisation des tests »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Mettre en œuvre des cadres d'automatisation des tests qui prennent en charge les tests de contrat, les tests d'intégration et les tests de bout en bout."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "vendor-management-best-practices",
          "slug": "resources/vendor-management-best-practices",
          "title": "Meilleures pratiques de gestion des fournisseurs",
          "description": "Cadre pour l'évaluation et la gestion des fournisseurs d'API externes et des intégrations de tiers en fonction des risques, des performances et de la conformité.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 178,
          "outcomes": [
            "Compréhension partagée de l’objectif et de l’utilisation de « Meilleures pratiques de gestion des fournisseurs »",
            "Approche cohérente pour appliquer « Meilleures pratiques de gestion des fournisseurs »",
            "Meilleure application des pratiques associées"
          ],
          "steps": [
            "Mettre en place des processus de gestion des fournisseurs afin d'évaluer, d'intégrer et de contrôler les fournisseurs d'API tiers.",
            "Définir les critères d'évaluation des API des fournisseurs, y compris la fiabilité, la sécurité et la conformité."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "integration-style-selection-guide",
          "slug": "resources/integration-style-selection-guide",
          "title": "Guide de sélection du mode d’intégration",
          "description": "Guide pour choisir entre API, événement, fichier, flux, produit de données, intégration directe ou mode hybride selon les exigences et contraintes.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 180,
          "outcomes": [
            "Mode de mise en œuvre de l’intégration justifié",
            "Compromis documentés entre les différentes options",
            "Choix traçable aux exigences utilisateurs, plateforme, données et opérations"
          ],
          "steps": [
            "Comparez les modes viables selon la latence, le volume, le couplage, la responsabilité des données, la fraîcheur, la gouvernance et l’exploitabilité.",
            "Identifiez les options adaptées au cas d’usage.",
            "Documentez contraintes, risques et dépendances de plateforme.",
            "Consignez les raisons du rejet des alternatives."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "process-workflow-design-guide",
          "slug": "resources/process-workflow-design-guide",
          "title": "Guide de conception des processus et workflows",
          "description": "Guide pour modéliser étapes, rôles, transferts, décisions, états, entrées, sorties et exceptions d’un workflow automatisé.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 181,
          "outcomes": [
            "Conception claire du workflow automatisé",
            "Étapes et transferts documentés avant mise en œuvre",
            "États, entrées, sorties et exceptions compris"
          ],
          "steps": [
            "Cartographiez le processus actuel et cible, avec les responsabilités humaines et système.",
            "Identifiez déclencheurs, états, décisions, données, sorties et critères de fin.",
            "Documentez les transferts entre utilisateurs, systèmes, opérations et support.",
            "Confirmez les étapes automatisées et celles nécessitant un jugement humain."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "decision-business-rules-guide",
          "slug": "resources/decision-business-rules-guide",
          "title": "Guide des décisions et règles métier",
          "description": "Guide pour capturer règles, seuils, décisions, validations, critères d’éligibilité et responsabilités.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 182,
          "outcomes": [
            "Décisions et règles métier explicites",
            "Règles et seuils documentés avec leurs responsables",
            "Décisions traçables aux politiques, processus ou objectifs métier"
          ],
          "steps": [
            "Listez les décisions que l’automatisation doit prendre ou soutenir.",
            "Documentez conditions, seuils, exceptions, validations et escalades.",
            "Identifiez les responsables et la gouvernance des changements."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "automation-trigger-handoff-exception-guide",
          "slug": "resources/automation-trigger-handoff-exception-guide",
          "title": "Guide des déclencheurs, transferts et exceptions",
          "description": "Guide pour définir déclencheurs, transferts humains, exceptions, reprises, actions compensatoires et escalades.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 183,
          "outcomes": [
            "Déclencheurs et chemins d’exception définis",
            "Transferts humains et escalades explicites",
            "Exceptions, reprises et compensations conçues avant livraison"
          ],
          "steps": [
            "Définissez événements, horaires, actions utilisateur ou états système déclencheurs.",
            "Cartographiez les transferts vers utilisateurs, opérateurs ou support.",
            "Documentez exceptions, reprises, délais et solutions de repli.",
            "Définissez alertes et seuils d’escalade."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "automation-testing-guide",
          "slug": "resources/automation-testing-guide",
          "title": "Guide de test des automatisations",
          "description": "Guide pour tester workflows, décisions, intégrations, exceptions, rollback, supervision et impact utilisateur.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 184,
          "outcomes": [
            "Comportement de l’automatisation validé",
            "Tests des workflows, règles, exceptions et intégrations définis",
            "Confiance avant publication pour les parcours automatisés et assistés"
          ],
          "steps": [
            "Créez des tests pour parcours nominaux, cas limites, exceptions, reprises et transferts.",
            "Validez règles métier et décisions avec des données représentatives.",
            "Testez rollback, reprise, observabilité et intervention manuelle.",
            "Impliquez utilisateurs et opérateurs dans les tests d’acceptation."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "automation-operational-ownership-guide",
          "slug": "resources/automation-operational-ownership-guide",
          "title": "Guide de responsabilité opérationnelle",
          "description": "Guide pour définir responsabilité, runbooks, supervision, support, suivi, contrôle des changements et amélioration continue.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 185,
          "outcomes": [
            "Modèle opérationnel clair",
            "Responsabilités de propriété, support et escalade attribuées",
            "Pratiques de suivi et changement prêtes pour exploitation"
          ],
          "steps": [
            "Définissez les responsables métier, techniques et opérationnels.",
            "Documentez runbooks, support, signaux de suivi, attentes de service et escalades.",
            "Définissez le contrôle des changements pour workflows, plateforme et règles."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "automation-rollback-supervision-guide",
          "slug": "resources/automation-rollback-supervision-guide",
          "title": "Guide de rollback et supervision",
          "description": "Guide pour concevoir rollback, pause, dérogation manuelle, suivi, supervision et reprise.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 186,
          "outcomes": [
            "Chemins de reprise contrôlés",
            "Rollback, pause et dérogation documentés",
            "Besoins de supervision et responsabilités de reprise définis"
          ],
          "steps": [
            "Identifiez les actions réversibles, suspendables ou remplaçables manuellement.",
            "Définissez rollback, compensation et reprise.",
            "Documentez seuils de supervision, alertes et décisions manuelles.",
            "Validez les procédures de reprise avant publication."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "automation-readiness-checklist",
          "slug": "resources/automation-readiness-checklist",
          "title": "Checklist de préparation des automatisations",
          "description": "Checklist pour valider workflow, contrôles, risques, conformité, supervision humaine, preuves de test, rollback, opérations et préparation.",
          "category": "checklist",
          "icon": "check-box-outline",
          "order": 187,
          "outcomes": [
            "Préparation de l’automatisation documentée",
            "Écarts et mesures d’atténuation connus avant publication",
            "Preuves pour qualité, risques, conformité, supervision et approbation"
          ],
          "steps": [
            "Examinez workflow, règles métier, contrôles, accès, données et exceptions.",
            "Vérifiez preuves de test, rollback, supervision et support.",
            "Confirmez responsabilités, runbooks, suivi et contrôle des changements.",
            "Consignez les écarts, décisions et risques acceptés."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        },
        {
          "id": "automation-rollout-enablement-guide",
          "slug": "resources/automation-rollout-enablement-guide",
          "title": "Guide de déploiement et d’enablement",
          "description": "Guide pour déployer les automatisations avec communication, onboarding, instructions d’exploitation, support, conduite du changement et feedback.",
          "category": "guideline",
          "icon": "edit-document-outline",
          "order": 188,
          "outcomes": [
            "Utilisateurs et opérateurs préparés",
            "Communication, onboarding et support préparés",
            "Compréhension des changements de travail après publication"
          ],
          "steps": [
            "Définissez publics, calendrier, canaux et besoins de formation.",
            "Publiez instructions, support, gestion des exceptions et contacts.",
            "Planifiez l’accompagnement de transition.",
            "Collectez les retours et alimentez le backlog."
          ],
          "canvasId": null,
          "sourcePath": null,
          "sourceUrl": null,
          "contentMarkdown": null,
          "draft": true
        }
      ],
      "criteria": [
        {
          "id": "metrics-feedback-available",
          "title": "Des signaux de marché pertinents, des retours d'expérience ou des informations opérationnelles sont disponibles pour guider cette opportunité de capacité.",
          "description": "Relevant market signals, feedback, or operational insights are available to guide this API opportunity.",
          "category": ""
        },
        {
          "id": "business-goals-defined",
          "title": "Les objectifs métier sont définis.",
          "description": "Business goals are defined.",
          "category": ""
        },
        {
          "id": "market-research-done",
          "title": "L'étude de marché identifie des opportunités de capacité.",
          "description": "Market research identifies API opportunities.",
          "category": ""
        },
        {
          "id": "stakeholder-approval",
          "title": "Les parties prenantes concernées conviennent que cette opportunité de capacité mérite d'être explorée et priorisée.",
          "description": "Relevant stakeholders agree this API opportunity is worth exploring and prioritizing.",
          "category": ""
        },
        {
          "id": "api-opportunity-documented",
          "title": "L'opportunité de capacité est identifiée et documentée.",
          "description": "Individual API opportunities are identified and documented.",
          "category": ""
        },
        {
          "id": "api-reusability",
          "title": "La capacité répond à un besoin métier clair et peut être réutilisée par les utilisateurs prévus.",
          "description": "The API meets a clear business need and is reusable for multiple API consumers.",
          "category": ""
        },
        {
          "id": "hide-backend-discrepancies",
          "title": "L’interface choisie fournit une abstraction appropriée aux utilisateurs.",
          "description": "The API is intended to shield consumers from backend complexity and inconsistencies.",
          "category": ""
        },
        {
          "id": "value-prop-validated",
          "title": "La proposition de valeur de la capacité a été validée avec les parties prenantes métier et utilisateurs.",
          "description": "The API value proposition has been reviewed and validated with the relevant business and consumer stakeholders.",
          "category": ""
        },
        {
          "id": "consumer-segments-identified",
          "title": "Les segments d'utilisateurs sont identifiés.",
          "description": "API consumer segments (internal and external) are identified.",
          "category": ""
        },
        {
          "id": "api-roadmap-defined",
          "title": "Une feuille de route de haut niveau pour la mise en œuvre est définie.",
          "description": "High-level roadmaps for API development are established.",
          "category": ""
        },
        {
          "id": "architecture-patterns-validated",
          "title": "L'architecture, la plateforme et le mode de mise en œuvre choisis ont été validés avec les parties prenantes concernées en architecture, sécurité et plateforme.",
          "description": "The chosen API architecture and platform patterns have been validated with the relevant architecture, security, and platform stakeholders.",
          "category": ""
        },
        {
          "id": "design-reflects-business-value",
          "title": "La conception de l'interface et les capacités exposées sont clairement reliées à la valeur métier et aux besoins des utilisateurs.",
          "description": "The API design and exposed capabilities clearly trace back to business value and user needs.",
          "category": ""
        },
        {
          "id": "api-consistency",
          "title": "La conception de l'interface respecte les standards partagés de produit, de conception et de qualité.",
          "description": "The API design follows our shared API product and design conventions.",
          "category": ""
        },
        {
          "id": "api-contract-tested",
          "title": "Le contrat d'interface a été validé et testé par rapport aux exigences fonctionnelles et non fonctionnelles.",
          "description": "The API contract is tested and meets functional and non-functional requirements.",
          "category": ""
        },
        {
          "id": "automation-workflow-validated",
          "title": "Le workflow, les règles, les intégrations et les contrats d’interface pertinents ont été validés et testés.",
          "description": "The workflow, rules, integrations, and relevant interface contracts have been validated and tested.",
          "category": ""
        },
        {
          "id": "api-description-available",
          "title": "L’interface et ses capacités sont documentées de manière suffisamment claire pour la revue, l’audit et l’onboarding.",
          "description": "The API and its exposed capabilities are described clearly enough for review, audit, and onboarding.",
          "category": ""
        },
        {
          "id": "audit-passed",
          "title": "La solution réussit les contrôles de qualité, de sécurité, de conformité et de préparation.",
          "description": "The API passes compliance, security, and audit checks.",
          "category": ""
        },
        {
          "id": "audit-reports-shared",
          "title": "Les résultats d'audit et les décisions de correction sont partagés avec les parties prenantes concernées.",
          "description": "Audit findings and remediation decisions are shared with the relevant stakeholders.",
          "category": ""
        },
        {
          "id": "api-ready-for-publishing",
          "title": "La capacité est prête à être publiée ou mise à disposition via le mécanisme de livraison choisi.",
          "description": "The API is ready to be deployed and exposed through the intended gateways and environments.",
          "category": ""
        },
        {
          "id": "api-documentation-ready",
          "title": "La documentation et les supports d'onboarding destinés aux utilisateurs sont prêts.",
          "description": "Consumer-facing API documentation is complete enough for publishing and onboarding.",
          "category": ""
        },
        {
          "id": "consumer-support-ready",
          "title": "Les processus d'onboarding, de support et de communication sont prêts pour les utilisateurs.",
          "description": "Registration, support, and communication processes are ready for API consumers.",
          "category": ""
        },
        {
          "id": "legal-compliance-clear",
          "title": "Les exigences juridiques, de confidentialité et de conformité liées à la publication ou à la mise à disposition sont définies et comprises.",
          "description": "Legal, privacy, and compliance requirements for publishing are defined and understood.",
          "category": ""
        }
      ]
    }
  }
}
