{"id":217485,"date":"2026-08-22T09:19:20","date_gmt":"2026-08-22T07:19:20","guid":{"rendered":"https:\/\/fivemx.com\/developers\/"},"modified":"2026-09-01T02:34:27","modified_gmt":"2026-09-01T00:34:27","slug":"developpeurs","status":"publish","type":"page","link":"https:\/\/rpcrate.com\/fr\/developers\/","title":{"rendered":"RPCrate Portail d\u00e9veloppeur"},"content":{"rendered":"<p class=\"has-large-font-size wp-block-paragraph\">RPCrate publie un HTTP API en lecture seule sur son catalogue de scripts FiveM, une description OpenAPI 3.1 de celui-ci, et un outil en ligne de commande qui interagit avec. Tout sur cette page est public, ne n\u00e9cessite aucune cl\u00e9 et peut \u00eatre utilis\u00e9 par une personne, un script ou un agent.<\/p><h2 class=\"wp-block-heading\">Le catalogue RPCrate API<\/h2><p class=\"wp-block-paragraph\">Un espace de noms, quatre points de terminaison GET, JSON uniquement. Le API distingue les populations de produits publi\u00e9es et visibles dans le catalogue au lieu de les traiter comme interchangeables :<\/p><dl class=\"fivemx-catalog-population-counts\"><div><dt><code data-no-translation=\"\">published_product_count<\/code><\/dt><dd><strong>1\u00a0706<\/strong> \u2014 Tous les produits WooCommerce publi\u00e9s, y compris les produits intentionnellement masqu\u00e9s de la d\u00e9couverte publique du catalogue.<\/dd><\/div><div><dt><code data-no-translation=\"\">catalog_visible_product_count<\/code><\/dt><dd><strong>1\u00a0625<\/strong> \u2014 La population du catalogue public utilis\u00e9e par la page d'accueil et par \/catalog\/products.total apr\u00e8s la visibilit\u00e9 du catalogue et les promotions en vigueur.<\/dd><\/div><\/dl>\n<p class=\"wp-block-paragraph\"><code data-no-translation=\"\">GET \/catalog\/products<\/code> pages uniquement la population visible du catalogue. Son filtre non appliqu\u00e9 <code data-no-translation=\"\">total<\/code> \u00e9quivaut donc <code data-no-translation=\"\">catalog_visible_product_count<\/code>; <code data-no-translation=\"\">published_product_count<\/code> reste nomm\u00e9 s\u00e9par\u00e9ment dans l'index API.<\/p><h3 class=\"wp-block-heading\">URL de base<\/h3><pre data-no-translation=\"\" class=\"wp-block-code\"><code data-no-translation=\"\">https:\/\/rpcrate.com\/wp-json\/fivemx\/v1<\/code><\/pre><h3 class=\"wp-block-heading\">Points d'acc\u00e8s<\/h3><ul class=\"wp-block-list\"><li><code data-no-translation=\"\">GET \/catalog<\/code> \u2014 index avec les d\u00e9comptes, la devise et les liens vers tout le reste sur cette page<\/li><li><code data-no-translation=\"\">GET \/catalog\/categories<\/code> \u2014 toutes les 46 cat\u00e9gories avec le nombre de produits<\/li><li><code data-no-translation=\"\">GET \/catalog\/products<\/code> \u2014 une page de produits, filtrable par <code data-no-translation=\"\">category<\/code> et <code data-no-translation=\"\">framework<\/code>, jusqu'\u00e0 50 par page<\/li><li><code data-no-translation=\"\">GET \/catalog\/products\/{slug}<\/code> \u2014 un produit unique par son slug anglais<\/li><\/ul><h3 class=\"wp-block-heading\">Authentification et \u00e9critures<\/h3><p class=\"wp-block-paragraph\">Il n'y en a pas, et il n'y en a pas. Chaque point de terminaison est un GET anonyme. Rien ici ne cr\u00e9e une commande, ne modifie un prix ou ne touche un compte, il n'y a donc pas de cl\u00e9 \u00e0 divulguer et pas d'\u00e9tat \u00e0 endommager par une erreur.<\/p><h2 class=\"wp-block-heading\">Sp\u00e9cification OpenAPI<\/h2><p class=\"wp-block-paragraph\">La description compl\u00e8te lisible par machine, g\u00e9n\u00e9r\u00e9e \u00e0 partir du m\u00eame contrat que celui contre lequel le API est impl\u00e9ment\u00e9, de sorte que les deux ne peuvent pas d\u00e9river :<\/p><ul class=\"wp-block-list\"><li><code data-no-translation=\"\">https:\/\/rpcrate.com\/openapi.json<\/code><\/li><li><code data-no-translation=\"\">https:\/\/rpcrate.com\/.well-known\/openapi.json<\/code> \u2014 octet par octet identique, pour les clients qui regardent d'abord l\u00e0-bas<\/li><li><code data-no-translation=\"\">https:\/\/rpcrate.com\/.well-known\/api-catalog<\/code> \u2014 un jeu de liens RFC 9727 pointant vers les deux<\/li><\/ul><p class=\"wp-block-paragraph\">La page d'accueil le mentionne \u00e9galement avec un <code data-no-translation=\"\">rel=\"service-desc\"<\/code> lien, et <code data-no-translation=\"\">https:\/\/rpcrate.com\/llms.txt<\/code> d\u00e9crit le site pour les mod\u00e8les linguistiques.<\/p><h2 class=\"wp-block-heading\">Le RPCrate CLI<\/h2><p class=\"wp-block-paragraph\">Un outil en ligne de commande officiel encapsule le m\u00eame API. Node 18 ou plus r\u00e9cent, z\u00e9ro d\u00e9pendance d'ex\u00e9cution.<\/p><pre data-no-translation=\"\" class=\"wp-block-code\"><code data-no-translation=\"\">npm install -g @fivemx\/cli\nfivemx catalog\nfivemx products --framework qbcore --per-page 5\nfivemx product audio-speaker-script --json<\/code><\/pre><p class=\"wp-block-paragraph\">Les codes de sortie s\u00e9parent une erreur d'utilisation d'une panne sans analyser aucune sortie : <code data-no-translation=\"\">0<\/code> ok, <code data-no-translation=\"\">1<\/code> erreur d'utilisation sans requ\u00eate envoy\u00e9e, <code data-no-translation=\"\">2<\/code> la requ\u00eate a \u00e9chou\u00e9, <code data-no-translation=\"\">3<\/code> la ressource n'existe pas.<\/p><h2 class=\"wp-block-heading\">R\u00e9ponses d'erreur<\/h2><p class=\"wp-block-paragraph\">Les erreurs sont des JSON, jamais une page HTML, et chacune contient un code, un message et une indication sur la marche \u00e0 suivre.<\/p><pre data-no-translation=\"\" class=\"wp-block-code\"><code data-no-translation=\"\">{\n  \"code\": \"fivemx_product_not_found\",\n  \"message\": \"No published product has that slug.\",\n  \"data\": {\n    \"status\": 404,\n    \"hint\": \"Slugs come from \/wp-json\/fivemx\/v1\/catalog\/products.\"\n  }\n}<\/code><\/pre><p class=\"wp-block-paragraph\">Un client qui envoie <code data-no-translation=\"\">Accept: application\/json<\/code>, ou qui s'identifie comme un agent IA connu, re\u00e7oit cette forme pour tout chemin manquant sur le site, pas seulement \u00e0 l'int\u00e9rieur de l'espace de noms API. Un navigateur conserve la page d'erreur normale.<\/p><h2 class=\"wp-block-heading\">Limites de d\u00e9bit et mise en cache<\/h2><p class=\"wp-block-paragraph\">Il n'y a pas de quota publi\u00e9. Les r\u00e9ponses sont mises en cache pendant dix minutes \u00e0 l'origine, de sorte qu'un parcours de l'ensemble du catalogue est peu co\u00fbteux pour les deux parties. Veuillez envoyer un agent utilisateur qui vous identifie, et privil\u00e9giez un passage pagin\u00e9 plut\u00f4t que de nombreuses requ\u00eates de produits uniques.<\/p><h2 class=\"wp-block-heading\">Ce que ce API ne fait pas d\u00e9lib\u00e9r\u00e9ment<\/h2><ul class=\"wp-block-list\"><li>Il n'expose pas les paniers, la validation de commande, les commandes, les clients ou les t\u00e9l\u00e9chargements. Ces chemins sont ferm\u00e9s aux robots d'exploration <code data-no-translation=\"\">robots.txt<\/code> et ne sont pas d\u00e9crits par la sp\u00e9cification.<\/li><li>Il ne sert pas de slugs traduits. Les versions locales du site utilisent des URL traduites, et ce API n'accepte que le slug anglais.<\/li><li>Il ne convertit pas les prix. Les valeurs sont dans la devise de base rapport\u00e9e par <code data-no-translation=\"\">\/catalog<\/code>, pas dans la devise s\u00e9lectionn\u00e9e par un visiteur.<\/li><li>Il n'y a pas de serveur MCP, pas de carte d'agent et pas de flux webhook. Lorsqu'il en existe un, il sera list\u00e9 ici et dans le catalogue API plut\u00f4t que d'\u00eatre annonc\u00e9 par un fichier vide.<\/li><\/ul><p class=\"wp-block-paragraph\">Les questions concernant le API doivent \u00eatre pos\u00e9es sur le <a href=\"\/fr\/contact\/\">RPCrate page de contact<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>RPCrate publishes a read-only HTTP API over its FiveM script catalogue, an OpenAPI 3.1 description of it, and a command line tool that speaks to it. Everything on this page is public, needs no key and can be used by a person, a script or an agent. The RPCrate catalogue API One namespace, four GET [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-217485","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/pages\/217485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/comments?post=217485"}],"version-history":[{"count":1,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/pages\/217485\/revisions"}],"predecessor-version":[{"id":217651,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/pages\/217485\/revisions\/217651"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media?parent=217485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}