Workflow

Criação e manipulação do workflow

Na criação de um workflow é definido todos os passos que serão realizados durante a aprovação/assinatura de um documento ou mais documentos.

O workflow seguirá respectivamente a sequência de envio dos steps definidos na chave “workflowSteps”.

Criar um workflow

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

Montagem do workflow com quais arquivos queremos e quais pessoas queremos que assinem, definindo onde a assinatura ficará no documento.

Headers

NameTypeDescription

Authorization

string

Bearer <access-token>

Content-Type

string

application/json

Accept

string

application/json

Request Body

NameTypeDescription

files[].idFolder

string

ID da pasta para salvar o arquivo usado no workflow. Padrão: 0.

autoRemind

integer

Notificações de email quando está pendente de assinatura de alguém. 0 - Desativa (Default) 1 - Ativa

autoInitiate

integer

Além de criar, também inicia o fluxo, fazendo os envios de emails para os assinantes. 0 - Desativa (Default) 1 - Ativa

dueDate

string

Data de vencimento do fluxo, não será possível assinar os documentos após esta data definida. Exemplo: 2023-01-01 23:59:59

message

string

Uma mensagem para identificar este fluxo, do qual será exibida para o assinante.

priority

integer

Simboliza uma prioridade para o fluxo. 0 - Normal (Default) 1 - Alta 2 - Muito Alta

sla

String

Valor em horas em que será notificado a pendência de assinatura à pessoa. O valor 1 significa uma hora, 2 significa duas horas, sendo o valor máximo 720 horas (30 dias).

files

array

Um array de arquivos que vamos escolher para este fluxo.

files[].idFile

integer

ID do arquivo que queremos usar no fluxo. Este id se adquire ao fazer o upload do documento.

files[].name

string

Nome de identificação para o documento.

files[].specialFields

array

Campos especiais que devem aparecer no documento como, por exemplo, um QR Code com o link de validação do documento.

files[].specialFields[].type

integer

Tipo do campo: 9 - QR Code de validação 10 - QR Code de compartilhamento do documento.

files[].specialFields[].x

integer

Eixo x em relação ao topo do documento em que o campo irá aparecer.

files[].specialFields[].y

integer

Eixo y em relação ao topo do documento em que o campo irá aparecer.

files[].specialFields[].height

integer

Altura que o campo terá dentro do documento.

files[].specialFields[].width

integer

Largura que o campo terá dentro do documento.

files[].specialFields[].page

integer

Página do documento em que este campo irá aparecer.

files[].workflowSteps

array

Passos, ou seja, assinantes na ordem que queremos que assinem.

files[].workflowSteps[].idUser

integer

ID do usuário que queremos que assine, ou opcionamente troque este valor pelo valor abaixo.

files[].workflowSteps[].user

object

Caso não queira, não possui o id do usuário que queira ser assinante, crie este objeto no lugar. { "name": "Nome da pessoa", "email": "pessoa@example.com",

"whatsappNumber": "5511999999999",

"notifyWhatsapp": true }

files[].workflowSteps[].user.name

string

Nome da pessoa que queremos que assine neste step.

files[].workflowSteps[].user.email

string

Email da pessoa que queremos que assine neste step.

files[].workflowSteps[].action

integer

A ação que queremos deste assinante: 0 - Assinante (Default) 1 - Aprovador 2 - Visualizador

files[].workflowSteps[].signatureType

string

O tipo da assinatura que queremos desta pessoa. 0 - Eletrônica (Default) 1 - Digital 2 - Presencial

files[].workflowSteps[].fields

array

Campos que queremos no documento a respeito deste assinante.

files[].workflowSteps[].fields.type

integer

Tipo do campo: 0 - O nome do assinante; 1 - O email do assinante; 4 - Um campo de data; 6 - Um campo de input de texto de preenchimento opcional; 7 - Um campo de input de texto de preenchimento obrigatório; 8 - A assinatura visível, ou seja, o desenho da assinatura da pessoa; 11 - Um campo de data da assinatura; 16 - Uma assinatura invisível, ou seja, que consta do documento final mas não existe uma representação visual no documento. 17 - A assinatura visível, porém esta ficará na última página do documento no rodapé do lado direito, com essa assinatura não é necessário informar os eixos x e y.

files[].workflowSteps[].fields.x

string

Distância do eixo X em relação ao lad esquedo do documento em que o campo deve aparecer.

files[].workflowSteps[].fields.y

string

Distância do eixo Y em relação ao topo do documento em que o campo deve aparecer.

files[].workflowSteps[].fields.height

string

Altura do campo que será exibido no documento.

files[].workflowSteps[].fields.width

string

Largura do campo que será exibido no documento.

files[].workflowSteps[].fields.page

string

Página no documento do qual o campo será exibido.

files[].workflowSteps[].hasPhotoSign

boolean

Se deve ou não pegar a foto do assinante

{
    "id": 1259,
    "autoRemind": 0,
    "dueDate": {
        "date": "2023-01-01 00:00:00.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    "name": null,
    "message": "",
    "priority": 0,
    "sla": 1,
    "status": 0,
    "_embedded": {
        "user": {
            "id": 474,
            "username": "siletic225@xhyemail.com",
            "password": "$2y$10$Vw9uEiHuza.CaPHvmqXmi..PXIKQe/uyuDCnqkJOYWNpagU3X6IWm",
            "status": "1",
            "name": "Jhon Doe",
            "email": "siletic225@xhyemail.com",
            "cellphone": "+5562991838359",
            "document": "12312312312",
            "country": "Brazil",
            "state": "GO",
            "city": "Goiânia",
            "address": "Av 136, Ed. New York Square 19/20",
            "zipCode": "74000000",
            "dateCreated": {
                "date": "2020-02-20 13:28:28.000000",
                "timezone_type": 3,
                "timezone": "UTC"
            },
            "dateLastUpdated": {
                "date": "2020-02-20 13:29:10.000000",
                "timezone_type": 3,
                "timezone": "UTC"
            },
            "_embedded": {
                "businessUnit": {
                    "id": 24,
                    "name": "Soluti Soluções em negocios inteligentes",
                    "document": "cnpj",
                    "status": null,
                    "country": "Brazil",
                    "state": "GO",
                    "city": "Goiânia",
                    "address": "Av 136, Ed. New York Square 19/20",
                    "zipCode": "74000000",
                    "_links": {
                        "self": {
                            "href": "https://api.assine.online/business-unit/24"
                        }
                    }
                }
            },
            "_links": {
                "self": {
                    "href": "https://api.assine.online/user/474"
                }
            }
        }
    },
    "_links": {
        "self": {
            "href": "https://api.assine.online/workflow/1259"
        }
    }
}

Os campos whatsappNumber e notifyWhatsapp dentro de files[].workflowSteps[].user somente são necessários se você tiver o recurso de envio por Whatsapp habilitado. Caso queira contratar, procure o time comercial.

Caso precise de mais detalhes sobre a criação do workflow, veja nossa documentação do quickstart.

Buscar um workflow

GET https://api-v1.assine.online/v1/workflow/:id

Busca informações sobre o workflow, seu status, quem já assinou ou ainda está pendente e etc.

Path Parameters

NameTypeDescription

id

integer

ID do workflow que deseja consultar.

Headers

NameTypeDescription

Authorization

string

Bearer <access-token>

Accept

string

application/json

{
    "id": 1240,
    "autoRemind": 0,
    "dueDate": {
        "date": "2023-01-01 00:00:00.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    "name": null,
    "message": "Uma mensagem de identificação",
    "priority": 0,
    "sla": 1,
    "status": 6,
    "dateCreated": {
        "date": "2020-02-26 13:10:01.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    "dateStatus": {
        "date": "2020-02-26 13:12:04.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    "dateFineshed": null,
    "_embedded": {
        "documents": [
            {
                "id": 1333,
                "name": "Um documento de exemplo",
                "status": 1,
                "dueDate": null,
                "specialFields": [],
                "workflowSteps": [
                    {
                        "id": 1459,
                        "action": 0,
                        "signatureType": 0,
                        "status": 4,
                        "extraMetadata": null,
                        "dateStatus": {
                            "date": "2020-02-26 13:11:18.000000",
                            "timezone_type": 3,
                            "timezone": "UTC"
                        },
                        "latitude": "-1.0",
                        "longitude": "-1.0",
                        "reason": ".",
                        "fields": [
                            {
                                "type": 8,
                                "x": 51,
                                "y": 29,
                                "height": 46,
                                "width": 200,
                                "page": 1,
                                "value": "",
                                "name": ""
                            }
                        ],
                        "_embedded": {
                            "user": {
                                "id": 483,
                                "name": "João Carlos Santos",
                                "email": "joaocarlossantos@mailimail.com"
                            }
                        }
                    }                    
                ],
                "_embedded": {
                    "folder": {
                        "id": 174,
                        "name": "default",
                        "path": "default"
                    },
                    "originalFile": {
                        "id": 5575,
                        "checksum": "6703901978dcb3dbf2d9915e1d3e066cfe712b0a",
                        "_links": {
                            "download": {
                                "href": "https://api.assine.online/file?q=e2dvb2RfbG9va317ImRhdGEiOnsidXVpZCI6IjVhOGQyMjcyLTU0MGMtMTFlYS04ZjgyLTAyNDJhYzE0MDAwNyJ9LCJobWFjIjoiMjI0YmJkNTkyMGYyNTRhOTg3MGYxMWZhMTY4YTE4Yzc3YzY2NTgzZWNiYWY4MThhYTc5MTg5ZGRjMWJmZDYzMyIsIm5vbmNlIjoiNjc4NzE1ODI4Mjc1NjUifQ=="
                            }
                        }
                    },
                    "file": {
                        "id": 5586,
                        "checksum": "d02813a2f4e1356dcb818a7edb6d4f0b3452a8a2",
                        "_links": {
                            "download": {
                                "href": "https://api.assine.online/file?q=e2dvb2RfbG9va317ImRhdGEiOnsidXVpZCI6Ijc5Y2QzZWJhLTU4OTktMTFlYS1iMWEwLTAyNDJhYzE0MDAwNyJ9LCJobWFjIjoiYzBmMDVmMGE0YmYwNDQyNDgyOTUyNmRmZTIxMDBmMTI5ODhmY2E3MTAxMjY0NGZkNjJiZDc2Mzc0NDRiYWQ3ZSIsIm5vbmNlIjoiNjQ0MTE1ODI4Mjc1NjUifQ=="
                            }
                        }
                    }
                }
            }
        ]
    },
    "_links": {
        "self": {
            "href": "https://api.assine.online/workflow/1240"
        }
    }
}

Possíveis status do workflow:

  • 0: Rascunho, ou seja, ainda não iniciou-se.

  • 1: Circulando, ou seja, o fluxo se iniciou e está aguardando que as pessoas assinem.

  • 2: Cancelado, ou seja, a pessoa que criou o fluxo cancelou.

  • 3: Expirado, ou seja, o fluxo passou da data de vencimento definida.

  • 4: Processando, ou seja, o documento está sendo processado com o cálculo de criptografia da assinatura.

  • 5: Rejeitado, ou seja, algum dos assinantes rejeitou assinar este workflow.

  • 6: Completado, ou seja, todos os assinantes efetuaram a assinatura e o documento está totalmente assinado.

Possíveis status do step do workflow, ou seja, status do assinante se foi aprovado ou não (Propriedade: _embedded.documents[].workflowSteps[].status):

  • 0: Não iniciado, ou seja, o fluxo ainda não se iniciou e a pessoa ainda não recebeu o email pedindo a assinatura.

  • 1: Aguardando assinatura, ou seja, aguardando que o assinante peça para assinar.

  • 2: Na fila de processamento, ou seja, está na fila para processar a assinatura.

  • 3: Processando, ou seja, está no processo de gerar as chaves e cálculos para realizar a assinatura.

  • 4: Aprovado, ou seja, já foi processado e o usuário aprovou que o documento possa ser assinado, podendo avançar para o próximo passo que no nosso caso, o próximo passo é pedir a assinatura de Maria.

  • 5: Rejeitado, ou seja, o assinante rejeitou assinar o documento, abortando todo o fluxo.

É possível encontrar os links temporários para download do documento em sua versão original na chave “originalFile” e sua versão assinada/preenchida atual em “file”.

Listar workflows

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

Lista todos os workflow criados

Query Parameters

NameTypeDescription

page

integer

Página que deseja lista. Default: 1

Headers

NameTypeDescription

Authorization

string

Bearer <access-token>

Accept

string

application/json

{
    "_links": {
        "self": {
            "href": "https://api.assine.online/workflow?page=1"
        },
        "first": {
            "href": "https://api.assine.online/workflow"
        },
        "last": {
            "href": "https://api.assine.online/workflow?page=1"
        }
    },
    "_embedded": {
        "workflow": [
            {
                "id": 1232,
                "autoRemind": 0,
                "dueDate": {
                    "date": "2023-01-01 00:00:00.000000",
                    "timezone_type": 3,
                    "timezone": "UTC"
                },
                "name": null,
                "message": "Uma mensagem de identificação",
                "priority": 0,
                "sla": 1,
                "status": 1,
                "dateCreated": {
                    "date": "2020-02-20 18:11:10.000000",
                    "timezone_type": 3,
                    "timezone": "UTC"
                },
                "dateStatus": {
                    "date": "2020-02-20 18:49:41.000000",
                    "timezone_type": 3,
                    "timezone": "UTC"
                },
                "dateFinished": null,
                "_embedded": {
                    "user": {
                        "id": 474,
                        "name": "Jhon Doe",
                        "email": "siletic225@xhyemail.com",
                        "_links": {
                            "self": {
                                "href": "https://api.assine.online/user/474"
                            }
                        }
                    }
                },
                "_links": {
                    "self": {
                        "href": "https://api.assine.online/workflow/1232"
                    }
                }
            },
            ...
        ]
    },
    "page_count": 1,
    "page_size": 25,
    "total_items": 20,
    "page": 1
}

Iniciar um workflow

PATCH https://api-v1.assine.online/v1/workflow/:id

Quando o workflow é criado, o fluxo não se inicia automaticamente por padrão, ou seja, nenhum dos assinantes recebe o email com o pedido de assinatura, para isso precisamos inicializá-lo.

Path Parameters

NameTypeDescription

id

integer

ID do workflow

Headers

NameTypeDescription

Authorization

string

Bearer <access-token>

Content-Type

string

application/json

Accept

string

application/json

Request Body

NameTypeDescription

status

number

1

{
    "id": 1259,
    "autoRemind": 0,
    "dueDate": {
        "date": "2023-01-01 00:00:00.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    "name": null,
    "message": "",
    "priority": 0,
    "sla": 1,
    "status": 1,
    "_embedded": {
        "user": {
            "id": 474,
            "username": "siletic225@xhyemail.com",
            "status": "1",
            "name": "Jhon Doe",
            "email": "siletic225@xhyemail.com",
            "cellphone": "+5562991838359",
            "document": "12312312312",
            "country": "Brazil",
            "state": "GO",
            "city": "Goiânia",
            "address": "Av 136, Ed. New York Square 19/20",
            "zipCode": "74000000",
            "dateCreated": {
                "date": "2020-02-20 13:28:28.000000",
                "timezone_type": 3,
                "timezone": "UTC"
            },
            "dateLastUpdated": {
                "date": "2020-02-20 13:29:10.000000",
                "timezone_type": 3,
                "timezone": "UTC"
            },
            "_embedded": {
                "businessUnit": {
                    "id": 24,
                    "name": "Soluti Soluções em negocios inteligentes",
                    "document": "cnpj",
                    "status": null,
                    "country": "Brazil",
                    "state": "GO",
                    "city": "Goiânia",
                    "address": "Av 136, Ed. New York Square 19/20",
                    "zipCode": "74000000",
                    "_links": {
                        "self": {
                            "href": "https://api.assine.online/business-unit/24"
                        }
                    }
                }
            },
            "_links": {
                "self": {
                    "href": "https://api.assine.online/user/474"
                }
            }
        }
    },
    "_links": {
        "self": {
            "href": "https://api.assine.online/workflow/1259"
        }
    }
}

O corpo da requisição é literalmente:

{
    "status": 1
}

Cancelar workflow

PATCH https://api-v1.assine.online/v1/workflow/:id

Path Parameters

NameTypeDescription

id

integer

ID do workflow

Headers

NameTypeDescription

Authorization

string

Bearer <access-token>

Content-Type

string

application/json

Accept

string

application/json

Request Body

NameTypeDescription

status

integer

2

{
    "id": 1259,
    "autoRemind": 0,
    "dueDate": {
        "date": "2023-01-01 00:00:00.000000",
        "timezone_type": 3,
        "timezone": "UTC"
    },
    "name": null,
    "message": "",
    "priority": 0,
    "sla": 1,
    "status": 2,
    "_embedded": {
        "user": {
            "id": 474,
            "username": "siletic225@xhyemail.com",
            "status": "1",
            "name": "Jhon Doe",
            "email": "siletic225@xhyemail.com",
            "cellphone": "+5562991838359",
            "document": "12312312312",
            "country": "Brazil",
            "state": "GO",
            "city": "Goiânia",
            "address": "Av 136, Ed. New York Square 19/20",
            "zipCode": "74000000",
            "dateCreated": {
                "date": "2020-02-20 13:28:28.000000",
                "timezone_type": 3,
                "timezone": "UTC"
            },
            "dateLastUpdated": {
                "date": "2020-02-20 13:29:10.000000",
                "timezone_type": 3,
                "timezone": "UTC"
            },
            "_embedded": {
                "businessUnit": {
                    "id": 24,
                    "name": "Soluti Soluções em negocios inteligentes",
                    "document": "cnpj",
                    "status": null,
                    "country": "Brazil",
                    "state": "GO",
                    "city": "Goiânia",
                    "address": "Av 136, Ed. New York Square 19/20",
                    "zipCode": "74000000",
                    "_links": {
                        "self": {
                            "href": "https://api-hom.assine.online/business-unit/24"
                        }
                    }
                }
            },
            "_links": {
                "self": {
                    "href": "https://api-hom.assine.online/user/474"
                }
            }
        }
    },
    "_links": {
        "self": {
            "href": "https://api-hom.assine.online/workflow/1259"
        }
    }
}

O corpo da requisição é literalmente:

{
    "status": 2
}

Last updated