Aller au contenu principal

Référence API

Déployez et exécutez vos fonctions via une interface RESTful standardisée.

Point de terminaison d'exécution

POST https://api.matesst.com/api/v2/:functionName

Remplacez :functionName par le nom de la fonction que vous souhaitez exécuter.

En-têtes (Headers)

En-têteValeurDescription
AuthorizationBearer ${API_SECRET}Votre clé secrète d'application
Content-Typeapplication/jsonRequis pour le corps JSON

Corps de la requête (Request Body)

Le corps de la requête doit être un objet JSON avec les champs suivants :

ChampTypeRequisDescription
paramsArrayOuiListe des arguments d'entrée pour la fonction.
nargoutNumberOuiNombre de valeurs de retour attendues de la fonction.
instanceIdStringNonID de la machine d'algorithme à utiliser.

Comprendre instanceId

  • Équilibrage de charge : Si instanceId est omis, Matesst utilisera une machine du pool partagé (ID commençant par instance-) en utilisant un algorithme d'équilibrage de charge complexe.
  • Instance dédiée: Vous pouvez spécifier une chaîne personnalisée comme instanceId. Si cet ID n'existe pas, Matesst créera automatiquement une machine dédiée temporaire qui fonctionne indépendamment du pool de répartition de charge partagé. Cela garantit que vos processus sont protégés contre l'éviction ou la concurrence pour les ressources par d'autres requêtes, en particulier dans les scénarios à haute concurrence.
  • Optimisation des performances : La réutilisation du même instanceId pour les requêtes ultérieures évite les temps de démarrage à froid, car la machine reste "chaude" pour cet ID spécifique.

Exemple de requête

{
"params": [1, 2],
"nargout": 1,
"instanceId": "instance-0"
}

Structure de la réponse

Matesst renvoie un objet JSON contenant les résultats de l'exécution.

ChampTypeDescription
resultsanyLes valeurs de retour de votre fonction.
statusStringÉtat de la requête (par exemple, "success", "error").

Règles d'emballage des résultats

  • Nombre unique avec nargout = 1 : Si la fonction renvoie un seul nombre et que nargout est défini sur 1, il est renvoyé directement dans le champ results.
  • Sinon : Les résultats sont toujours emballés dans une structure de tableau imbriqué. La longueur du tableau externe correspond à nargout.
    • Exemple : Si nargout = 1 et que la fonction renvoie un tableau [1, 2, 3], le champ results sera [[1, 2, 3]].

Exemple : Nombre unique

{
"results": 7,
"status": "success"
}

Exemple : Données complexes (fonction unique)

Lors de l'appel de fonctions qui renvoient plusieurs vecteurs (comme unique), chaque sortie est emballée selon ses dimensions. Notez la différence entre le vecteur ligne (premier résultat) et les vecteurs colonnes (deuxième et troisième résultats).

Requête :

{
"params": [[9, 2, 2, 9, 5]],
"nargout": 3
}

Réponse :

{
"results": [
[[2, 5, 9]], // Sortie 1 : Valeurs uniques (Vecteur ligne)
[[2], [5], [1]], // Sortie 2 : Indices ia (Vecteur colonne)
[[3], [1], [1], [3], [2]] // Sortie 3 : Indices inverses ic (Vecteur colonne)
],
"status": "success"
}

Gestion des erreurs

Si l'exécution échoue, Matesst renvoie un code d'état non-200 avec un corps JSON décrivant l'erreur.

ChampTypeDescription
errorStringUn bref résumé du type d'erreur.
messageStringInformations détaillées sur l'erreur, incluant souvent la trace de la pile (stack trace).

Exemple de réponse d'erreur

{
"error": "Execution Error",
"message": "Too many input arguments.\n"
}