Requête exemple
Réponse exemple
Repousse la date d'expiration d'un transfert existant dans le futur. Vous pouvez exprimer la prolongation de deux manières : soit une durée relative en heures via hours (comptée à partir de maintenant), soit une date absolue ISO 8601 via until. Comportement notable : la prolongation est bornée par le plan de l'espace de travail. Le plafond provient de coffrify_stripe_products.retention_days (converti en heures), avec un repli de 7 jours (168 h) si aucune valeur n'est définie pour le plan. Avec hours, la valeur est silencieusement ramenée dans l'intervalle [1, plafond] ; avec until, une date au-delà du plafond est rejetée par une erreur de validation. L'appel réactive également le transfert en repositionnant son status sur active.
Authentification
Cet endpoint requiert une clé API disposant du scope transfers:write. La requête est exécutée dans le contexte de l'espace de travail rattaché à la clé : seuls les transferts appartenant à ce workspace_id sont accessibles.
Corps de la requête
Vous devez fournir au moins l'un des deux champs hours ou until. Si les deux sont absents, l'API renvoie une erreur validation_error. Si les deux sont fournis, until a la priorité sur hours.
| Champ | Type | Requis | Description |
|---|---|---|---|
| hours | number (entier) | Conditionnel | Durée de prolongation en heures à partir de maintenant. La valeur est arrondie à l'entier inférieur puis bornée dans l'intervalle [1, plafond du plan]. Une valeur hors limites est ajustée silencieusement, sans erreur. Requis si until est absent. |
| until | string (ISO 8601) | Conditionnel | Date d'expiration absolue au format ISO 8601 (ex. 2026-06-12T18:00:00.000Z). Doit être un horodatage valide et ne pas dépasser le plafond du plan calculé depuis maintenant, sinon une erreur validation_error est renvoyée. Requis si hours est absent ; prioritaire sur hours si les deux sont fournis. |
Réponse
En cas de succès, l'API renvoie un objet décrivant le transfert prolongé. Le champ new_expires_at contient la nouvelle date d'expiration effective (ISO 8601) et previous_expires_at l'ancienne, pour faciliter l'audit. plan indique le plan de l'espace de travail (en minuscules) et plan_cap_hours le plafond de prolongation appliqué, en heures, ce qui permet de connaître la limite réelle imposée par l'abonnement. transfer_id et short_code identifient le transfert concerné. Le transfert est de plus remis au statut active côté base.
| Champ | Type | Description |
|---|---|---|
| transfer_id | string | Identifiant du transfert prolongé. |
| short_code | string | Code court public du transfert (utilisé dans l'URL de partage). |
| previous_expires_at | string (ISO 8601) | null | Ancienne date d'expiration, avant prolongation. |
| new_expires_at | string (ISO 8601) | Nouvelle date d'expiration effective après prolongation. |
| plan | string | Plan de l'espace de travail en minuscules (ex. free, pro). |
| plan_cap_hours | number | Plafond de prolongation en heures imposé par le plan (retention_days x 24, ou 168 par défaut). |
Erreurs
| Statut / code | Quand | Comment résoudre |
|---|---|---|
| 400 validation_error | Ni hours ni until fournis ; ou until n'est pas un ISO 8601 valide ; ou until dépasse le plafond du plan. | Fournir au moins l'un des deux champs. Vérifier que until est un horodatage ISO 8601 valide et inférieur ou égal à now + plan_cap_hours. |
| 401 missing_api_key / invalid_api_key | Clé API absente, invalide, expirée ou révoquée. | Envoyer une clé API valide dans l'en-tête d'autorisation. |
| 403 scope_missing | La clé API ne possède pas le scope transfers:write. | Émettre une clé disposant du scope transfers:write. |
| 404 not_found | Aucun transfert avec cet id dans l'espace de travail de la clé. | Vérifier l'identifiant et que le transfert appartient bien au bon espace de travail. |
| 410 not_found | Le transfert existe mais a le statut deleted. | Le transfert supprimé ne peut pas être prolongé ; recréer un transfert si nécessaire. |
| 429 rate_limited | Quota d'appels dépassé. | Réessayer après le délai indiqué et appliquer un backoff. |
| 500 internal_error | Échec de la mise à jour en base. | Réessayer ; si l'erreur persiste, contacter le support. |
Voir aussi
GET/v1/transfers/{id}Récupère les détails d'un transfert, dont son statut et sa date d'expiration courante.POST/v1/transfersCrée un nouveau transfert avec une date d'expiration initiale.DELETE/v1/transfers/{id}Supprime un transfert ; un transfert supprimé ne peut plus être prolongé.