REST API D4Sign

Informações Gerais

A D4Sign é uma plataforma de assinatura eletrônica de documentos que atende os requisitos da Medida Provisória 2.200-2/01, ou seja, autenticidade, integridade e não repúdio. Trazendo, assim, validade jurídica para todas as assinaturas realizadas através da D4Sign.

Seja bem-vindo ao guia de referências da API da D4Sign! É através desta API que você irá integrar o seu sistema ao nosso. Você poderá utilizar todos os recursos da plataforma através dessa API, como, por exemplo, enviar documentos para assinatura e exibí-los em seu website, mantendo o usuário em seu ambiente.

A primeira coisa que você deve saber são os endpoints que usamos:

Ambiente Endpoint Validade jurídica
Produção https://secure.d4sign.com.br/api/v1 true
Desenvolvimento (SandBox) http://demo.d4sign.com.br/api/v1 false

Nossa API é RESTful e todas as respostas são em JSON.

Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;

try{
	$client = new Client();
	//$client->setUrl('https://secure.d4sign.com.br/api/'); //Produção - A versão (v1) já está embutida na SDK
	$client->setUrl('http://demo.d4sign.com.br/api/'); //Desenvolvimento (SandBox)
} catch (Exception $e) {
	echo $e->getMessage();
} 

Passos básicos para iniciar

1º - Realizar o upload do documento
2º - Cadastrar o webhook(POSTBack) //OPCIONAL
3º - Cadastrar os signatários
4º - Enviar o documento para assinatura
5º - Utilizar o EMBED D4Sign para exibir o documento em seu website //OPCIONAL

Erros de requisições

Resposta 4XX

Caso você utilize parâmetros inválidos, o corpo da resposta será um JSON contendo uma mensagem de erro.

  • HTTP Header: Content-Type: application/json
  • Body: { "message": "Erro" }

Resposta 5XX

Caso ocorra qualquer tipo de falha no servidor, o corpo da resposta será um JSON contendo uma mensagem de erro.

  • HTTP Header: Content-Type: application/json
  • Body: { "message": "Server error." }

Formatação JSON

A API da D4Sign utiliza JSON como formato das requisições. Todas as respostas serão em JSON.
Inclua, também, Accept: application/json e Content-Type: application/json no HEADER.

Autenticação

A autenticação é feita através dos parâmetros tokenAPI e cryptKey que automaticamente identifica e autentica o usuário.

Os parâmetros devem ser enviados no caminho da requisição, ou seja, toda requisição deverá conter no path ?tokenAPI={token_user}&cryptKey={crypt_key}

O parâmetro cryptKey só precisa ser enviado caso esteja habilitado em sua conta.

API Keys

A sua Chave de API está disponível em sua conta. Faça login e acesse o menu 'Dev API'.

Você terá um limite de 50 requisições por hora. Para aumentar esse limite, entre em contato com o suporte@d4sign.com.br.

Em caso de dúvidas sobre onde encontrar a sua Chave de API, entre em contato pelo e-mail suporte@d4sign.com.br

SDKs Disponíveis

SDK PHP em https://github.com/d4sign/d4sign-php

Configuração mínima: PHP 5 >= 5.5.0

Em breve novas SDKs estarão disponíveis. :)

Testando com o Postman

Postman é uma poderosa ferramenta para tornar o seu desenvolvimento de API mais rápido e mais fácil.
Para testar o uso da API D4Sign com o Postman, basta clicar no botão acima. Após a instalação e importação da biblioteca "D4Sign - API", você precisará configurar o tokenAPI e cryptKey no canto superior direito, conforme imagem abaixo:

Atenção: O host padrão configurado no Postman é o host de Desenvolvimento (SandBox).

Se preferir, acesse a documentação criada pelo Postman:
https://documenter.getpostman.com/view/1486030/d4sign-api/2SMXHA

API

Na D4Sign, um processo de assinatura ocorre sempre através de um documento, ou seja, o documento precisa ser criado em seu ambiente (seu servidor) e enviado para a D4Sign através do nosso objeto de 'upload' (documents/{uuid_safe}/upload).

Cada documento possui uma chave única que é criada no momento do upload do documento. Essa chave é muito importante e deve ser inserida em seu banco de dados para futuras interações com o documento.

Listar todos os cofres

Este objeto retornará TODOS os COFRES da sua conta.

GET/safes

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/safes?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuid-safe": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "name-safe": "Contratos"
},
{...}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$safes = $client->safes->find();
	
	//print_r($safes);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Listar TODOS os documentos

Este objeto retornará TODOS os documentos da sua conta.

GET/documents

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

O resultado será de 500 documentos por páginas
Utilize o parametro PG na URL para paginar o resultado. Ex.:
https://secure.d4sign.com.br/api/v1/documents?tokenAPI={SEU-TOKEN}&cryptKey={crypt-key}&pg=2

O primeiro bloco do resultado exibirá o total de páginas disponíveis

Requisição

Header

{
    "Content-Type": "application/json"
}
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuidDoc": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "nameDoc": "teste.pdf",
    "type": "application/pdf",
    "size": "118990",
    "pages": "6",
    "uuidSafe": "06b3ddb1-abc9-4ab8-b944-0d7c940486af",
    "safeName": "Atendimento",
    "statusId": "3",
    "statusName": "Aguardando Assinaturas"
},
{...}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$docs = $client->documents->find();
	
	//print_r($docs);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Listar um documento específico

Esse objeto retornará apenas o documento solicitado.

GET/documents/{UUID-DOCUMENT}

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENTO}?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}
Parâmetro Descrição
UUID-DOCUMENTO (obrigatório) UUID do documento que deverá ser listado.

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuidDoc": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "nameDoc": "teste.pdf",
    "type": "application/pdf",
    "size": "118990",
    "pages": "6",
    "uuidSafe": "06b3ddb1-abc9-4ab8-b944-0d7c940486af",
    "safeName": "Atendimento",
    "statusId": "3",
    "statusName": "Aguardando Assinaturas"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$docs = $client->documents->find("{UUID-DOCUMENT}");
	
	//print_r($docs);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Listar todos os documentos de um cofre ou pasta

Esse objeto retornará todos os documentos que estiverem associados ao cofre e pasta informada.

GET/documents/{UUID-SAFE}/safe

Para filtrar com a pasta, utilize /documents/{UUID-SAFE}/safe/{UUID-FOLDER}

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-SAFE}/safe?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

O resultado será de 500 documentos por páginas
Utilize o parametro PG na URL para paginar o resultado. Ex.:
https://secure.d4sign.com.br/api/v1/documents/{UUID-SAFE}/safe?tokenAPI={SEU-TOKEN}&cryptKey={crypt-key}&pg=2

O primeiro bloco do resultado exibirá o total de páginas disponíveis

Requisição

Header

{
    "Content-Type": "application/json"
}
Parâmetro Descrição
UUID-SAFE (obrigatório) UUID do COFRE que deverá ser listado.
UUID-FOLDER UUID da PASTA (opcional)

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuidDoc": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "nameDoc": "teste.pdf",
    "type": "application/pdf",
    "size": "118990",
    "pages": "6",
    "uuidSafe": "06b3ddb1-abc9-4ab8-b944-0d7c940486af",
    "safeName": "Atendimento",
    "statusId": "3",
    "statusName": "Aguardando Assinaturas"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$docs = $client->documents->safe("{UUID-SAFE}");
	
	//print_r($docs);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Listar todos os documentos de uma fase

Esse objeto retornará todos os documentos que estiverem na fase informada.

GET/documents/{ID-FASE}/status

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{ID-FASE}/status?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

O resultado será de 500 documentos por páginas
Utilize o parametro PG na URL para paginar o resultado. Ex.:
https://secure.d4sign.com.br/api/v1/documents/{ID-FASE}/status?tokenAPI={SEU-TOKEN}&cryptKey={crypt-key}&pg=2

O primeiro bloco do resultado exibirá o total de páginas disponíveis

Requisição

Header

{
    "Content-Type": "application/json"
}
Parâmetro Descrição
ID-FASE (obrigatório) ID da FASE que deverá ser listado.

ID 1 - Processando
ID 2 - Aguardando Signatários
ID 3 - Aguardando Assinaturas
ID 4 - Finalizado
ID 5 - Arquivado
ID 6 - Cancelado

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuidDoc": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "nameDoc": "teste.pdf",
    "type": "application/pdf",
    "size": "118990",
    "pages": "6",
    "uuidSafe": "06b3ddb1-abc9-4ab8-b944-0d7c940486af",
    "safeName": "Atendimento",
    "statusId": "3",
    "statusName": "Aguardando Assinaturas"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$docs = $client->documents->status("{ID-FASE}");
	
	//print_r($docs);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Realizar o UPLOAD de um documento principal

Esse objeto realizará o UPLOAD do seu documento para os servidores da D4Sign.

Após o UPLOAD, o documento será criptografado em nossos cofres e carimbado com um número de série.

Após o processamento um preview será gerado. O processamento será realizado em background, ou seja, a requisição não ficará bloqueada.

Todos os documentos ficam armazenados em COFRES criptografados, ou seja, o parâmetro UUID-SAFE é obrigatório e determina em qual cofre o documento ficará armazenado.

POST/documents/{UUID-SAFE}/upload

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-SAFE}/upload?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "multipart/form-data;",
    "tokenAPI": "{token-user}"
}

Body

{
    "file": "/path/file_name.pdf",
    "uuid_folder": "{UUID DA PASTA}"
}
Parâmetro Descrição
file (obrigatório) Arquivo que será enviado para os servidores da D4Sign.

MIME Types aceitos PDF,DOC,DOCX,JPG,PNG,BMP
uuid_folder (opcional) Para que o documento fique armazenado dentro da pasta, informe o UUID dela.

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuid": "9f08bf18-bf4b-410f-9701-c286e5b1cad1"
}
Exemplos
PHP (SDK)      C# (.NET)

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$path_file = '/pasta/arquivo.pdf';
	$id_doc = $client->documents->upload('{UUID-SAFE}', $path_file);
	
	//print_r($id_doc);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Realizar o UPLOAD de um documento anexo ao principal

Esse objeto realizará o UPLOAD do seu documento para os servidores da D4Sign e ficará anexo ao documento principal.

Após o processamento um preview será gerado. O processamento será realizado em background, ou seja, a requisição não ficará bloqueada.

POST/documents/{UUID-DOC-PRINCIPAL}/uploadslave

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOC-PRINCIPAL}/uploadslave?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "multipart/form-data;",
    "tokenAPI": "{token-user}"
}

Body

{
    "file": "/path/file_name.pdf"
}
Parâmetro Descrição
file (obrigatório) Arquivo que será enviado para os servidores da D4Sign.

MIME Types aceitos PDF,DOC,DOCX,JPG,PNG,BMP

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "File created"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$path_file = '/pasta/arquivo.pdf';
	$id_doc = $client->documents->uploadslave('{UUID-DOC-PRINCIPAL}', $path_file);
	
	//print_r($id_doc);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Realizar o UPLOAD de um documento principal (Binário)

Esse objeto realizará o UPLOAD do seu documento para os servidores da D4Sign.

Após o UPLOAD, o documento será criptografado em nossos cofres e carimbado com um número de série.

Após o processamento um preview será gerado. O processamento será realizado em background, ou seja, a requisição não ficará bloqueada.

Todos os documentos ficam armazenados em COFRES criptografados, ou seja, o parâmetro UUID-SAFE é obrigatório e determina em qual cofre o documento ficará armazenado.

POST/documents/{UUID-SAFE}/uploadbinary

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-SAFE}/uploadbinary?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Body

{
    "base64_binary_file": "JVhsdCAdwesAD2dsadfASDQW...",
    "mime_type": "application/pdf",
    "name": "Meu contrato de venda",
    "uuid_folder": "{UUID DA PASTA}"
}
Parâmetro Descrição
base64_binary_file (obrigatório) Arquivo que será enviado para os servidores da D4Sign.

ATENÇÃO: Você deve enviar o binário do seu arquivo codificado em BASE64
mime_type (obrigatório) Informe o MIMETYPE do seu arquivo
name (opcional) Informe o nome do seu arquivo
uuid_folder (opcional) Para que o documento fique armazenado dentro da pasta, informe o UUID dela.

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuid": "9f08bf18-bf4b-410f-9701-c286e5b1cad1"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$uuid_safe 		= '{UUID-SAFE}';
	$name 			= 'Documento teste';
	$mime_type		= 'application/pdf';
	$base64_binary		= base64_encode("BINARIO_DO_ARQUIVO");

	$id_doc = $client->documents->uploadbinary($uuid_safe, $base64_binary, $mime_type, $name);
	//print_r($id_doc);
	
} catch (Exception $e) {
	echo $e->getMessage();
} 

Realizar o UPLOAD de um hash de documento (HASH)

Esse objeto realizará o UPLOAD do hash de um documento para os servidores da D4Sign.

Após o UPLOAD, o hash de documento será criptografado em nossos cofres e carimbado com um número de série.

Todos os documentos ficam armazenados em COFRES criptografados, ou seja, o parâmetro UUID-SAFE é obrigatório e determina em qual cofre o hash de documento ficará armazenado.

POST/documents/{UUID-SAFE}/uploadhash

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-SAFE}/uploadhash?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Body

{
    "sha256": "13f2a91a9e85d5240ff32754eba41c02...",
    "sha512": "9ddd2c2659ae6cd6790d1f31780c904145bd80272b51cb...",
    "name": "Meu contrato de venda",
    "uuid_folder": "{UUID DA PASTA}"
}
Parâmetro Descrição
sha256 (obrigatório) Informe o sha256 do arquivo em HEXADECIMAL
O sha256 deverá possuir 64 caracteres.
Atenção: Não envie o sha256 em binário.
sha512 (obrigatório) Informe o sha512 do arquivo em HEXADECIMAL
O sha512 deverá possuir 128 caracteres.
Atenção: Não envie o sha512 em binário.
name (opcional) Informe o nome do seu arquivo
uuid_folder (opcional) Para que o documento fique armazenado dentro da pasta, informe o UUID dela.

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuid": "9f08bf18-bf4b-410f-9701-c286e5b1cad1"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$seu_arquivo = "data.txt";

	$sha256 = hash_file('sha256', $seu_arquivo);
	$sha512 = hash_file('sha512', $seu_arquivo);
	
	$uuid_safe 	= '{UUID-SAFE}';
	$name 		= 'Meu documento';
	
	$return = $client->documents->uploadhash($uuid_safe, $sha256, $sha512, $name);
	//print_r($id_doc);
	
} catch (Exception $e) {
	echo $e->getMessage();
} 

Cadastrar signatários

Esse objeto realizará o cadastro dos signatários do documento, ou seja, quais pessoas precisam assinar esse documento.

POST/documents/{UUID-DOCUMENT}/createlist

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/createlist?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    array [signers] => {
        array{
            "email": "email@dominio.com",
            "act": "1",
            "foreign": "1",
            "certificadoicpbr": "0",
            "assinatura_presencial": "0",
            "docauth": "0",
            "docauthandselfie": "0",
       	    "embed_methodauth": "email",
      	    "embed_smsnumber": "",
      	    "upload_allow": "0",
      	    "upload_obs": "Contrato Social e Conta de Luz"
        },
        {...}
    }
}
Parâmetro Descrição
email (obrigatório) E-mail do signatário (pessoa que precisa assinar o documento)
act (obrigatório) Ação da assinatura.
Ações permitidas:

1 = Assinar

2 = Aprovar

3 = Reconhecer

4 = Assinar como parte

5 = Assinar como testemunha

6 = Assinar como interveniente

7 = Acusar recebimento

8 = Assinar como Emissor, Endossante e Avalista

foreign (obrigatório) Indica se o signatário é estrangeiro, ou seja, se possui CPF.

0 = Possui CPF (Brasileiro).

1 = Não possui CPF (Estrangeiro).

Para os signatários definidos como 'estrangeiros', o CPF não será exigido.

certificadoicpbr (obrigatório) Indica se o signatário DEVE efetuar a assinatura com um Certificado Digital ICP-Brasil.

0 = Será efetuada a assinatura padrão da D4Sign.

1 = Será efetuada a assinatura com um Certificado Digital ICP-Brasil.

assinatura_presencial (obrigatório) Indica se o signatário DEVE efetuar a assinatura de forma presencial.

1 = Será efetuada a assinatura presencial.

0 = Não será efetuada a assinatura presencial.

docauth (opcional) Indica se o signatário DEVE efetuar a assinatura apresentando um documento com foto.

1 = Será efetuada a assinatura exigindo um documento com foto.

0 = Não será efetuada a assinatura exigindo um documento com foto.

docauthandselfie (opcional) Indica se o signatário DEVE efetuar a assinatura apresentando um documento com foto e depois registrar uma selfie segurando o mesmo documento.

1 = Será efetuada a assinatura exigindo um documento com foto e uma selfie segurando o documento.

0 = Não será efetuada a assinatura exigindo um documento com foto e uma selfie segurando o documento.

embed_methodauth (opcional) Indica qual o método de autenticação será utilizado no EMBED.

email = O token será enviado por e-mail

password = Caso o signatário já possua uma conta D4Sign, será exigida a senha da conta.

sms = O token será enviado por SMS (para utilizar essa opção entre em contato com a equipe comercial da D4Sign)

embed_smsnumber (opcional) Indica o número de telefone que será enviado o TOKEN.

Atenção: esse número deverá seguir o padrão E.164.

Ex.: +5511953020202 (código do país, DDD, número do telefone)

upload_allow (opcional) Indica se o signatário poderá enviar outros documentos
upload_obs (opcional) Se o upload_allow for setado como 1, indique aqui quais documentos o signatário deve enviar
after_position (opcional) Caso o seu documento esteja na fase "Aguardando assinaturas" e a sequencia de assinatura estiver sendo seguida, você poderá determinar qual a posição do signatário que você deseja adicionar.
Exemplo:
signatario1@acme.com.br
signatario2@acme.com.br
signatario3@acme.com.br
signatario4@acme.com.br

Se você definir a variável after_position com o número 1, o signatário será inserido após o primeiro signatário já cadastrado, no exemplo o signatario1@acme.com.br.
skipemail (opcional) Defina com o valor 1 para não enviar o e-mail com o link de assinatura para o signatário

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "key_signer": "NwYu=",
    "email": "email@user.com.br",
    "act": "1",
    "foreign": "0",
    "certificadoicpbr": "0",
    "assinatura_presencial": "0",
    "doc_auth": "0",
    "embed_methodauth": "email",
    "embed_smsnumber": "",
    "upload_allow": "0",
    "upload_obs": "Contrato Social e Conta de Luz",
    "status": "created"
}
Exemplos
PHP (SDK)      C# (.NET)

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$signers = array(
		array("email" => "email1@dominio.com", "act" => '1', "foreign" => '0', "certificadoicpbr" => '0', "assinatura_presencial" => '0', "embed_methodauth" => 'email', "embed_smsnumber" => '', "docauth" => '0'),
		array("email" => "email2@dominio.com", "act" => '1', "foreign" => '0', "certificadoicpbr" => '0', "assinatura_presencial" => '0', "embed_methodauth" => 'sms', "embed_smsnumber" => '+5511953201200', "docauth" => '0')
	);
	
	$return = $client->documents->createList("{UUID-DOCUMENT}", $signers);
	
	//print_r($return);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Alterar signatário

Esse objeto atualizará o e-mail do signatário

POST/documents/{UUID-DOCUMENT}/changeemail

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/changeemail?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body


{
    "email-before": "antigoemail@dominio.com",
    "email-after": "novoemail@dominio.com",
    "key-signer": "NyWx="
},
Parâmetro Descrição
email-before (obrigatório) ANTIGO e-mail do signatário
email-after (obrigatório) NOVO e-mail signatário
key-signer Chave do signatário

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "E-mail changed",
}
Exemplos
PHP (SDK)      C# (.NET)

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$signatario_antigo	= 'emailantigo@email.com';
	$signatario_novo	= 'emailnovo@email.com';
	$key_signer		= 'Nwsy=';
	$return = $client->documents->changeemail("{UUID-DOCUMENT}",$signatario_antigo, $signatario_novo,$key_signer);
	
	//print_r($return);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Remover signatário

Esse objeto removerá o signatário

POST/documents/{UUID-DOCUMENT}/removeemaillist

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/removeemaillist?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body


{
    "email-signer": "email@dominio.com",
    "key-signer": "NyWx="
},
Parâmetro Descrição
email-signer (obrigatório) E-mail do signatário
key-signer (obrigatório) Chave do signatário

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "E-mail has removed",
}
Exemplos

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$signatario		= 'email@email.com';
	$key_signer		= 'Nwsy=';
	$return = $client->documents->removeemail("{UUID-DOCUMENT}",$signatario ,$key_signer);
	
	//print_r($return);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Cadastrar informações do signatário (para assinatura presencial)

Esse objeto cadastrará as informações (nome, cpf e data de nascimento) no signatário criado. Você poderá utilizar esse objeto para as assinaturas presenciais. Se você souber os dados do signatário, cadastre-os para evitar que o signatário precise informá-los no momento da assinatura.

POST/documents/{UUID-DOCUMENT}/addinfo

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/addinfo?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "key_signer": "NwYj=",
    "email": "seusignatario@email.com",
    "display_name": "Nome do Signatário",
    "documentation": "CPF do Signatário",
    "birthday": "Data de Nascimento do Signatário",
    "tokenAPI": "{token-user}"
}
Parâmetro Descrição
key_signer Chave do signatário
email (obrigatório) E-mail do signatário cadastrado
display_name (opcional) Informar o nome do signatário
documentation (opcional) Informar o CPF do signatário
birthday (opcional) Informar a data de nascimento do signatário

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuid-doc": 00004fa2-a361-42e3-a923-bb088b1809fe,
    "email": "seusignatario@email.com",
    "name": "Nome do signatário",
    "documentation": "CPF do signatário",
    "birthday": "Data de nascimento do signatário",
    "status": "changed"
}
Exemplos
PHP (SDK)      C# (.NET)

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$email			= 'email@dominio.com';
	$display_name	= 'Nome do signatário';
	$documentation	= '00.00.00.000-23';
	$birthday		= '22/11/1970';
	$key_signer		= 'Nwyj=';
	
	$add = $client->documents->addinfo({UUID-DOCUMENT}, $email, $display_name, $documentation, $birthday, $key_signer);
	
	//print_r($add);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Listar signatários de um documento

Esse objeto retornará todos os signatários de um documento..

GET/documents/{UUID-DOCUMENT}/list

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/list?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}
Parâmetro Descrição
UUID-DOCUMENT (obrigatório) UUID do documento que deverá ser listado.

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuidDoc": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "nameDoc": "teste.pdf",
    "type": "application/pdf",
    "size": "118990",
    "pages": "6",
    "uuidSafe": "06b3ddb1-abc9-4ab8-b944-0d7c940486af",
    "safeName": "Atendimento",
    "statusId": "3",
    "statusName": "Aguardando Assinaturas",
    "list": {
    	"key_signer": "NwYj=",
    	"user_name": "Signatario 1",
    	"user_document": "000000000000 (CPF)",
    	"email": "signatario@email.com.br",
    	"signed": "1",
    	"sign_info": {
    		"ip": "192.168.0.1",
    		"ip_reverser": "bfb467a6.virtua.com.br porta: 33421",
    		"geolocation": "-23 -23",
    		"user_agent": "Mozilla",
    		"date_signed": "2038-03-29 11:05:34",
    		"date_signed_atom": "2038-03-29T11:05:34-03:00"
    	},
    	"type": "1",
    	"foreign": "0",
    	"certificadoicpbr": "0",
    	"assinatura_presencial": "0",
    	"embed_methodauth": "email",
    	"embed_smsnumber": "",
    	"email_sent": "1",
    	"email_sent_status": "Delivery",
    	"email_sent_message": "Mensagem entregue com sucesso.",
    	"upload_allowed": "0",
    	"upload_obs": "Descricao dos documentos",
    	"documents_attached": "[]",
    	"date": "2016-04-17 13:56:21"
    	
	}
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$docs = $client->documents->listsignatures("{UUID-DOCUMENT}");
	
	//print_r($docs);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Enviar um documento para assinatura

Esse objeto enviará o documento para assinatura, ou seja, o documento entrará na fase 'Aguardando assinaturas', onde, a partir dessa fase, os signatários poderão assinar os documentos.

POST/documents/{UUID-DOCUMENT}/sendtosigner

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/sendtosigner?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "message": "{mensagem_para_o_signatário}",
    "skip_email": "1",
    "workflow": "0",
    "tokenAPI": "{token-user}"
}
Parâmetro Descrição
message (opcional) Mensagem que será enviada para os signatários, caso o parâmetro skip_email esteja definido como 0
skip_email (obrigatório) Opções:

0 = Os signatários serão avisados por e-mail que precisam assinar um documento.

1 = O e-mail não será disparado.

ATENÇÃO: Nos casos em que o EMBED ou a ASSINATURA PRESENCIAL estiver sendo usado, ou seja, quando o signatário for efetuar a assinatura diretamente do seu website ou em seu Tablet, o parâmetro skip_email DEVERÁ ser definido como 1
workflow (obrigatório) Opções:

0 = Para não seguir o workflow.

1 = Para seguir o workflow.

Caso o parâmetro workflow seja definido como 1, o segundo signatário só receberá a mensagem de que há um documento aguardando sua assinatura DEPOIS que o primeiro signatário efetuar a assinatura, e assim sucessivamente.

Porém, caso seja definido como 0, todos os signatários poderão assinar o documento ao mesmo tempo.

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "File sent to successfully signing"
}
Exemplos
PHP (SDK)      C# (.NET)

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$message = 'Prezados, segue o contrato eletrônico para assinatura.';
	$workflow = 0 //Todos podem assinar ao mesmo tempo;
	$skip_email = 1 //Não disparar email com link de assinatura (usando EMBED);
	
	$doc = $client->documents->sendToSigner("{UUID-DOCUMENT}", $message, $workflow, $skip_email);
	
	//print_r($doc);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Cancelar um documento

Esse objeto irá cancelar o documento.

POST/documents/{UUID-DOCUMENT}/cancel

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/cancel?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json",
    "tokenAPI": "{token-user}"
}
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuidDoc": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "nameDoc": "teste.pdf",
    "type": "application/pdf",
    "size": "118990",
    "pages": "6",
    "uuidSafe": "06b3ddb1-abc9-4ab8-b944-0d7c940486af",
    "safeName": "Atendimento",
    "statusId": "6",
    "statusName": "Cancelado"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$docs = $client->documents->cancel("{UUID-DOCUMENT}");
	
	//print_r($docs);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Realizar o DOWNLOAD de um documento

Esse objeto irá gerar uma URL final para download do documento.

POST/documents/{UUID-DOCUMENT}/download

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/download?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "type": "{type}"
}
Parâmetro Descrição
type (opcional) Para realizar o download do arquivo completo, escolha ZIP nesse atributo.
Para realizar o download apenas do PDF, escolha PDF nesse atributo.
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "url": "https://secure.d4sign.com.br/CODIGO",
    "name": "teste.pdf"
}
Exemplos
PHP (SDK)      C# (.NET)

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	//Você poderá fazer download do ZIP ou apenas do PDF setando o último parametro.
	$url_doc = $client->documents->getfileurl("{UUID-DOCUMENT}",'zip');
	//print_r($url_doc);
	
	$arquivo = file_get_contents($url_doc->url);
	
	//CASO VOCÊ ESTEJA FAZENDO O DOWNLOAD APENAS DO PDF, NÃO ESQUEÇA DE ALTERAR O CONTENT-TYPE PARA application/pdf E O NOME DO ARQUIVO PARA .PDF
	header("Content-type: application/octet-stream");
	header("Content-Disposition: attachment; filename=\"".$url_doc->name.".zip"."\"");
	
	//Para PDF
	//header("Content-type: application/pdf");
	//header("Content-Disposition: attachment; filename=\"".$url_doc->name.".pdf"."\"");
	
	echo $arquivo;
	
	//Você poderá, também, simplesmente redirecionar o seu usuário para a URL final de download.
} catch (Exception $e) {
	echo $e->getMessage();
} 

Esse objeto irá reenviar o link de assinatura para o signatário.

POST/documents/{UUID-DOCUMENT}/resend

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/resend?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "email": "email@dominio.com",
    "key_signer": "NwUj="
}
Parâmetro Descrição
email (obrigatório) Email do signatário que deverá receber o link novamente.
key_signer Chave do signatário

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "Message sent"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$email 		= 'email@dominio.com';
	$key_signer = 'NwuJ=';
	
	$return = $client->documents->resend('{UUID-DOCUMENT}', $email, $key_signer);
	
	//print_r($return);
} catch (Exception $e) {
	echo $e->getMessage();
} 


Listar templates

Esse objeto irá retornar todos os templates criados em sua conta.

POST/templates

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/templates?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "id": "MzE=",
    "name": "Nome do template",
    "variables": 
    	array {
    		"0": "variavel 1",
		"1": "variavel 2",
		"2": "variavel 3"
	}

}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$return = $client->templates->find();
	
	//print_r($return);
} catch (Exception $e) {
	echo $e->getMessage();
} 


Gerar documento a partir do template

Esse objeto irá gerar um documento em seu cofre a partir de um template.

POST/documents/{UUID-SAFE}/makedocumentbytemplate

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-SAFE}/makedocumentbytemplate?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "name_document": "Nome do documento",
    "uuid_folder (opcional)": "{UUID DA PASTA}",
    "templates": 
	    "id_template 1": {
	    	"variavel 1": "valor 1",
	    	"variavel 2": "valor 2",
	    	{...}
	    },
	    "id_template 2": {
	    	"variavel 1": "valor 1",
	    	"variavel 2": "valor 2",
	    	{...}
	    },
	    {...}
}
Parâmetro Descrição
name_document (opcional) Define o nome do documento. Se não for preenchido, o documento terá o nome "Documento"
uuid_folder (opcional) Para que o documento fique armazenado dentro da pasta, informe o UUID dela.
id_template (obrigatório) Array contendo o ID do template na CHAVE e as variáveis no VALUE.

Ex.:

array(
	"MzE=" => array (
			'arrastando' => 'teste',
			'blocos' => 'teste2')
,
	"Mg==" => array (
			'NOME_CONTRATANTE' => 'fulano',
			'representante_contratante' => 'sss')
),
{...}
			
Você poderá concatenar vários templates, conforme o exemplo acima. Lembrando que você deverá informar pelo menos um template.

As variavéis dos campos personalizados (ex.: arrastando, bloco, NOME_CONTRATANTE, etc.) precisam ser informadas exatamente iguais ao cadastro.

Ex.: 'NOME_CONTRATANTE' => 'fulano' irá substituir o campo personalizado NOME_CONTRATANTE por fulano. O sistema é case sensitive, ou seja, você deverá respeitar letras maiusculas e minusculas.

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuid": "9f08bf18-bf4b-410f-9701-c286e5b1cad1"
}
Exemplos
PHP (SDK)      C# (.NET)

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$templates = array(
			"id_template1" => array(
					'campo_personalizado1' => 'Valor1',
					'campo_personalizado2' => 'Valor2'
					),
			"id_template2" => array (
					'campo_personalizado1' => 'Valor1',
					'campo_personalizado2' => 'Valor2')
			);							
	
	$name_document = "Nome do documento";
	$uuid_cofre = 'db5dc9e0-22cb-4461-8476-9cd0a651e496';
	//$uuid_pasta = 'db5dc9e0-22cb-4461-8476-9cd0a651e496';
	
	$return = $client->documents->makedocumentbytemplate($uuid_cofre, $name_document, $templates, $uuid_pasta);
	
	//print_r($return);
} catch (Exception $e) {
	echo $e->getMessage();
} 


Listar pastas do cofre

Este objeto retornará TODAS as PASTAS do cofre.

GET/folders/{UUID-SAFE}/find

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/folders/{uuid-safe}/find?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuid_safe": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "uuid_folder": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "name": "Contratos",
    "dt_cadastro": "2017-08-21 21:43:42"
},
{...}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$folders = $client->folders->find('{UUID-SAFE}');
	
	//print_r($folders);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Criar pasta no cofre

Esse objeto irá criar uma pasta dentro do cofre informado.

POST/folders/{UUID-SAFE}/create

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/folders/{UUID-SAFE}/create?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "folder_name": "Nome da pasta"
}
Parâmetro Descrição
folder_name (obrigatório) Nome da pasta

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "Folder created",
    "uuid": "{UUID-FOLDER}"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$nome = 'Teste criar pasta 20189';
	$return = $client->folders->create('{UUID-SAFE}', $nome);
	
	//print_r($return);
} catch (Exception $e) {
	echo $e->getMessage();
} 


Renomear pasta do cofre

Esse objeto irá renomear uma pasta dentro do cofre informado.

POST/folders/{UUID-SAFE}/rename

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/folders/{UUID-SAFE}/rename?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "folder_name": "Nome da pasta",
    "uuid_folder": "{UUID-FOLDER}"
}
Parâmetro Descrição
folder_name (obrigatório) Nome da pasta
uuid_folder (obrigatório) UUID da pasta que será renomeada

Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "Folder changed"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$nome = 'Teste criar pasta 20189';
	$return = $client->folders->rename('{UUID-SAFE}', '{UUID-FOLDER}', $nome);
	
	//print_r($return);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Exibir saldo da conta

Este objeto retornará o balanço da sua conta

GET/account/balance

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/account/balance?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "credit": "999",
    "sent": "372",
    "used_balance": "372/999"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$return = $client->account->balance();
	//print_r($return);
	
} catch (Exception $e) {
	echo $e->getMessage();
} 


Criar lote

Este método criará um lote de documentos

POST/batches

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/batches?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "keys": [
    	"0b2ec469-6b49-42bb-809f-d977279baeeb",
    	"db75a09b-6b30-48b9-b9f0-873351a050ed",
    	"42334730-5a93-48ae-b5e4-e8e82d62610a"
    	]
    
}
Parâmetro Descrição
keys (obrigatório) UUID dos documentos que farão parte do lote
Atenção: O máximo são 25 documentos por lote.
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "Batches created",
    "uuid_batches": "lote_embed_232342asd-ss134asd-xASdwe",
    "total": "25"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$batchs = array("0b2ec469-6b49-42bb-809f-d977279baeeb",		
			"1b2ec469-6b49-42bb-809f-d977279baeeb",
			"2b2ec469-6b49-42bb-809f-d977279baeeb");
			
	$return = $client->batches->create($batchs);
	//print_r($return);
	
} catch (Exception $e) {
	echo $e->getMessage();
} 


Webhooks (POSTBack)

Webhook é uma forma de recebimento de informações quando um evento acontece. O webhook na prática, é a forma de receber informações entre dois sistemas de uma forma passiva.

Na D4Sign, quando um documento for assinado por um signatário, finalizado ou cancelado, ou seja, atingir a fase FINALIZADO ou CANCELADO, iremos disparar um evento HTTP POST para a URL que foi informada no documento.

Além disso, quando um e-mail não for entregue ao signatário, iremos, também, disparar um evento HTTP POST para a URL que foi informada no documento.

O evento que dispara o WEBHOOK ocorre apenas quando o documento for assinado por uma das partes, for finalizado ou cancelado e, também, quando um e-mail não for entregue ao signatário cadastrado.

O disparo ocorre em FORM-DATA

Retornos enviados para a sua URL via POST

Retorno de documento finalizado
{
    "uuid": "UUID-DOCUMENT",
    "type_post": "1",
    "message": "Finished document"
}
Retorno de documento cancelado
{
    "uuid": "UUID-DOCUMENT",
    "type_post": "3",
    "message": "Cancelled document"
}
Retorno de e-mail não entregue
{
    "uuid": "UUID-DOCUMENT",
    "type_post": "2",
    "message": "E-mail not sent"
}
Retorno de assinatura do signatário
{
    "uuid": "UUID-DOCUMENT",
    "type_post": "4",
    "message": "Signed",
    "email": "email@signatario.com.br"
}

ATENÇÃO: Sugerimos a utilização do https://requestbin.fullcontact.com/ ou http://requestcatcher.com/ para os testes. Esses serviços fornecem uma URL que irá coletar as requisições HTTP para apresentá-las de forma fácil.

Tentativas de disparo

Se a URL cadastrada no documento estiver indisponível, tentaremos efetuar 2 novas requisições, conforme abaixo:

Tentativa 1: 0 min.
Tentativa 2: após 1 hora.
Tentativa 3: após 1 hora.
Tentativa 4: após 1 hora.
Tentativa 5: após 6 horas.
Tentativa 6: após 6 horas.
Tentativa 7: após 12 horas.

Portanto, o webhook será perdido somente se a URL cadastrada estiver indisponível por mais de 27 horas.

Listar Webhook de um documento

Esse objeto irá retornar o webhook cadastrado no documento.

GET/documents/{UUID-DOCUMENT}/webhooks

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/webhooks?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json",
}
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "uuid": "9f08bf18-bf4b-410f-9701-c286e5b1cad1",
    "webhook_url": "http://sua-url-parar-receber-post.com"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$webhook = $client->documents->webhooklist("{UUID-DOCUMENT}");
	
	//print_r($webhook);
} catch (Exception $e) {
	echo $e->getMessage();
} 

Cadastrar Webhook em um documento

Esse objeto irá cadastrar o webhook no documento.

POST/documents/{UUID-DOCUMENT}/webhooks

Não esqueça de enviar o tokenAPI e cryptKey em sua requisição.

Ex.: https://secure.d4sign.com.br/api/v1/documents/{UUID-DOCUMENT}/webhooks?tokenAPI={SEU-TOKEN}&cryptKey={SEU-CRYPT-KEY}

Requisição

Header

{
    "Content-Type": "application/json"
}

Body

{
    "url": "http://www.seudominio.com/"
}
Parâmetro Descrição
url (obrigatório) URL que receberá o POSTBack da D4Sign após o documento atingir a fase FINALIZADO
Resposta (200)

Você receberá uma resposta em JSON com os seguintes objetos

{
    "message": "Webhook successfully registered"
}
Exemplo usando SDK PHP

require_once(__DIR__ . '/sdk/vendor/autoload.php');

use D4sign\Client;
try{
	$client = new Client();
	$client->setAccessToken("{TOKEN-USER}");
	$client->setCryptKey("{CRYPT-KEY-USER}"); //Necessário apenas se o cryptKey estiver habilitado na conta
	
	$url = 'http://seudominio.com.br/post.php';
	$webhook = $client->documents->webhookadd("{UUID-DOCUMENT}",$url);
		
	//print_r($webhook);
} catch (Exception $e) {
	echo $e->getMessage();
} 



EMBED D4Sign

Introdução

O Embed é o componente front-end da D4Sign. Com ele é possível executar nossa tecnologia de assinatura eletrônica de documentos diretamente no website do cliente. Tudo de forma simples e rápida!

O conceito é bem simples: Basta carregar a biblioteca JavaScript da D4Sign e indicar qual o UUID do documento que deverá ser assinado. O resto a D4Sign faz para você.

ATENÇÃO: O documento precisa estar na fase "AGUARDANDO ASSINATURAS".
Se o documento estiver na fase "Aguardando signatários", ele não será exibido.

Veja quais são os passos:

1º - O documento será exibido para o usuário diretamente do seu website
2º - O usuário deverá clicar no botão 'ASSINAR'.
3º - A D4Sign enviará um TOKEN de confirmação para o e-mail do usuário.
4º - Após a assinatura do usuário, a D4Sign enviará um CALLBACK para o seu website informando que a assinatura foi realizada.

Instalação

Requisitos para instalação em seu website

1. Carregar a biblioteca javascript da D4Sign.
2. Disponibilizar um elemento DIV em sua página.
3. Chamar a função javascript para montagem do EMBED.
4. Interagir com o callback do EMBED.

Biblioteca

A biblioteca deve ser incluída no corpo da página. O arquivo deve ser copiado para seu próprio site.

Exemplo de como a biblioteca deve ser carregada:


    <script src='/js/d4sign.js' type='text/javascript'></script>

Exemplo de elemento DIV que deverá existir em sua página


    <div id='signature-div'></div>

Função Javascript


<script>
d4sign.configure({
    container: "signature-div",
    key: "{UUID-DOCUMENT}",
    protocol: "https",
    host: "secure.d4sign.com.br/embed/viewblob",
    signer: {
        email: "email@signatario.com",
        display_name: "Nome do Signatário", //optional,
        documentation: "123.321.123-40", //optional,
        birthday: "22/11/1983", //optional,
        disable_preview: "0", //optional
        key_signer: "{CHAVE-DO-SIGNATARIO}"
    },
    width: '1025',
    height: '400',
    callback: function(event) {
      if (event.data === "signed") {
        alert('ASSINADO');
      }
    }
});
</script>
Parâmetro Descrição
container (obrigatório) ID na DOM do elemento no qual o iframe será inserido
key (obrigatório) Chave do documento que será exibido
protocol (obrigatório) Protocolo a ser utilizado na montagem do iframe
host (obrigatório) Host a ser utilizado na montagem do iframe
signer.email (obrigatório) E-mail do signatário
signer.display_name Nome do signatário. Se for preenchido, o campo não será exigido na tela de assinatura.
signer.documentation CPF do signatário. Se for preenchido, o campo não será exigido na tela de assinatura.
signer.birthday Data de nascimento do signatário. Formato: 22/11/1983. Se for preenchido, o campo não será exigido na tela de assinatura.
signer.disable_preview Se for preenchido com o valor 1, o preview dos documentos não será exibido. Utilize para as assinaturas em HASH de documento.
signer.key_signer Chave do signatário. Utilize quando houver signatários repetidos no mesmo documento.
width Largura em pixels do iframe
height Altura em pixels do iframe

Callback function

Quando um documento for assinado pelo signatário, a função callback será acionada com o parâmetro signed ou wrong-data.

Através desse callback você poderá manipular a sua aplicação conforme necessário.

Por exemplo, poderá disparar uma mensagem para o usuário ou redirecionar o usuário para outra página.


    callback: function(event) {
      if (event.data === "signed") {
        alert('ASSINADO'); //ou redirecionar o usuário para outra página.
      }
    }

    callback: function(event) {
      if (event.data === "wrong-data") {
        alert('USUARIO CLICOU NO LINK: Meus dados estão errados.'); //ou redirecionar o usuário para uma página onde poderá alterar os seus dados.
      }
    }

Demonstração

Acesse a nossa página de demonstração e veja, na prática, esse recurso funcionando:

http://demonstracao.d4sign.com.br/

Assinatura em lote via EMBED

Para assinar um lote de documentos via EMBED, primeiro crie um lote utilizando o método /batches e, depois, personalize os campos abaixo no seu EMBED.

Parâmetro Descrição
key (obrigatório) Chave do LOTE de documentos que será exibido
host (obrigatório) Defina o seguinte host:
secure.d4sign.com.br/embedlote/viewblob

Os outros parâmetros do EMBED não precisam ser alterados.