Obtenir un document rempli depuis un modèle
Faire remplir un modèle de document par les données d'une personne, et le récupérer en PDF ou en Word.
Un modèle de document de Docage porte des champs ({{TransactionMember[Client]_Contact_LastName}}…) que la fusion remplit
avec les données des fiches. La fusion se fait dans un parcours : le document y est rempli avec les données du parcours, de ses
participants et de leurs contacts. Un parcours laissé en brouillon ne part chez personne : il suffit à produire le document.
1Un modèle de parcours qui porte le document
Dans l'application, préparez un modèle de parcours qui contient le modèle de document, avec le participant dont il lit les données (« Client »). Retrouvez-le :
GET https://staging-api.docage.com/Transactions/TemplatesIdAndName
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…curl "https://staging-api.docage.com/Transactions/TemplatesIdAndName" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…"using HttpClient client = new();
using HttpRequestMessage request = new(HttpMethod.Get, "https://staging-api.docage.com/Transactions/TemplatesIdAndName");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
using HttpResponseMessage response = await client.SendAsync(request);
string result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
throw new HttpRequestException(result);const response = await fetch("https://staging-api.docage.com/Transactions/TemplatesIdAndName", {
headers: {
Authorization: `Bearer ${token}`
}
});
const text = await response.text();
if (!response.ok) throw new Error(text);
const result = text ? JSON.parse(text) : null;Pour savoir quelles données le document lit, relisez ses champs, sans son contenu : POST https://staging-api.docage.com/Documents/Fields, avec
l'identifiant du modèle de document (["…"] — l'InitialDocumentId d'un document du modèle de parcours, que rend
GET https://staging-api.docage.com/Transactions/{id}). Un champ dont Member nomme un participant est une valeur que ce participant saisit ; les
autres se remplissent des données du parcours.
2Un parcours en brouillon, pour la personne
curl -X POST "https://staging-api.docage.com/Transactions/CreateFullTransaction?launchTransaction=false" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…" \
-F "TemplateId=aaaaaaaa-0000-4000-8000-000000000021" \
-F "Client=00000000-0000-4000-8000-000000000201"Client désigne le contact dont le document lit les données. La réponse est le parcours, en brouillon : relevez l'identifiant de
son document (TransactionFiles[].Id).
3Le document rempli
GET https://staging-api.docage.com/TransactionFiles/Download/eeeeeeee-0000-4000-8000-000000000025?format=pdf
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…curl "https://staging-api.docage.com/TransactionFiles/Download/eeeeeeee-0000-4000-8000-000000000025?format=pdf" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…"using HttpClient client = new();
using HttpRequestMessage request = new(HttpMethod.Get, "https://staging-api.docage.com/TransactionFiles/Download/eeeeeeee-0000-4000-8000-000000000025?format=pdf");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
using HttpResponseMessage response = await client.SendAsync(request);
string result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
throw new HttpRequestException(result);const response = await fetch("https://staging-api.docage.com/TransactionFiles/Download/eeeeeeee-0000-4000-8000-000000000025?format=pdf", {
headers: {
Authorization: `Bearer ${token}`
}
});
const text = await response.text();
if (!response.ok) throw new Error(text);
const result = text ? JSON.parse(text) : null;Le document est rendu rempli, en PDF. Sans format=pdf, il est rendu dans son format d'origine : un document Word (.docx) pour
un texte, un classeur (.xlsx) pour un tableur. GET https://staging-api.docage.com/TransactionFiles/GetPreview/{id} rend le même PDF, encodé en base64
dans un JSON, pour un aperçu.
4Faire le ménage
Le brouillon ne sert plus : mettez-le à la corbeille, puis supprimez-le.
DELETE https://staging-api.docage.com/Transactions/BatchDelete
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…
Content-Type: application/json
["cccccccc-0000-4000-8000-000000000023"]curl -X DELETE "https://staging-api.docage.com/Transactions/BatchDelete" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "Content-Type: application/json" \
-d '["cccccccc-0000-4000-8000-000000000023"]'using HttpClient client = new();
using HttpRequestMessage request = new(HttpMethod.Delete, "https://staging-api.docage.com/Transactions/BatchDelete");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
request.Content = new StringContent("""
[
"cccccccc-0000-4000-8000-000000000023"
]
""", Encoding.UTF8, "application/json");
using HttpResponseMessage response = await client.SendAsync(request);
string result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
throw new HttpRequestException(result);const response = await fetch("https://staging-api.docage.com/Transactions/BatchDelete", {
method: "DELETE",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify(["cccccccc-0000-4000-8000-000000000023"])
});
const text = await response.text();
if (!response.ok) throw new Error(text);
const result = text ? JSON.parse(text) : null;DELETE https://staging-api.docage.com/Transactions/BatchDefinitivelyDelete, avec la même liste, le supprime définitivement.
Les pièges
- Un brouillon ne consomme rien : seul l'envoi d'un parcours est compté.
- Le document est rempli à chaque lecture, avec les données du moment : relisez-le après une modification de la fiche.
- Pour l'envoyer à signer plutôt que le télécharger, lancez le parcours : voir Envoyer un parcours à signer.