Liste les cartes actives (status=ACT) avec leur solde disponible et résout les noms des propriétaires via list_cards + get_users
Liste les cartes actives avec leur solde disponible et le nom de leur propriétaire. Permet un suivi précis des cartes et des budgets alloués.
83/100·📅 Hebdo·DébutantCFOController
Carteslist_cards
🎯 But du skill
Liste les cartes actives avec leur solde disponible et le nom de leur propriétaire. Permet un suivi précis des cartes et des budgets alloués.
📊 Ce que ça produit
Inventaire des cartes actives avec nom du propriétaire en clair, solde disponible et plafond.
⚡ Bénéfice
Avant
Liste de cartes avec IDs utilisateurs non résolus — impossible à interpréter sans référentiel.
Après
Inventaire cartes complet avec noms, soldes et plafonds en clair, immédiatement exploitable.
# Instructions
## Use case
Lister les cartes actives avec leur solde disponible et identifier le propriétaire pour chaque carte.
## Appel de base
```json
{
"companyId": "<COMPANY_ID>",
"status": "ACT",
"pageSize": 50
}
```
Note : contrairement à `get_purchase_orders.status` qui prend un **tableau**, `list_cards.status` prend une **string simple** (un seul statut à la fois).
## Lifecycle des cartes
```
PRE (pre-active) → ACT (active)
ACT → BLO (blocked)
BLO → REA (reactivated) → ACT
```
États terminaux (ne peuvent pas revenir actifs) : Lost, Stolen, Damaged, Expired, Cancelled, Aborted (codes `LOS`, `STO`, `DAM`, `EXP`, `CAN`, `ABO`). `list_cards` ne renvoie jamais les cartes Lost, Stolen, Damaged, Expired ou Cancelled : les récupérer par ID avec `get_card`.
Pour lister les cartes actives au sens large, cibler `ACT` et `REA` :
- `status: "ACT"` — actives
- `status: "REA"` — réactivées (après blocage)
## Montants — availableBalance suit le format monétaire standard (coefficient entier)
**Toutes les autres réponses Spendesk** retournent `amount` comme un coefficient entier :
`{ amount: 9138, precision: 2 }` → 91.38 EUR
**`list_cards.availableBalance` (et `spendingLimit`) suivent le même format `{ amount, currency, precision, formatted }` — afficher `formatted` tel quel :**
`{ amount: 9138, currency: "EUR", precision: 2, formatted: "EUR 91.38" }` → 91.38 EUR
→ Ne jamais afficher `availableBalance.amount` brut : utiliser `formatted`, ou `amount / 10^precision` pour calculer — le montant brut serait 100× trop grand.
```javascript
// CORRECT pour list_cards.availableBalance
const balance = card.availableBalance.amount / Math.pow(10, card.availableBalance.precision) // 91.38 ; pour l'affichage : card.availableBalance.formatted
// CORRECT pour tous les autres tools (get_payables, etc.)
const amount = payable.amount.amount / Math.pow(10, payable.amount.precision)
```
## Structure de réponse
```json
{
"id": "lfyzcn76rvd200",
"type": "Subscription card", // libellé : Single purchase card | Subscription card | Physical card | Multi-use card (les slugs ne servent qu'au filtre type)
"status": "Active", // libellé ; le filtre status accepte "Active" ou le code historique ACT
"lastFourDigits": "7071", // 4 chiffres, ou numéro masqué type "5577 * 9432" : lire le segment après le dernier espace ; null tant que la carte n'est pas émise ; le PAN complet n'est jamais retourné
"expiryDate": "2030-04-30T23:59:59.000Z",
"owner": { "id": "lywtbkp615b21t", "label": "Prénom Nom" }, // propriétaire : afficher label, utiliser id comme filtre userId
"currency": "EUR",
"availableBalance": { "amount": 9138, "currency": "EUR", "precision": 2, "formatted": "EUR 91.38" },
"spendingLimit": null // null sur les cartes subscription
}
```
## Piège — spendingLimit null sur les cartes subscription
`spendingLimit` est `null` pour les cartes `subscription` (confirmé S29 et S16). Le solde disponible se lit via `availableBalance` uniquement. `spendingLimit` est le budget mensuel de la carte (allocation rechargée chaque mois, pas un plafond à vie ni par transaction) ; il vaut `null` quand aucun budget mensuel n'est configuré, ce qui ne veut pas dire carte illimitée. Pour le budget d'une carte subscription, lire `subscriptionBudget`.
## Résoudre ownerId → nom de l'employé
`list_cards` retourne `owner` sous la forme `{ id, label }` : `label` est le nom du propriétaire, à afficher tel quel. `get_users` n'est utile que pour obtenir l'email (passer `owner.id` dans `ids`) :
```json
// get_users avec filtre par ID
{
"companyId": "<COMPANY_ID>",
"ids": ["lywtbkp615b21t", "autre_user_id"]
}
```
→ Retourne `{ firstName, lastName, email }` pour chaque userId. Construire un map userId → nom pour enrichir les cartes.
## Filtres disponibles
| Paramètre | Type | Description |
|-----------|------|-------------|
| `status` | string | Un seul statut : libellé exact sensible à la casse (ex. "Active", "Blocked") ou code historique (ACT, BLO, REA, PRE, NEW, CBL, CMD, ABO). EXP/CAN/LOS/STO/DAM renvoient une liste vide : `list_cards` ne retourne jamais ces cartes, passer par `get_card` |
| `type` | enum | single_purchase / subscription / physical / multi_use |
| `userId` | string | Filtrer par propriétaire |
| `createdAfter` | YYYY-MM-DD | Cartes créées après cette date |
| `createdBefore` | YYYY-MM-DD | Cartes créées avant cette date |
## Exemples de prompts utilisateurs
- "Quelles cartes virtuelles sont actives en ce moment avec leur solde disponible ?"
- "Y a-t-il des cartes avec un solde résiduel non utilisé ?"
- "Montre-moi les cartes actives de l'équipe Marketing"
Comment installer ce skill
/
- 1Télécharger le fichier
s29-cartes-actives-solde.mdvia le bouton ci-dessus. - 2Placer le fichier dans le répertoire
.claude/de votre projet (ou~/.claude/pour une installation globale).cp s29-cartes-actives-solde.md .claude/s29-cartes-actives-solde.md - 3Utiliser dans Claude Code — le skill est automatiquement découvert. Décrivez votre besoin en langage naturel et Claude appliquera les instructions du skill.
💡 Assurez-vous que le MCP Spendesk est configuré dans votre
.claude/settings.json avec les outils list_cards.Skills similaires
★ Top