API Modèles
Gérez les modèles de documents réutilisables. Les modèles stockent les définitions de documents qui peuvent être combinées avec des données au moment de la génération pour produire des PDF personnalisés.
Tous les points de terminaison nécessitent une authentification et sont délimités à un locataire.
GET /templates
Listez tous les modèles du locataire.
Point de terminaison
GET /api/v1/{tenantId}/templates
Réponse
Succès (200 OK)
[
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"parentId": null,
"tenantId": "f1e2d3c4-b5a6-7890-1234-567890abcdef",
"name": "Shipping Invoice",
"content": "{ \"documentDefinition\": { ... } }",
"testData": "{ \"client\": { ... } }",
"createdAt": "2026-03-15T10:00:00Z",
"createdBy": "laura.bennett@shipforge.io",
"owner": "laura.bennett@shipforge.io",
"updatedAt": "2026-03-28T14:30:00Z",
"revision": "rev-20260328T143000"
}
]
GET /templates/names
Listez uniquement les noms des modèles (résumé léger).
Point de terminaison
GET /api/v1/{tenantId}/templates/names
Réponse
Succès (200 OK)
Retourne la dernière version de chaque modèle nommé de manière unique.
[
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Shipping Invoice"
},
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"name": "Delivery Receipt"
}
]
POST /templates
Créez un nouveau modèle.
Point de terminaison
POST /api/v1/{tenantId}/templates
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom du modèle (100 caractères max) |
content | string | Oui | Définition de document JSON en tant que chaîne |
testData | string | Non | Données JSON d'exemple pour aperçu/test |
createdBy | string | Oui | Identifiant de l'auteur (100 caractères max) |
owner | string | Non | Identifiant du propriétaire (100 caractères max) |
parentId | string (GUID) | Non | ID du modèle parent pour les chaînes de révision |
{
"name": "Shipping Invoice",
"content": "{\"documentDefinition\":{\"contents\":[{\"p\":\"Invoice for $data.client.name\"}]}}",
"testData": "{\"client\":{\"name\":\"Test Corp\"}}",
"createdBy": "laura.bennett@shipforge.io",
"owner": "laura.bennett@shipforge.io"
}
Réponse
Succès (201 Created)
Retourne le modèle créé avec un id généré, une revision et des horodatages.
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"parentId": null,
"tenantId": "f1e2d3c4-b5a6-7890-1234-567890abcdef",
"name": "Shipping Invoice",
"content": "{\"documentDefinition\":{\"contents\":[{\"p\":\"Invoice for $data.client.name\"}]}}",
"testData": "{\"client\":{\"name\":\"Test Corp\"}}",
"createdAt": "2026-03-30T14:30:00Z",
"createdBy": "laura.bennett@shipforge.io",
"owner": "laura.bennett@shipforge.io",
"updatedAt": "2026-03-30T14:30:00Z",
"revision": "rev-20260330T143000"
}
GET /templates/{id}
Obtenez un seul modèle par ID.
Point de terminaison
GET /api/v1/{tenantId}/templates/{id}
Paramètres de chemin
| Paramètre | Type | Description |
|---|---|---|
id | string (GUID) | Identifiant du modèle |
Réponse
Succès (200 OK)
Retourne l'objet de modèle complet.
Erreur (404 Not Found)
Retourné lorsqu'aucun modèle avec l'ID donné n'existe pour ce locataire.
PUT /templates/{id}
Mettez à jour un modèle existant. Cela crée une nouvelle révision liée à la version précédente.
Point de terminaison
PUT /api/v1/{tenantId}/templates/{id}
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
id | string (GUID) | Oui | Doit correspondre au paramètre de chemin {id} |
name | string | Non | Nom du modèle mis à jour |
content | string | Oui | Définition de document mise à jour |
testData | string | Non | Données de test mises à jour |
createdBy | string | Non | Identifiant de l'auteur |
owner | string | Non | Identifiant du propriétaire |
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Shipping Invoice v2",
"content": "{\"documentDefinition\":{\"contents\":[{\"p\":\"Updated invoice for $data.client.name\"}]}}",
"testData": "{\"client\":{\"name\":\"Test Corp\"}}",
"createdBy": "laura.bennett@shipforge.io",
"owner": "laura.bennett@shipforge.io"
}
Réponse
Succès (204 No Content)
Le modèle a été mis à jour avec succès.
Erreur (400 Bad Request)
Retourné lorsque le id dans le corps ne correspond pas au paramètre de chemin.
Erreur (404 Not Found)
Retourné lorsqu'aucun modèle avec l'ID donné n'existe.
DELETE /templates/{id}
Supprimez un modèle.
Point de terminaison
DELETE /api/v1/{tenantId}/templates/{id}
Paramètres de chemin
| Paramètre | Type | Description |
|---|---|---|
id | string (GUID) | Identifiant du modèle |
Réponse
Succès (204 No Content)
Le modèle a été supprimé.
Erreur (404 Not Found)
Retourné lorsqu'aucun modèle avec l'ID donné n'existe.
Révisions de modèle
Les modèles prennent en charge la versioning par le biais de révisions. Chaque mise à jour crée une nouvelle révision liée à son parent.
POST /templates/{templateId}/revisions
Créez une nouvelle révision d'un modèle.
POST /api/v1/{tenantId}/templates/\{templateId\}/revisions
GET /templates/{templateId}/revisions
Listez toutes les révisions d'un modèle, ordonnées par la plus récente en premier.
GET /api/v1/{tenantId}/templates/\{templateId\}/revisions
DELETE /templates/{templateId}/revisions/{revisionId}
Supprimez une révision spécifique.
DELETE /api/v1/{tenantId}/templates/\{templateId\}/revisions/\{revisionId\}
POST /templates/{templateId}/revisions/{revisionId}/revert
Ramenez un modèle à une révision précédente. Cela crée une nouvelle révision avec le contenu de la révision historique spécifiée.
POST /api/v1/{tenantId}/templates/\{templateId\}/revisions/\{revisionId\}/revert