{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"07df0702-2834-4498-ac83-e936f63233e3","name":"quarksUp Api","description":"L'API REST vous permet d'interagir programmatiquement avec quarksUp, vous pouvez utiliser cette API pour construire vos propres applications ou simplement extraire les données qui vous intéressent.\n\nVous trouverez dans cette documentation le détail des ressources REST disponibles ainsi que des exemples d'utilisation.\n\nSi vous ne connaissez pas l'url de votre api merci de vous rapprocher de votre consultant quarksUp.\n\n## URL\n\nL'url des apis quarksUp dépend de l'environnement sur lequel vous requêtez :\n\n```\nproduction : {{api-url}}/api/v{{api-version}}\nstaging : {{api-url-staging}}/api/v{{api-version}}\ntraining : {{api-url-training}}/api/v{{api-version}}\n```\n\n## Version\n\nLa version est à indiquer directement dans un segment de l'url comme suit :\n\n```\n{{api-url}}/api/v{{api-version}}\n```\n\n# Authentification\n\nTrois types d'authentification sont supportées par l'api:\n\n*   OAuth 2.0 Implicit flow\n*   OAuth 2.0 Code flow with PKCE\n*   OAuth 2.0 Client Credentials flow\n    \n\nIl est nécessaire de spécifier l'entête *Authorization* en settant sa valeur avec le Bearer token généré par l'IDP.\n\nLors de l'utilisation du Client Credentials Grant flow, il est possible d'indiquer à l'API sur quel espace la requête est à exécuter en spécifiant le paramètre \"*spaceId*\" dans la query. Ce paramètre permet de contextualiser la requête en terme de données à traiter.\n\nLes endpoints situés dans des routes \"*public*\" sont accessibles de manière basique en précisant simplement une clé d'api dans l'entête de requête, utiliser l'entête \"api-key\" pour préciser la clé.\n\nSi vous ne possédez pas de clé d'api ou si vous cherchez à vous authentifier en Credentials Grant Flow merci de vous rapprocher de votre consultant quarksUp.\n\nDes URL présignées sont également utilisées ; elles ne requièrent aucune authentification mais expirent rapidement.\n\n# Conventions\n\n## Requêtes\n\n*   les types de contenu de requêtes supportées sont:\n    *   application/json\n    *   application/json-patch+json\n    *   application/json-merge-patch\n*   tous les champs date/heure doivent être en UTC et au format ISO 8601\n*   de manière générale les reqûetes doivent être localisées en spécifiant le paramètre \"*locale*\" dans la query. Ce paramètre doit être consituté d'une combinaison d'un code culture ISO 639 à 2 lettres suivi d'un code de sous culture ISO 3166 à 2 lettres (\"*fr-FR*\", \"*en-US*\", ...)\n*   les champs notés `required` sont des champs requis\n*   les champs notés `restricted` sont des champs soumis à permissions\n*   les champs notés `versatile` sont des champs capables de gérer un id *ou* un libellé (spécifier et l'id et le libellé n'est pas autorisé). Dans le cas ou le libellé est spécifié, l'api se charge de vérifier si un élément ayant le même libellé existe déjà dans l'orgnisation et si tel est le cas elle attribue automatique son id à l'élément soumis dans la requête\n*   les champs notés `enum` sont des champs ayant des valeurs prédéfinies immuables\n*   les champs notés `[,]` indiquent qu'une saisie d'une liste de valeurs séprarées par une virgule est autorisée\n*   l'entête `prefer` est spécifiable sur certains endpoints PATCH/PUT, l'indiquer permettra d'obtenir en retour de requête l'objet nouvellement modifié (return=minimal pour un fragment d'objet et return=representation pour l'objet complet).\n    \n\n## Réponses\n\n*   tous les champs sont au format camelCase\n*   tous les champs \"*url*\" retournent des urls complètes, il en est de même pour les champs \"*_links*\"\n*   tous les champs date/heure sont en UTC et au format ISO 8601\n*   tous les champs préfixés par \"*_*\" sont des champs en lecture seule (\"*_links*\", \"*_audit*\", \"*_metrics*\"...)\n*   tous les champs de type images contenant des url retournent des urls signées qui ne nécessitent pas d'authentification, ces urls sont valides sur la journée en cours.\n*   tous les champs \"*_links*\" sont à null par défaut sur les endpoints de types *reports* ou *query* odata, le paramètre de query \"*includeLinks*\" peut être utilisé pour modifier ce comportement et inclure les liens.\n*   tous les champs de type metadata ne sont véhiculés que par leur id, il est nécessaire de requêter le endpoint metadata du module Organization pour obtenir plus d’informations au besoin (le nom de la collection metadata à spécifier est documentée sur chaque définition d’objet).\n*   certains endpoints ne renvoient que les éléments dit \"actifs\" (*isActive=true*), il est parfois possible de spécifier le paramètre de query \"*includeInactive*\" pour modifier ce comportement et inclure dans la réponse les éléménts inactifs.\n*   certains endpoints supportent un paramètre de query \"expand\" qui permet d'inclure plus d'informations dans de la réponse. Le fonctionnement est similaire à celui de Odata.\n*   à partir de la version 3 des apis quarksUp les valeurs nulles ne seront plus retournées dans les payloads json\n    \n\n> **Note** : par défaut, les retours sont formattés en JSON.\n\n## Statuts de réponses\n\nEn cas de succès les codes suivant sont retournés :\n\n| Code | Description |\n| --- | --- |\n| 200 | OK - La requête a été traitée avec succès |\n| 201 | Created - La requête a été traitée avec succès et une nouvelle ressource a été créée. L'entête HTTP 'Location' du retour contient l'URI permettant d'y accéder |\n| 204 | NoContent - La requête a été traitée avec succès mais pas d'information à renvoyer |\n\nEn cas d'erreur les codes suivant seront retournés :\n\n| Code | Description |\n| --- | --- |\n| 400 | BadRequest - La syntaxe de la requête est erronée, la requête doit être modifiée |\n| 401 | Unauthorized - Une authentification est requise pour accéder à la ressource demandée |\n| 403 | Forbidden - Le compte authentifié n'est pas autorisé à exécuter l'action demandée |\n| 404 | NotFound - La ressource demandée n'a pas été trouvée |\n| 409 | Conflict - La requête ne peut être traitée dans son état actuel, elle doit être modifiée |\n| 422 | UnprocessableEntity - L'entité décrite dans la requête n'est pas conforme aux attentes, vérifier les champs obligatoires et les règles métiers à respecter |\n| 429 | TooManyRequests - Trop de requêtes ont été envoyées dans un temps donné |\n| 500 | InternalServerError - Erreur interne du serveur |\n| 503 | ServiceUnavailable - Service temporairement indisponible ou en maintenance |\n\n# Erreurs\n\nLes erreurs sont retournées dans le format suivant :\n\n```\n{ \n    \"status\": \"UnprocessableEntity\", \n    \"code\": 422, \n    \"errors\": \n    [ \n        {\n            \"field\": \"login\",  \n            \"message\": \"Le login existe déjà.\" \n        } \n    ] \n}\n```\n\n> **Note** : les messages renvoyés sont directement dans la locale d'appel\n\n# Batching\n\nIl est possible de regrouper plusieurs requêtes en une seule, pour cela il convient d'utiliser un type de contenu spécifique \"*multipart/mixed; boundary=*\".\n\n**Url**\n\n```\n{{api-url}}/api/$batch\n```\n\n**Entête**\n\n```\nmultipart/mixed; boundary=\"api_request\"\n```\n\n**Corps**\n\n```\n--api_request\nContent-Type: application/http; msgtype=request\n\nGET /api/v2/recruitment/candidates/10341?locale=fr-fr HTTP/1.1\nHost: {api-url}\n\n\n--api_request\nContent-Type: application/http; msgtype=request\n\nGET /api/v2/people/companies/2?locale=fr-fr HTTP/1.1\nHost: {api-url}\n\n\n--api_request--\n```\n\n> **Note** : le formattage de la requête est important, les sauts de lignes et espacements sont à respecter. Nous recommandons de ne pas batcher plus de 10 appels à la fois. Le batching imbriqué est interdit.\n\n# Pagination\n\nLa majorité des endpoints pouvant renvoyer une grosse volumétrie de données, une pagination des retours est en place. Par défaut, le maximum d'éléments autorisé par page est retourné par l'api.\n\nLa pagination est modifiable en utilisant 2 paramètres de query :\n\n*   **skip** - Nombre d'éléments à ignorer\n*   **top** - Nombre d'éléments à renvoyer\n    \n    > Note : la valeur par défaut est de 100 pour les endpoints métiers classiques (valeur maximale autorisée 500) et de 1000 pour les endpoints de type *reports* (valeur maximale autorisée 2000). Toute valeur supérieure aux valeurs maximales autorisées sera ignorée, aucune erreur ne sera générée.\n    \n\nIl est recommandé de préciser le paramètre **top** de manière à ce que le comportement des applications clientes ne change pas si ces limites étaient amenées à évoluer.\n\n# Limitations\n\nPour éviter que l'api ne soit submergée par un trop grand nombre de requêtes, les limites d'appel suivantes sont en place :\n\n*   10 appels par seconde et par application cliente\n*   5000 appels par jour et par application cliente\n    \n\n> Note: Si l'api retourne un code 429, vérifier l'entête **Retry-After** pour obtenir le nombre de secondes à attendre avant de renouveler l'appel.\n\n# Odata\n\nLes endpoints de type \"*Query*\" sont des endpoints Odata avec le paramétrage suivant :\n\n*   opérateur logiques autorisés : tous\n*   opérateur arithmétiques autorisés : tous\n*   fonctions autorisées : toutes\n*   options autorisées : count, filter, orderBy, select, skip, skipToken, top   \n\n# Workflows\n\nUn workflow est la représentation d'une suite de tâches aboutissant à la réalisation d'un processus métier. Les workflows quarksUp sont paramétrables par statut de ressource, groupe de rôle et espace, la combinaison de ces éléments se nomme une \"sequence\".\n\nLes ressources supportant les workflows exposent des endpoints spécifiques qui permettent d'obtenir :\n\n*   la liste des actions engendrant la création d'une nouvelle ressource (\"\\[resource\\]/workflows\")\n*   la liste des actions engendrant la mise à jour d'une ressource existante (\"\\[resource\\]/{resourceId}/workflows\")\n*   la liste des modèles d'emails liés à l'action (\"\\[resource\\]/{resourceId}/workflows/{sequenceId}/emails\")\n    \n\n# Emails\n\nLes ressources supportant l'envoi d'emails exposent des endpoints spécifiques qui permettent :\n\n*   l'envoi d'un email basé sur la fusion des données et d'un modèle d'email (\"\\[resource\\]/emails\")\n*   la génération d'un email basé sur la fusion des données et d'un modèle d'email (\"\\[resource\\]/emails/preview\")\n    \n\n# Fusion\n\nLes ressources supportant la fusion avec des modèles de documents exposent un endpoint spécifique qui permet :\n\n*   la génération d'un document basée sur la fusion des données et d'un modèle de document (\"\\[resource\\]/render\")","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"7443498","team":360610,"collectionId":"07df0702-2834-4498-ac83-e936f63233e3","publishedId":"TzRU9Rap","public":true,"publicUrl":"https://documenter-api.postman.tech/view/7443498/TzRU9Rap","privateUrl":"https://go.postman.co/documentation/7443498-07df0702-2834-4498-ac83-e936f63233e3","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"0B6BD3"},"documentationLayout":"classic-double-column","customisation":null,"version":"8.10.0","publishDate":"2021-05-11T13:10:37.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{},"logos":{}},"statusCode":200},"environments":[],"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/c165a36acf361a3a62787e7e79921a77623385204b5f7f45e2171d09c6535482","favicon":""},"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"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/TzRU9Rap"}