Opérations de Coffre (Lecture)
Opérations en lecture seule sur les données du coffre.
Les lectures identifient le coffre par `owner` (plus un `userSalt` optionnel) ; l'API dérive l'adresse du coffre via la factory. Il n'existe pas de surcharge contractId.
Authentification et propriété
Tous les endpoints de lecture exigent une API key valide (en-tête X-ACTA-Key).
- `list-vc-ids` et `get-vc` exigent en plus que
ownercorresponde à lawallet_addressliée à votre API key (les clés de rôle admin sont exemptées), car ils énumèrent et renvoient le contenu déchiffré des credentials. - `verify-vc` et les lectures GET sont ouverts à toute API key valide, afin que des tiers puissent vérifier des credentials et lire les métadonnées publiques du coffre.
Lister les IDs de VC
POST /contracts/vault/list-vc-ids
Liste les identifiants de verifiable credentials (VC) stockés dans le coffre d'un propriétaire, avec pagination.
Corps de la requête :
{
"owner": "G...",
"offset": 0,
"limit": 50,
"userSalt": "00...00"
}offset(optionnel) : index de départ base zéro,0par défautlimit(optionnel) : taille de page,50par défaut, maximum200(les valeurs supérieures renvoient400 limit_too_large)
Réponse :
{
"result": ["credential-1", "credential-2", "credential-3"],
"offset": 0,
"limit": 50
}Exemple :
curl -X POST https://api.testnet.acta.build/contracts/vault/list-vc-ids \
-H "X-ACTA-Key: your_key" \
-H "Content-Type: application/json" \
-d '{
"owner": "G..."
}'Nombre de VC
GET /contracts/vault/vc-count
Renvoie le nombre de VCs stockés dans le coffre d'un propriétaire. Utilisez-le pour dimensionner la pagination de list-vc-ids.
Paramètres de requête : owner (requis), userSalt (optionnel)
Réponse :
{
"count": 3
}Exemple :
curl -H "X-ACTA-Key: your_key" \
"https://api.testnet.acta.build/contracts/vault/vc-count?owner=G..."Obtenir un VC
POST /contracts/vault/get-vc
Récupère un verifiable credential spécifique depuis un coffre. Les données du credential sont stockées chiffrées on-chain et déchiffrées par l'API avant d'être renvoyées, c'est pourquoi cet endpoint impose la liaison clé-propriétaire.
Corps de la requête :
{
"owner": "G...",
"vcId": "credential-123",
"userSalt": "00...00"
}Réponse :
{
"result": {
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://www.w3.org/ns/credentials/examples/v2"
],
"type": ["VerifiableCredential"],
"credentialSubject": {
"id": "did:stellar:...",
"name": "John Doe"
}
}
}Exemple :
curl -X POST https://api.testnet.acta.build/contracts/vault/get-vc \
-H "X-ACTA-Key: your_key" \
-H "Content-Type: application/json" \
-d '{
"owner": "G...",
"vcId": "credential-123"
}'Vérifier un VC
POST /contracts/vault/verify-vc
Vérifie un VC en contrôlant qu'il existe dans le coffre du propriétaire et en renvoyant son statut d'émission on-chain. Ouvert à toute API key valide (pas de contrôle de propriété) - c'est l'endpoint utilisé par les vérificateurs tiers.
Corps de la requête :
{
"owner": "G...",
"vcId": "credential-123",
"userSalt": "00...00"
}Réponse :
{
"status": "valid",
"since": "2024-01-01T00:00:00.000Z"
}Ou si révoqué :
{
"status": "revoked",
"since": "2024-01-15T00:00:00.000Z"
}status vaut "valid", "revoked" ou "invalid" (avec "unknown" comme valeur de repli lorsque le contrat renvoie une forme inattendue).
Exemple :
curl -X POST https://api.testnet.acta.build/contracts/vault/verify-vc \
-H "X-ACTA-Key: your_key" \
-H "Content-Type: application/json" \
-d '{
"owner": "G...",
"vcId": "credential-123"
}'Métadonnées du coffre
GET /contracts/vault/:owner
Renvoie les métadonnées du coffre du propriétaire. Accepte un paramètre de requête optionnel userSalt pour sélectionner un coffre non par défaut.
Réponse :
{
"owner": "G...",
"vault_address": "C...",
"did_uri": "did:stellar:...",
"version": "0.4.0",
"vc_count": 3,
"denied_issuer_count": 1
}Exemple :
curl -H "X-ACTA-Key: your_key" \
"https://api.testnet.acta.build/contracts/vault/G..."Émetteurs bloqués
GET /contracts/vault/issuers/denied
Liste les adresses d'émetteurs actuellement bloqués (denied) pour le coffre du propriétaire, avec pagination. L'émission est ouverte par défaut, il s'agit donc de l'ensemble des exceptions explicites.
Paramètres de requête : owner (requis), offset (optionnel), limit (optionnel, max 200), userSalt (optionnel)
Réponse :
{
"issuers": ["G...", "G..."],
"offset": 0,
"limit": 50
}Nombre d'émetteurs bloqués
GET /contracts/vault/issuers/denied/count
Renvoie le nombre d'émetteurs bloqués pour le coffre du propriétaire.
Paramètres de requête : owner (requis), userSalt (optionnel)
Réponse :
{
"count": 1
}Paramètres de requête
Les lectures POST prennent un corps JSON :
- owner (requis) : adresse du propriétaire du coffre (G...)
- vcId (requis pour get-vc et verify-vc) : identifiant du credential
- offset / limit (optionnels, list-vc-ids uniquement) : pagination, limit ≤ 200
- userSalt (optionnel) : sel de 32 octets (64 caractères hexadécimaux) sélectionnant le coffre du propriétaire ; 32 octets à zéro par défaut (un coffre canonique par propriétaire)
Les lectures GET prennent owner comme paramètre de requête (ou comme segment de chemin pour les métadonnées du coffre) et acceptent userSalt comme paramètre de requête.
Réponses
- Lister les IDs de VC :
{ result, offset, limit }oùresultest un tableau de chaînes d'identifiants de credentials - Nombre de VC :
{ count } - Obtenir un VC :
{ result }avec les données déchiffrées du credential - Vérifier un VC :
{ status, since? }avecstatus"valid" | "revoked" | "invalid" - Métadonnées du coffre :
{ owner, vault_address, did_uri, version, vc_count, denied_issuer_count } - Émetteurs bloqués :
{ issuers, offset, limit }; Nombre d'émetteurs bloqués :{ count }