Déclaratif
Un fichier .kap décrit l’état attendu et les relations voulues ; le serveur calcule ensuite les opérations nécessaires.
KAPE
KAPE est un langage déclaratif pour décrire des assets plateforme, relier des ressources à des datasets et préparer des actions sans mutation directe avant validation et planification.
Un fichier .kap décrit l’état attendu et les relations voulues ; le serveur calcule ensuite les opérations nécessaires.
Validate et Plan sont sans effet de bord. Apply doit être explicitement activé et audité.
Les clés d’asset et le namespace servent à rendre les imports reproductibles et idempotents.
Un module commence par un bloc kape, puis contient des blocs input, asset, action, data ou output. Les chaînes sont entre guillemets, les références utilisent ref("key") et les sources utilisent url, upload ou s3.
kape déclare la version du langage et le namespace.input importe des valeurs produites par un autre apply KAPE ou fournies explicitement à l’API.asset décrit une entité persistante : organisation, projet, ressource, dataset, tâche, format, modèle ou contrat.action décrit une opération planifiable : lien dataset/ressource, ingestion, génération d’items, création de tâches, transition ou action plateforme.data porte des données auxiliaires référençables par les actions futures.output déclare les valeurs retournées après apply et réutilisables comme entrées d’un autre fichier.Parse le fichier, verifie les champs requis, les enums, les refs et les invariants de modele. Aucune mutation.
Resout les data users cote serveur, calcule les create_or_update/link/action, l’ordre de creation et les permissions necessaires.
Recalcule le plan, exige confirmation, verifie les droits effectifs, execute en transaction et persiste le run.
Expose run id, auteur, statut, evenements progressifs, assets appliques, outputs, diagnostics et idempotencyKey.
data lit des donnees deja presentes en base, cote serveur. Le client fournit des criteres declaratifs, le serveur applique le scope, les droits et retourne seulement les champs non sensibles utiles au plan.
Categories. users, resources, projects, tasks et autres assets peuvent etre declares comme categories de lecture.
Assets. data resources, data projects et data tasks exigent un name clair. Le serveur cherche ce nom exact dans le scope autorise.
returnFormat. La sortie peut etre list, object, string, first ou ids selon le champ consommateur.
Callback. code(...) est execute a l’apply dans un sandbox serveur avec timeout, sans acces a require, process.env, filesystem ou reseau.
Un bloc data resources, data projects ou data tasks peut declarer des filtres, un scope et un callback code(...) pour transformer la sortie autorisee.
ref(...) injecte une valeur ou lit un attribut. refd(...) injecte le resultat complet d’un bloc data, souvent une liste.
Chaque asset decrit une intention produit. Le serveur traduit cette intention vers le schema DB, ajoute l’auteur, applique l’idempotence et refuse les champs hors perimetre.
Tenant logique et point de gouvernance. Les projets appartiennent a une organisation, et les resolutions de donnees peuvent etre bornees a ce scope.
Espace de travail gouverne. L’auteur est l’utilisateur qui applique par defaut, ou un utilisateur resolu explicitement via data users.
Collection de ressources dans un projet. Le dataset porte le regroupement metier ; la ressource reste globale et est rattachee par action link.
Artefact global reutilisable : fichier brut, objet structure, ressource annotee ou definition versionnee. Les attributs exposent uniquement des informations non sensibles du schema.
Entree de registre pour documenter un format supporte, son MIME, son parseur et ses capacites sans lier le DSL a un stockage particulier. En v1 runtime, cet asset est planifiable mais son apply reel reste a brancher sur un registre persistant.
Unite de travail creee dans un projet. Elle peut cibler une ressource, un dataset, un assignee resolu et un payload metier.
Modele contractuel projet applique en base. Il formalise un titre, une version, une devise, un montant par defaut et les termes HTML reutilisables avant creation de contrats individuels.
Gabarit reutilisable pour parametrer des actions comme createTasks : labels, contraintes, langues, QA ou regles de recording. En v1 runtime, cet asset est planifiable mais son apply reel reste a brancher.
Une action represente une mutation ou un workflow. Elle apparait toujours dans le plan avant execution, avec l’ordre, l’impact, les champs concernes et les permissions requises.
Associe une ressource globale a un dataset. L’action est idempotente : la meme cle logique met a jour les champs portes par l’action au lieu de recreer un lien.
Planifie l’ingestion d’une ressource depuis ses sources. Le handler materialise ou versionne la ressource selon la configuration runtime.
Transforme une ressource en items de travail a partir d’une strategie parse declarative.
Cree ou met a jour une tache idempotente depuis une cle d’action. Le runtime exige les droits projet/taches, accepte une ressource directe ou la premiere ressource d’un dataset, et persiste le resultat dans le run.
Declare une transformation controlee entre deux etats ou identites de ressource, par exemple RAW vers ANNOTATED.
Pont vers un catalogue d’actions plateforme. Chaque operation doit etre activee, schematisee, autorisee et auditee cote serveur.
Un fichier peut retourner plusieurs outputs apres apply. Ces valeurs peuvent ensuite etre injectees comme inputs d’un autre fichier. Les references restent resolues et controlees cote serveur.
Apply exige une confirmation, une verification des droits, une transaction et un run persistant. Le run id est le point d’entree audit pour suivre les evenements et les assets appliques.
Les clients doivent traiter diagnostics, operations, creationOrder, resolvedData, outputs et le runId comme le contrat stable de KAPE v1. Les erreurs métier retournent un JSON exploitable ; les erreurs d’auth restent en HTTP 401/403.
| Type | Champs requis | Champs disponibles |
|---|---|---|
| organization | name | name, externalKey |
| project | org, name | org, author, name, description, visibility, defaultLanguage, defaultCurrency, defaults, budget, consentDocUrl, security, externalKey |
| dataset | project, name | project, name, description, properties, externalKey |
| resource | name, identity, visibility | name, author, description, identity, type, structure, visibility, language, sources, uri, contentUri, mime, format, annotationType, editable, licenseId, rightsAttribution, gdprLawfulBasis, containsPII, consentDocUrl, rightsRestrictions, metadata, externalKey |
| format | name | name, mime, parser, externalKey |
| task | project, title, type | project, dataset, title, type, visibility, instructions, description, resource, resourceVersion, assignee, targetLanguage, dueAt, payload, externalKey |
| contractTemplate | project, title, termsHtml | project, version, title, termsHtml, currency, defaultAmountCents, externalKey |
| model | kind, payload | kind, payload, externalKey |
| Type | Champs requis | Champs disponibles |
|---|---|---|
| link | dataset, resource | dataset, resource |
| ingest | resource | resource |
| generateItems | resource | resource, structure |
| createTasks | project | project, dataset, resource, model, title, description, taskType, type, visibility, assignee, targetLanguage, dueAt, payload |
| transition | from, to | from, to |
| platform | operation | operation, payload |
PRIVATE | ORG | PUBLIC
PRIVATE | PUBLIC
PUBLIC | PRIVATE
POS | RECORDING | NER | DEP | TRANSLATION | REVIEW
RAW_FILES | RAW_FILE | ANNOTATED_FILES | RAW_OBJECT | RAW_OBJECTS | ANNOTATED_OBJECTS
RAW | STRUCTURED | ANNOTATED
OBJECT | LINE | WORD | SENTENCE | PARAGRAPH | DOCUMENT