Usando templates

Use templates e deixe pré-configurado fluxos de assinatura para reuso

Os templates permite que seja pré-configurado um documento e, opcionalmente, assinantes e demais valor de um fluxo. Com isso é possível fazer o reuso para criação de fluxos, existem dois tipos de templates: temporário e permanente.

O template temporário é utilizado para fazer integração com nossa página de configuração de documento, da qual é apagada depois de um tempo. O permanente é para reuso na criação de fluxos de assinatura, utilizaremos esse como exemplo deste tutorial.

Criando o payload

Vamos montar um payload simples de um documento e um assinante e salvar este template. Antes de tudo, faça upload do documento que será utilizado para este template e guarde o id retornado, agora vamos construir o payload:

{
"type": 1,
"name": "Nome do template",
"settings": {
"canAddSigners": true
},
"template": {...}
}
  • type: O tipo do template, do quais são:

    • 0: Temporário;

    • 1: Permanente.

  • name: O nome de identificação do template.

  • settings: Configurações para o template.

    • canAddSigners: Configuração que define se a pessoa que está editando o template terá permissão de adicionar assinantes. Esta propriedade pode ser ocultada caso não esteja utilizando o template que usa a página de integração.

  • template: O payload do workflow que desejamos guardar para reuso, faremos isso no próximo passo.

Neste momento estamos definindo somente a configuração do template em si, sem ainda informar o documento e os assinantes. Para fazer isso, vamos incluir os dados no nosso template:

{
"type": 1,
"name": "Nome do template",
"settings": {
"canAddSigners": true
},
"template": {
"message": "Comentário opcional",
"files": [{
"idFile": 5583,
"name": "Meu documento",
"specialFields": [],
"workflowSteps": []
}]
}
}

Todos os campos que vão para a propriedade template são idênticas ao payload que criamos para o workflow. Caso queira, você já pode deixar pré-definido um assinante:

{
"type": 1,
"name": "Nome do template",
"settings": {
"canAddSigners": true
},
"template": {
"message": "Comentário opcional",
"files": [{
"idFile": 5583,
"name": "Meu documento",
"specialFields": [],
"workflowSteps": [{
"user": {
"name": "Pedro Cavalcante",
"email": "pedrocavalcante@webbamail.com"
},
"action": 0,
"signatureType": 0,
"fields": []
}]
}]
}
}

Lembrando que para criar o workflow de fato, é necessário que o assinante tenha um ao menos uma field de assinatura. Caso queira já deixar pré-definido onde deve aparecer a assinatura da pessoa:

{
"type": 1,
"name": "Nome do template",
"settings": {
"canAddSigners": true
},
"template": {
"message": "Comentário opcional",
"files": [{
"idFile": 5583,
"name": "Meu documento",
"specialFields": [],
"workflowSteps": [{
"user": {
"name": "Pedro Cavalcante",
"email": "pedrocavalcante@webbamail.com"
},
"action": 0,
"signatureType": 0,
"fields": [
{
"type": 8,
"x": 51,
"y": 29,
"height": 46,
"width": 200,
"page": 1
}
]
}]
}]
}
}

Concluído nosso payload, salvamos ele:

cURL
JavaScript
PHP
cURL
curl -X POST \
-H 'Authorization: Bearer 41f7ff53c1dc5cf4f3db1f33e026b2908cdf88b4' \
-H "Content-Type: application/json" \
https://api.assine.online/v1/workflow-template -d '
{
"type": 1,
"name": "Nome do template",
"settings": {
"canAddSigners": true
},
"template": {
"message": "Comentário opcional",
"files": [{
"idFile": 5583,
"name": "Meu documento",
"specialFields": [],
"workflowSteps": [{
"user": {
"name": "Pedro Cavalcante",
"email": "pedrocavalcante@webbamail.com"
},
"action": 0,
"signatureType": 0,
"fields": [
{
"type": 8,
"x": 51,
"y": 29,
"height": 46,
"width": 200,
"page": 1
}
]
}]
}]
}
}
'
JavaScript
const token = '41f7ff53c1dc5cf4f3db1f33e026b2908cdf88b4';
const body = {
type: 0,
name: 'Nome do template',
settings: {
canAddSigners: true
},
template: {
message: 'Comentário opcional',
files: [{
idFile: 5583,
name: 'Meu documento',
specialFields: [],
workflowSteps: [{
user: {
name: 'Pedro Cavalcante',
email: 'pedrocavalcante@webbamail.com'
},
action: 0,
signatureType: 0,
fields: [
{
type: 8,
x: 51,
y: 29,
height: 46,
width: 200,
page: 1
}
]
}]
}]
}
};
const response = await fetch('https://api.assine.online/v1/workflow-template', {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`
'Content-Type': 'application/json'
},
body: JSON.stringify(body)
});
const data = await response.json();
PHP
$token = '41f7ff53c1dc5cf4f3db1f33e026b2908cdf88b4';
$client = new GuzzleHttp\Client();
$res = $client->request('POST', 'https://api.assine.online/v1/workflow-template', [
'headers' => [
'Authorization' => 'Bearer ' . $token
],
'json' => [
"type" => 1,
"name" => "Nome do template",
"settings" => [
"canAddSigners" => true
],
"template" => [
"message" => "Comentário opcional",
"files" => [
[
"idFile" => 5583,
"name" => "Meu documento",
"specialFields" => [],
"workflowSteps" => [[
"user" => [
"name" => "Pedro Cavalcante",
"email" => "pedrocavalcante@webbamail.com"
],
"action" => 0,
"signatureType" => 0,
"fields" => [
[
"type" => 8,
"x" => 51,
"y" => 29,
"height" => 46,
"width" => 200,
"page" => 1
]
]
]
]
]
]
]]
]);
echo $res->getBody();

POST https://api.assine.online/v1/workflow-template

Resposta:

{
"id": 19,
"type": 1,
"token": "e2dvb2RfbG9va317ImRhdGEiOnsidHlwZSI6InRlbXBsYXRlIiwiaWQiOjE5fSwiaG1hYyI6ImIwZjhiZTFkOTI4M2Q0NThhODcwOGMzYWIwMDJkMWIxODk0NmRhNWZlZWUxODE2ZDkwZjBkNzg4YzdmMzlkMTAiLCJub25jZSI6IjkwNTkxNTgyODA0ODY0In0=",
"title": "Template created",
"status": 201,
"detail": "Template created"
}

O campo token é usado caso precise da página para integração.

Com isso temos nosso template criado, caso queira consultá-lo:

cURL
JavaScript
PHP
cURL
curl -X GET \
-H 'Authorization: Bearer 41f7ff53c1dc5cf4f3db1f33e026b2908cdf88b4' \
https://api.assine.online/v1/workflow-template/19
JavaScript
const token = '41f7ff53c1dc5cf4f3db1f33e026b2908cdf88b4';
const workflowTemplateId = 19;
const response = await fetch(`https://api.assine.online/v1/workflow-template/${workflowTemplateId}`, {
method: 'GET',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
const data = await response.json();
PHP
$token = '41f7ff53c1dc5cf4f3db1f33e026b2908cdf88b4';
$workflowTemplateId = 19;
$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.assine.online/v1/workflow-template/' . $workflowTemplateId, [
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
echo $res->getBody();

GET https://api.assine.online/v1/workflow-template/:workflowTemplateId

Resposta:

{
"id": 19,
"template": {
"message": "Comentário opcional",
"files": [
{
"idFile": 5583,
"name": "Meu documento",
"specialFields": [],
"workflowSteps": [
{
"user": {
"name": "Pedro Cavalcante",
"email": "pedrocavalcante@webbamail.com"
},
"action": 0,
"signatureType": 0,
"fields": [
{
"type": 8,
"x": 51,
"y": 29,
"height": 46,
"width": 200,
"page": 1
}
]
}
],
"_embedded": {
"file": {
"_links": {
"download": {
"href": "https://api.assine.online/file?q=e2dvb2RfbG9va317ImRhdGEiOnsidXVpZCI6IjM3MTNmNDIwLTU5NTYtMTFlYS05Y2UzLTAyNDJhYzE1MDAwNyJ9LCJobWFjIjoiYjVlMzkzZjAyOWUwZjk1MzdhOGUwZmJiZTI2YzRlNzAwNGEwYzQ0YmRhZWYxOWQyODkxMDlkZDRhYjRiNmYxZCIsIm5vbmNlIjoiNTU0MjE1ODI4MDUwNjMifQ=="
}
}
}
}
}
]
},
"settings": {
"canAddSigners": true
},
"token": "e2dvb2RfbG9va317ImRhdGEiOnsidHlwZSI6InRlbXBsYXRlIiwiaWQiOjE5fSwiaG1hYyI6ImE4YjJkMzIyZThkYzM1N2IwYjBiYWMwYmFmOWVkZjU3MGI1MGUzMWRlYzFjYjJkOGI1MWQxMzhkN2Y3N2RjN2MiLCJub25jZSI6Ijc4NTgxNTgyODA1MDYzIn0=",
"type": 1,
"title": "",
"status": 200,
"detail": ""
}

Na resposta temos todo o payload para a criação de novos workflows bem como o link para upload do documento usado no template e o token caso deseje usar nossa página de integração.

Com essas informações você pode usar todo o conteúdo que está na propriedade template para criar o fluxo de assinatura.