Pular para o conteúdo principal

Criação de modelo

Este serviço permite criar modelos personalizados que depois poderão ser usados para preencher documentos para assinatura.

POST/templatechave privadaprk_

Autenticação​

Inclua sua chave privada no cabeçalho Authorization.

Authorization: prk_xxx...

Parâmetros de criação​

NomeTipoDescrição
nameString obrigatórioNome da automação.
descriptionString opcionalTexto que descreve o modelo, com até 500 caracteres.
configArray obrigatórioArray de perguntas para o usuário. Veja Configuração JSON.
signatureProfileArray obrigatórioDefinição de signatários e aprovadores. Veja Perfis de assinatura.
signArray obrigatórioNomes das perguntas obrigatórias.
preBuildBoolean opcionalSe true, inclui preenchimento automático.
O limite de description é de 500 caracteres

description é informativa: ela não altera o comportamento do modelo e ajuda sua equipe a reconhecer para que serve cada modelo. Se você não a enviar, o modelo fica sem descrição. Se o texto passar de 500 caracteres, a API responde 400 e não cria o modelo.

GET /template retorna o campo, tanto na lista quanto no detalhe por id.

Exemplos de criação​

curl -X POST https://api.auco.ai/v1.5/ext/template \
-H "Content-Type: application/json" \
-H "Authorization: prk_private_key_company" \
-d '{
"name": "Teste de modificação de variáveis do documento",
"description": "Contrato de serviço com um único signatário, para a equipe de vendas",
"config": [
{
"name": "client_name",
"type": "name",
"description": "Informe o nome do cliente"
},
{
"description": "Selecione o tipo de documento do cliente",
"name": "client_document_type",
"type": "clausula",
"value": "id_card",
"options": [
{
"name": "Documento de identidade nacional",
"value": "id_card"
},
{
"name": "Documento de identidade de estrangeiro",
"value": "foreign_id"
}
]
},
{
"description": "Informe o número do documento de identidade nacional do cliente",
"name": "client_id_card",
"type": "number",
"prereq": [
{
"k": "client_document_type",
"v": "id_card"
}
]
},
{
"description": "Informe o número do documento de identidade de estrangeiro do cliente",
"name": "client_foreign_id",
"type": "number",
"prereq": [
{
"k": "client_document_type",
"v": "foreign_id"
}
]
},
{
"name": "client_email",
"type": "email",
"description": "Informe o e-mail do cliente"
},
{
"name": "client_phone",
"type": "phone",
"description": "Informe o telefone do cliente"
}
],
"sign": [
"client_name",
"client_id_card",
"client_foreign_id",
"client_email",
"client_phone"
],
"signatureProfile": [
{
"email": "client_email",
"phone": "client_phone",
"identification": "client_id_card|client_foreign_id",
"name": "client_name",
"type": "client"
}
]
}'

Exemplo de resposta​

{
"id": "template_id",
"urls": {
"mask": "https://signed_url_mask",
"complete": "https://signed_url_complete"
}
}

Upload do HTML Complete e do HTML Mask:​

Na resposta do serviço de criação, você encontrará duas URLs assinadas, uma para cada HTML. Elas têm validade de 120 segundos: depois disso, deixam de ser válidas. Deixe os arquivos HTML Complete e HTML Mask prontos antes de criar o modelo e envie cada um deles, sem alterações, em uma requisição PUT para a sua URL.

Upload com Content-Type: binary/octet-stream

As URLs são assinadas para esse tipo de conteúdo: se você enviar outro —por exemplo text/html—, o upload é rejeitado. Envie o arquivo sem transformá-lo: no curl use --data-binary, e não -d, que remove as quebras de linha.

# Upload HTML Mask
curl -X PUT https://signed_url_mask \
-H "Content-Type: binary/octet-stream" \
--data-binary @mask.html

# Upload HTML Complete
curl -X PUT https://signed_url_complete \
-H "Content-Type: binary/octet-stream" \
--data-binary @complete.html
As URLs expiram em 120 segundos

Se elas expirarem antes de você enviar os arquivos, chame PUT /template com o id do modelo para obter novas URLs. Não chame POST /template novamente: você criaria outro modelo.


⚠️ Respostas de erro​

Os erros vêm com o corpo { "message": "..." }.

CódigoDescrição
400Corpo inválido: PAYLOAD_NOT_VALID (o corpo não é JSON), PROFILE_FIELD_NOT_FOUND: <field> (o email ou o phone de um signatário não é uma pergunta de config nem um campo de preFill), PROFILE_FIELD_TYPE_INVALID: <field> must be type <type> (aponta para uma pergunta de outro tipo) ou a mensagem do validador
401Autenticação inválida ou ausente

A mensagem do validador indica o campo com problema, por exemplo "name" is required, "config[0].maxLength" is not allowed ou "signatureProfile[0].name" must be a string. Veja as regras de cada campo em Configuração JSON.