{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"af2bd1ca-d3e5-4c4b-908e-2ef2ed9e6ce6","name":"GAR Ninja - V1 - Partner API","description":"**L'API GAR Ninja Partners** permet aux libraires numériques d'enregistrer leurs commandes aux éditeurs pour générer une livraison au GAR. Ils peuvent aussi consulter l'état de livraison des abonnements et consulter la liste des établissements GARés. Ils pouront également à terme avoir des informations relatives à leurs affectations.\n\n> L'API est en constante évolution  \nVous pouvez suivre l'évolution de l'API via notre **newsletter** ou ici : \n  \n\nVous trouverez dans cette documentation la description de chaque méthode.\n\n---\n\n# Routes\n\n- L'URL de base [https://saas.gar.ninja/partners_api](#prod) correspond à la route de l'environnement de **production**\n- L'URL de base [https://staging.gar.ninja/partners_api](#test) correspond à la route de l'environnement de **test**\n    \n\nDans la suite de cette documentation les routes utiliseront l'URL de production, mais elles sont toutes transposables pour accéder aux mêmes fonctionnalités côté environnement de test.\n\n## Version\n\nLa version de l'API complète cette URL de base. Chaque appel vers l’API devra donc **toujours contenir la base ET la version**.\n\nAinsi nous aurons :\n\n- [https://saas.gar.ninja/partners_api/v1](https://saas.gar.ninja/partners_api/v1) pour l'api de **production**\n- [https://staging.gar.ninja/partners_api/v1](https://staging.gar.ninja/partners_api/v1) pour l'api de **test**\n    \n\n---\n\n# Environnement de test\n\nL'environnement de test met à disposition des données pour permettre de tester certaines fonctionnalités. Les données de cet environnement ne représentent pas toujours la réalité et ne sont pas forcément exhaustives.\n\n---\n\n# Principes\n\nL'API GAR Ninja suit les principes généraux des API REST JSON.\n\nLes méthodes exposées désignent des ressources (abonnements, affectations, établissements...), et les verbes HTTP (GET, POST, PUT, etc.) les actions disponibles sur ces ressources.\n\nLes paramètres de requêtes sont passés par URL (méthode GET) ou dans la trame (POST, PUT, etc.). Dans ce cas elles sont attendues au format JSON.\n\nLes réponses sont renvoyées au format JSON.\n\nEn cas de succès les codes HTTP 200 (_OK_), 201 (_Created_) ou 202 (_Accepted_) sont renvoyés.\n\n## Gestion des erreurs\n\nEn cas d'erreur, l'API GAR Ninja utilise les codes HTTP classiques, dont :\n\n### Erreurs côté client (40x)\n\n| **Code HTTP** | **Signification** |\n| --- | --- |\n| 400 | `Bad Request` : la syntaxe de la trame est invalide |\n| 401 | `Unauthorized` : l'authentification n'est pas valide |\n| 403 | `Forbidden` : l'authentification ne donne pas droit à accéder au service |\n| 404 | `Not found` : la ressource demandée n'a pas été trouvée |\n| 405 | `Method Not Allowed` : le verbe HTTP n'est pas supporté pour la ressource |\n\n### Erreurs côté serveur (50x)\n\n| **Code HTTP** | **Signification** |\n| --- | --- |\n| 500 | `Internal Server Error` : l'API n'a pas pu mener à bien la requête |\n| 503 | `Service Unavailable` : l'API n'est pas en état de répondre (maintenance e.g.) |\n\n### Réponse type d'une erreur\n\nEn cas d'erreur, l'objet réponse est alors de la forme :\n\n``` json\n{\n    \"status\": \"error\",\n    \"error\": {\n        \"type\": erreur_http,\n        \"message\": message_erreur,\n        \"code\": code_interne  \n    }\n}\n\n ```\n\nOù :\n\n- `erreur_http` est le message d'erreur HTTP correspondant au code HTTP du retour\n- `message_erreur` est la description de l'erreur\n- `code_interne` est un code interne à GAR Ninja : \\[code HTTP\\]+\\[identifiant interne\\] (ex: `4001` = Paramètre incorrect, Un des articles ou une des offres n’existe pas)\n    \n\n# Pagination\n\n> Attention : La fonctionnalité de pagination n'est pas encore disponible mais elle fait partie de la feuille de route \n  \n\nL'API met à disposition plusieurs _**endpoints**_ permettant de récupérer (_**GET**_) des listes de données. Par exemple, vous pouvez récupérer la liste des affectations, des abonnements, etc. Ces méthodes d'API sont soumis à une pagination sous la forme d'une **structure commune** appelée **pagination** et contenant au moins le paramètre **limit** et l'un des deux autres paramètres :\n\n| **Nom** | **Description** | **Format** |\n| --- | --- | --- |\n| **limit** | définit le nombre d'occurrences retournées | Entier |\n| starting_after | Un identifiant à utiliser dans la pagination. **starting_after** est un ID d'objet qui définit votre place dans la liste. Par exemple, si vous faites une demande de liste et recevez 100 objets, se **terminant** par un objet avec id _54250_, votre appel suivant peut inclure _starting_after=54250_ afin de **récupérer la page suivante** de la liste. | Entier |\n| ending_before | Un identifiant à utiliser dans la pagination. **ending_before** est un ID d'objet qui définit votre place dans la liste. Par exemple, si vous faites une demande de liste et recevez 100 objets, **commençant** par un objet avec id _54250_, votre appel suivant peut inclure _ending_before=54250_ afin de **récupérer la page précédente** de la liste. | Entier |\n\nIl est fortement conseillé d'utiliser les différents filtres mis à disposition pour optimiser les requêtes faites à l'API.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"23585031","team":4099967,"collectionId":"af2bd1ca-d3e5-4c4b-908e-2ef2ed9e6ce6","publishedId":"2s8YekSb31","public":true,"publicUrl":"https://partner.gar.ninja","privateUrl":"https://go.postman.co/documentation/23585031-af2bd1ca-d3e5-4c4b-908e-2ef2ed9e6ce6","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"EF5B25"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.1","publishDate":"2023-01-06T17:27:27.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[{"name":"partner_api","id":"10755888-6eb3-4d7c-a98c-0d40b51e3024","owner":"23585031","values":[{"key":"api_route","value":"https://saas.gar.ninja/partner_api","enabled":true,"type":"default"},{"key":"client_id","value":"","enabled":true,"type":"default"},{"key":"client_pwd","value":"","enabled":true,"type":"default"},{"key":"access_token","value":"","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/8d508ce1d5c7884e83f016602fe240feed8b5c5361c724c2249ec7958875c8ce","favicon":"https://res.cloudinary.com/postman/image/upload/v1664463380/team/vdsieszc3rxlvss5melk.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"partner_api","value":"23585031-10755888-6eb3-4d7c-a98c-0d40b51e3024"}],"canonicalUrl":"https://partner.gar.ninja/view/metadata/2s8YekSb31"}