API
L'API de Noki Mind
Tout ce que fait l'espace d'administration s'appelle aussi depuis un serveur : vos clients, vos devis, vos tâches, vos réunions, vos notes. Un point d'entrée par geste, une clé pour s'authentifier, et un document OpenAPI que vos outils avalent tel quel.
196 points d'entrée · 63 en lecture · 104 en écriture · 29 en suppression
Premier appel
Créez une clé depuis l'espace d'administration, onglet Intégrations puis API, et appelez. Voici un appel complet, à coller tel quel.
https://nokimind.com/api/v1curl https://nokimind.com/api/v1/list_clients \ -H "Authorization: Bearer $NOKI_API_KEY"
Gardez la clé dans une variable d'environnement : collée dans un dépôt, elle vaut le compte qui l'a créée.
Authentification
Chaque appel porte une clé, créée depuis l'espace d'administration, onglet Intégrations › API. Deux en-têtes sont acceptés, au choix de votre outil.
Authorization: Bearer ecpapi_… X-Api-Key: ecpapi_…
Une clé agit au nom de l'administrateur qui l'a créée et ne voit que ce qu'il voit. Elle n'est jamais à mettre dans une page web : ces appels vont de serveur à serveur, et aucun en-tête CORS n'est posé.
Portées
Une clé porte une ou plusieurs portées. Aucune n'implique une autre : une clé qui écrit ne supprime pas pour autant. Chaque point d'entrée annonce la sienne.
| Portée | Ce qu'elle ouvre | Points d'entrée |
|---|---|---|
read | Tout ce qui lit, sans jamais rien changer. | 63 |
write | Créer et modifier. Ne supprime rien. | 104 |
destructive | Suppressions définitives. | 29 |
Méthodes et enveloppes
Ce qui lit accepte GET, paramètres dans la requête, et POST, corps JSON. Ce qui écrit ou supprime n'accepte que POST. Un tableau se dit en répétant le paramètre : ?tags=a&tags=b.
Un succès rend 200 et le résultat sous data.
{ "data": … }Un refus rend un code stable sous error, et une phrase sous message. C'est le code qui se teste, jamais le message.
{ "error": "missing_scope", "message": "…" }Débit
Chaque clé dispose d'un plafond par minute, calé sur ce que le geste fait. Lire beaucoup ne casse rien ; supprimer trente fois par minute n'est pas un usage normal.
| Portée | Plafond |
|---|---|
read | 600 appels par minute |
write | 120 appels par minute |
destructive | 30 appels par minute |
Toute réponse porte RateLimit-Limit, RateLimit-Remaining et RateLimit-Reset, y compris quand elle passe : c'est ce qui permet de ralentir avant le mur. Un dépassement rend 429 avec Retry-After.
Refus
| Code | Statut | Quand |
|---|---|---|
missing_api_key | 401 | Aucune clé dans les en-têtes de la requête. |
invalid_api_key | 401 | La clé présentée n'existe pas. |
revoked_api_key | 401 | La clé a été coupée depuis l'espace d'administration. |
expired_api_key | 401 | La clé a passé sa date de fin de validité. |
not_admin | 403 | Le compte auquel la clé appartient n'est plus administrateur. |
missing_scope | 403 | La clé ne porte pas la portée exigée par ce point d'entrée. |
unknown_endpoint | 404 | L'adresse ne désigne aucun point d'entrée. La réponse propose les noms proches. |
method_not_allowed | 405 | GET sur un point d'entrée qui écrit ou supprime. |
invalid_json | 400 | Le corps de la requête n'est pas du JSON. |
invalid_query | 400 | Un paramètre de requête est inconnu. La réponse dit lesquels existent. |
invalid_payload | 400 | Les paramètres ne passent pas la validation. La réponse les détaille, champ par champ. |
refused | 422 | Le geste a dit non pour une raison métier, expliquée dans le message. |
payload_too_large | 413 | Le corps dépasse 4 Mo. |
rate_limited | 429 | Le plafond d'appels de la clé est atteint pour ce niveau de geste. L'en-tête « Retry-After » dit dans combien de secondes réessayer. |
server_error | 500 | Quelque chose a échoué de notre côté. |
Document OpenAPI
Le contrat complet, généré à partir du code à chaque déploiement. Il se colle tel quel dans Postman, Insomnia, Bruno, Scalar ou Swagger UI, et sert de source à un générateur de client.
Essayer
Appelez un point d'entrée depuis cette page avec votre propre clé. La requête part de votre navigateur vers ce site, rien n'est enregistré ici.
Points d'entrée
Les 196 gestes, avec leurs paramètres et la forme de leur réponse. On y cherche par nom ou par module.
searchaccountagenciesadmin-localenotificationspushadmin-invitationsclientstasksclient-userscustom-fieldsreferrersquotesquote-commentstask-commentstask-viewssocialsocial-viewsmeetingsmeeting-proposalsrecallrecall-calendarquestionnairescredentialsbillsmetricsfilesfile-foldersdecisionsassistant-conversationsmedianotesnote-foldersticketscompanycompany-searchdesigneditor-imageseditor-filestranslation