{"openapi":"3.1.0","info":{"title":"Oracle des métiers — API (prototype)","description":"**Prototype de recherche, pas une source officielle.**\n\nPrototype. Les données « etabli » viennent de sources gouvernementales ; les liens « propose » (LLM) et « calcule » (mesure), les situations et les fiches rédigées sont des inférences qu'aucune autorité n'a confirmées.\n\nL'oracle rassemble des sources gouvernementales publiques sur les métiers du Québec\n(Québec.ca, CNP 2021, SIPeC 2025, taxonomie SCT, profils DRHC, programmes d'études,\nnormes professionnelles et carnets d'apprentissage), les relie par des identifiants\ncommuns et y ajoute des fiches de connaissances rédigées.\n\n* Toute réponse est enveloppée : `avertissement`, `version` (des données), `donnees`.\n* Chaque lien porte un **statut** : `etabli` (source), `calcule` (mesure), `propose`\n  (jugement d'un LLM, à valider par un expert).\n* Les identifiants (`qc:63202.021`, `cours:400916/e4`, `sct:F.04.c.01`…) se passent en\n  paramètres de requête.\n* Limites : 60 requêtes par minute et par adresse (10 pour\n  les routes lourdes, 120 pour `/mcp`). Réponse 429 au-delà.\n* Le même contenu est offert aux IA par le MCP distant : `POST /mcp`.\n* Provenance : `/api/v1/sources`.\n","license":{"name":"Données : licences des sources ; apports de l'oracle : CC BY 4.0","url":"https://joboracle.cloud/sources"},"version":"1.0.0"},"paths":{"/api/v1/sante":{"get":{"tags":["service"],"summary":"État du service","operationId":"sante_api_v1_sante_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/version":{"get":{"tags":["service"],"summary":"Version des données et sommes de contrôle","operationId":"version_api_v1_version_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/statistiques":{"get":{"tags":["service"],"summary":"Requêtes par jour et par route (sans IP)","operationId":"statistiques_api_v1_statistiques_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/metiers":{"get":{"tags":["métiers"],"summary":"Liste des métiers (point de départ)","operationId":"metiers_api_v1_metiers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/metiers/fiche":{"get":{"tags":["métiers"],"summary":"Fiche complète d'un métier","operationId":"fiche_api_v1_metiers_fiche_get","parameters":[{"name":"noeud","in":"query","required":true,"schema":{"type":"string","description":"Nœud du métier, ex. qc:63202.021 ou sipec:63201.00.","title":"Noeud"},"description":"Nœud du métier, ex. qc:63202.021 ou sipec:63201.00."},{"name":"parties","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Parties séparées par des virgules : descriptions, taches, contexte, marche_travail, traits, profil_sipec, appellations, formation, apprentissage, liens, documents_connaissances, sources","title":"Parties"},"description":"Parties séparées par des virgules : descriptions, taches, contexte, marche_travail, traits, profil_sipec, appellations, formation, apprentissage, liens, documents_connaissances, sources"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/recherche":{"get":{"tags":["recherche"],"summary":"Recherche plein texte","operationId":"recherche_api_v1_recherche_get","parameters":[{"name":"texte","in":"query","required":true,"schema":{"type":"string","title":"Texte"}},{"name":"table","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Table"}},{"name":"limite","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limite"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/entite":{"get":{"tags":["recherche"],"summary":"Une entité, ses liens et les documents qui la citent","operationId":"entite_api_v1_entite_get","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","description":"Identifiant, ex. qc:63202.021, cours:400916/e4, sct:F.04.c.01.","title":"Id"},"description":"Identifiant, ex. qc:63202.021, cours:400916/e4, sct:F.04.c.01."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/competence":{"get":{"tags":["formation"],"summary":"Arbre complet d'une compétence (programme ou norme)","operationId":"competence_api_v1_competence_get","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","description":"Identifiant, ex. qc:63202.021, cours:400916/e4, sct:F.04.c.01.","title":"Id"},"description":"Identifiant, ex. qc:63202.021, cours:400916/e4, sct:F.04.c.01."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/comparaison/metiers":{"get":{"tags":["croisements"],"summary":"Jonctions entre deux métiers","operationId":"comparaison_metiers_api_v1_comparaison_metiers_get","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string","description":"Nœud du métier, ex. qc:63202.021 ou sipec:63201.00.","title":"A"},"description":"Nœud du métier, ex. qc:63202.021 ou sipec:63201.00."},{"name":"b","in":"query","required":true,"schema":{"type":"string","description":"Nœud du métier, ex. qc:63202.021 ou sipec:63201.00.","title":"B"},"description":"Nœud du métier, ex. qc:63202.021 ou sipec:63201.00."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tronc-commun":{"get":{"tags":["croisements"],"summary":"Ce que plusieurs métiers ont tous en commun","operationId":"tronc_commun_api_v1_tronc_commun_get","parameters":[{"name":"noeuds","in":"query","required":true,"schema":{"type":"string","description":"Nœuds séparés par des virgules.","title":"Noeuds"},"description":"Nœuds séparés par des virgules."},{"name":"seuil","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":3,"title":"Seuil"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/comparaison/programmes":{"get":{"tags":["croisements"],"summary":"Jonctions entre deux programmes","operationId":"comparaison_programmes_api_v1_comparaison_programmes_get","parameters":[{"name":"a","in":"query","required":true,"schema":{"type":"string","description":"Programme, ex. 5370 ou prog:5370.","title":"A"},"description":"Programme, ex. 5370 ou prog:5370."},{"name":"b","in":"query","required":true,"schema":{"type":"string","description":"Programme, ex. 5311 ou prog:5311.","title":"B"},"description":"Programme, ex. 5311 ou prog:5311."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/carrefour":{"get":{"tags":["croisements"],"summary":"Tous les métiers rattachés à une compétence ou un SCT","operationId":"carrefour_api_v1_carrefour_get","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","description":"Identifiant, ex. qc:63202.021, cours:400916/e4, sct:F.04.c.01.","title":"Id"},"description":"Identifiant, ex. qc:63202.021, cours:400916/e4, sct:F.04.c.01."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/couverture":{"get":{"tags":["formation"],"summary":"Couverture d'un métier par sa formation (pilote)","operationId":"couverture_api_v1_couverture_get","parameters":[{"name":"noeud","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Noeud"}},{"name":"programme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Programme"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ecarts":{"get":{"tags":["formation"],"summary":"Tâches et situations sans formation rattachée","operationId":"ecarts_api_v1_ecarts_get","parameters":[{"name":"noeud","in":"query","required":true,"schema":{"type":"string","description":"Nœud du métier, ex. qc:63202.021 ou sipec:63201.00.","title":"Noeud"},"description":"Nœud du métier, ex. qc:63202.021 ou sipec:63201.00."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/document":{"get":{"tags":["connaissances"],"summary":"Une fiche de connaissances, entière ou par sections","operationId":"document_api_v1_document_get","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string","description":"Document ou section, ex. kb:63201.00 ou kb:63201.00#sst.","title":"Id"},"description":"Document ou section, ex. kb:63201.00 ou kb:63201.00#sst."},{"name":"sections","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Clés séparées par des virgules.","title":"Sections"},"description":"Clés séparées par des virgules."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sections":{"get":{"tags":["connaissances"],"summary":"Une même section, d'un métier à l'autre","operationId":"sections_api_v1_sections_get","parameters":[{"name":"cle","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cle"}},{"name":"noeuds","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Nœuds, virgules.","title":"Noeuds"},"description":"Nœuds, virgules."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sources":{"get":{"tags":["provenance"],"summary":"Sources et adresses officielles","operationId":"sources_api_v1_sources_get","parameters":[{"name":"id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contexte-pedagogique":{"get":{"tags":["pédagogie"],"summary":"Tout pour contextualiser un contenu pour un ou des métiers (et une compétence)","operationId":"contexte_pedagogique_api_v1_contexte_pedagogique_get","parameters":[{"name":"noeuds","in":"query","required":true,"schema":{"type":"string","description":"Nœuds séparés par des virgules.","title":"Noeuds"},"description":"Nœuds séparés par des virgules."},{"name":"competence","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Competence"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scenarios":{"get":{"tags":["pédagogie"],"summary":"Démarches prêtes à suivre (sans nom : la liste)","operationId":"scenario_api_v1_scenarios_get","parameters":[{"name":"nom","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nom"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sql":{"get":{"tags":["recherche"],"summary":"Requête SQL en lecture seule (200 lignes, 2 s)","operationId":"sql_api_v1_sql_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Une requête SELECT ou WITH. Schéma : /api/v1/schema.","title":"Q"},"description":"Une requête SELECT ou WITH. Schéma : /api/v1/schema."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/schema":{"get":{"tags":["recherche"],"summary":"Schéma commenté de la base","operationId":"schema_api_v1_schema_get","responses":{"200":{"description":"Successful Response"}}}},"/api/v1/guide":{"get":{"tags":["service"],"summary":"Guide de l'API (Markdown, écrit pour une IA)","operationId":"guide_api_v1_guide_get","responses":{"200":{"description":"Successful Response"}}}},"/mcp":{"post":{"tags":["MCP"],"summary":"MCP distant (JSON-RPC 2.0)","operationId":"mcp_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}