Skip to content

API de gestion

Usage

Les endpoints de gestion permettent a une integration de configurer des objets Kitemesh via l’API publique: secrets, outils, ressources API, fichiers, modeles personnalises et groupes de modeles.

Utilisez-les uniquement avec des tokens API qui doivent modifier la configuration. Gardez ces capacites desactivees pour les integrations limitees au chat.

Authentification et capacites

Tous les endpoints demandent:

http
Authorization: Bearer km_your_token_here

Le token doit appartenir a l’equipe ou les objets sont geres. Il doit aussi avoir la capacite correspondante:

RessourceCapacite requise
SecretsmanageSecrets
OutilsmanageTools
Ressources APImanageResources
FichiersuploadFiles pour le televersement; acces a la ressource pour lire et supprimer
Modeles personnalisesmanageCustomModels
Groupes de modelesmanageGroups

Les portees de partage doivent aussi etre autorisees par la politique du token. Une portee de partage a cette forme:

json
{
  "type": "team",
  "id": "123e4567-e89b-12d3-a456-426614174000"
}

Les valeurs acceptees pour type sont team, customModel et groupModel.

Endpoints de liste

Les endpoints de liste renvoient les objets visibles par le token. Les champs de pagination dependent de la famille de ressource.

EndpointChamps de requete utiles
GET /v1/secretsscope, teamId, q, limit, cursor
GET /v1/toolsscopeType, scopeId, page, pageSize
GET /v1/api-resourcesscopeType, scopeId, page, pageSize
GET /v1/filesscopeType, scopeId, resourceType, status, search, page, pageSize
GET /v1/custom-modelsscope, teamId, search, category, tags, sort, credentialMode, limit, cursor
GET /v1/group-modelsscope, teamId, search, category, tags, sort, mode, limit, cursor

Limites courantes:

  • limit: 1 a 100 sur les secrets et listes de modeles
  • pageSize: 1 a 100 sur les outils, ressources API et fichiers
  • scope: mine, team, public ou all sur les listes de modeles
  • sort: updated, created, name ou author sur les listes de modeles

Secrets

Les secrets stockent des valeurs sensibles utilisees par les outils et les modeles personnalises BYOK. Une valeur de secret peut etre ecrite ou remplacee, mais un client ne doit pas attendre des reponses de liste ou de lecture qu’elles revelent la valeur.

Methode et cheminUsage
POST /v1/secretscreer un secret
GET /v1/secretslister les secrets visibles
PATCH /v1/secrets/:idmettre a jour les metadonnees ou remplacer la valeur
DELETE /v1/secrets/:idsupprimer un secret

Champs de creation:

ChampTypeObligatoireNotes
namestringoui1 a 160 caracteres
descriptionstringnonjusqu’a 2000 caracteres
providerstringnonjusqu’a 80 caracteres
scopestringouiuser ou team
teamIdstringnonUUID; requis pour un secret d’equipe
valuestringouivaleur secrete

La mise a jour accepte name, description, provider et value.

bash
curl -X POST "https://your-kitemesh.example.com/v1/secrets" \
  -H "Authorization: Bearer km_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Customer API key",
    "provider": "customer-api",
    "scope": "team",
    "teamId": "123e4567-e89b-12d3-a456-426614174000",
    "value": "secret_value_here"
  }'

Outils

Les outils sont des actions HTTP. Utilisez-les pour les operations qui creent, mettent a jour ou suppriment des donnees, ou pour les lectures qui demandent des controles d’approbation.

Methode et cheminUsage
POST /v1/toolscreer un outil
GET /v1/toolslister les outils visibles
GET /v1/tools/:idlire un outil
PATCH /v1/tools/:idmettre a jour un outil
DELETE /v1/tools/:idsupprimer un outil

Champs de creation:

ChampTypeObligatoireNotes
namestringoui1 a 120 caracteres
descriptionstringoui1 a 4000 caracteres
methodstringouiPOST, PATCH, PUT ou DELETE
needUserValidationbooleannonvaut true par defaut si absent
argsSchemaobjectnonobjet de type schema JSON pour les arguments
urlTemplatestringouimodele d’URL cible
staticHeadersNonSecretobjectnonen-tetes non secrets uniquement
timeoutMsintegernon0 a 120000
authFieldsarraynonentrees avec key et secretId
scopesarraynonportees de partage
tagsarray<string>nonlibelles de tags
versionstringnonlibelle de version defini par le client

La mise a jour accepte les champs modifiables de l’outil. method, scopes, tags et version sont des champs de creation dans le contrat public.

bash
curl -X POST "https://your-kitemesh.example.com/v1/tools" \
  -H "Authorization: Bearer km_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Create support ticket",
    "description": "Creates a support ticket for the current customer.",
    "method": "POST",
    "needUserValidation": true,
    "urlTemplate": "https://api.example.com/tickets",
    "argsSchema": {
      "type": "object",
      "properties": {
        "priority": { "type": "string" },
        "summary": { "type": "string" }
      },
      "required": ["summary"]
    },
    "authFields": [
      {
        "key": "Authorization",
        "secretId": "123e4567-e89b-12d3-a456-426614174222"
      }
    ],
    "scopes": [
      {
        "type": "groupModel",
        "id": "123e4567-e89b-12d3-a456-426614174000"
      }
    ]
  }'

Ressources API

Les ressources API exposent un contexte HTTP en lecture seule. Ce sont des ressources GET, separees des outils d’action.

Methode et cheminUsage
POST /v1/api-resourcescreer une ressource API
GET /v1/api-resourceslister les ressources API visibles
GET /v1/api-resources/:idlire une ressource API
PATCH /v1/api-resources/:idmettre a jour une ressource API
DELETE /v1/api-resources/:idsupprimer une ressource API

Champs de creation:

ChampTypeObligatoireNotes
namestringoui1 a 120 caracteres
descriptionstringoui1 a 4000 caracteres
urlTemplatestringouimodele d’URL GET
staticHeadersNonSecretobjectnonen-tetes non secrets uniquement
timeoutMsintegernon0 a 120000
cacheTtlSecondsintegernon0 ou plus
scopesarraynonportees de partage

La mise a jour accepte name, description, urlTemplate, staticHeadersNonSecret, timeoutMs et cacheTtlSeconds.

Fichiers

Les fichiers sont televerses en multipart form data. Le formulaire doit contenir une partie file et un champ metadata contenant du JSON.

Methode et cheminUsage
POST /v1/filesteleverser un fichier
GET /v1/fileslister les fichiers visibles
GET /v1/files/vectorization-statuslire le statut de traitement d’un ou plusieurs fichiers
GET /v1/files/:idlire une ressource fichier
DELETE /v1/files/:idsupprimer une ressource fichier

Champs de metadata:

ChampTypeObligatoireNotes
resourceTypestringouitext, image, audio ou video
scopestringnonuser ou conversation
conversationIdstringnonUUID pour un televersement rattache a une conversation
scopesarraynonportees de partage
fileNamestringnonjusqu’a 255 caracteres

La limite de televersement par defaut est de 5 Mo. Le champ metadata est limite a 64 Ko par defaut.

bash
curl -X POST "https://your-kitemesh.example.com/v1/files" \
  -H "Authorization: Bearer km_your_token_here" \
  -F "file=@./brief.pdf" \
  -F 'metadata={
    "resourceType": "text",
    "scope": "user",
    "fileName": "brief.pdf",
    "scopes": [
      {
        "type": "groupModel",
        "id": "123e4567-e89b-12d3-a456-426614174000"
      }
    ]
  }'

GET /v1/files/vectorization-status accepte ids sous forme de parametre separe par des virgules ou de parametre repete:

http
GET /v1/files/vectorization-status?ids=123e4567-e89b-12d3-a456-426614174000,123e4567-e89b-12d3-a456-426614174111

Les statuts de fichier incluent pending, vectorizing, ready, failed et deleting.

Modeles personnalises

Les modeles personnalises enveloppent un LLM avec des instructions reutilisables, une visibilite et des reglages d’identifiants.

Methode et cheminUsage
POST /v1/custom-modelscreer un modele personnalise
GET /v1/custom-modelslister les modeles personnalises visibles
GET /v1/custom-models/:idlire un modele personnalise
PATCH /v1/custom-models/:idmettre a jour un modele personnalise
DELETE /v1/custom-models/:idsupprimer un modele personnalise

Champs de creation:

ChampTypeObligatoireNotes
namestringoui1 a 200 caracteres
llmModelNamestringouinom du modele
descriptionstringnonjusqu’a 2000 caracteres
categorystringnonjusqu’a 80 caracteres
tagsarray<string>nonchaque tag jusqu’a 64 caracteres
defaultSystemInstructionstringnonjusqu’a 20000 caracteres
isPublicbooleannonindicateur de visibilite publique
teamIdsarray<string>nonUUID des equipes ayant acces
credentialModestringnonapp ou byok
byokSecretIdstringnonUUID d’un secret du coffre fort pour BYOK

Les memes champs sont acceptes en mise a jour, tous optionnels.

Utilisez le modele cree en chat avec model: "custom:<uuid>".

Groupes de modeles

Les groupes de modeles combinent une cible brain, des agents optionnels et un mode par defaut.

Methode et cheminUsage
POST /v1/group-modelscreer un groupe de modeles
GET /v1/group-modelslister les groupes de modeles visibles
GET /v1/group-models/:idlire un groupe de modeles
PATCH /v1/group-models/:idmettre a jour un groupe de modeles
DELETE /v1/group-models/:idsupprimer un groupe de modeles

Champs de creation:

ChampTypeObligatoireNotes
namestringoui1 a 200 caracteres
descriptionstringnonjusqu’a 2000 caracteres
categorystringnonjusqu’a 80 caracteres
tagsarray<string>nonchaque tag jusqu’a 64 caracteres
iconstringnonnom d’icone pris en charge
defaultModestringouiorch, synth, normal ou auto
brainobjectouireference de modele
agentsarraynonreferences d’agents
isPublicbooleannonindicateur de visibilite publique
teamIdsarray<string>nonUUID des equipes ayant acces

Les valeurs prises en charge pour icon sont account_tree, forum, travel_explore, edit_note, monitoring, gavel, school, smart_toy, support_agent, campaign, analytics et history_edu.

brain et agents[].ref utilisent des references de modele:

json
{
  "type": "llm",
  "llmModelName": "gpt-5-mini"
}

Les entrees d’agent peuvent aussi contenir:

ChampTypeNotes
rolestring1 a 64 caracteres
instructionOverridestringjusqu’a 20000 caracteres

GET /v1/group-models/:id accepte resolve=none, resolve=shallow ou resolve=deep. La resolution ajoute des details lisibles aux references de modeles quand le token y a acces.

bash
curl -X POST "https://your-kitemesh.example.com/v1/group-models" \
  -H "Authorization: Bearer km_your_token_here" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Research group",
    "defaultMode": "auto",
    "brain": {
      "type": "llm",
      "llmModelName": "gpt-5-mini"
    },
    "agents": [
      {
        "ref": {
          "type": "custom",
          "customModelId": "123e4567-e89b-12d3-a456-426614174111"
        },
        "role": "researcher"
      }
    ],
    "teamIds": [
      "123e4567-e89b-12d3-a456-426614174000"
    ]
  }'

Utilisez le groupe cree en chat avec model: "group:<uuid>".