Pular para o conteúdo

Documentos, Envelopes e Signatários

Referência detalhada dos endpoints do XSigner. Para o fluxo completo, veja o Guia de Integração.

Todas as rotas exigem os headers Authorization: Bearer <token> e X-XJUR-SUBSCRIPTION-KEY.

POST /xsigner/documentos
Content-Type: multipart/form-data

Faz o upload de um arquivo e devolve o documentoId para usar em documentos[].documentoId na criação do envelope. O mesmo documentoId pode ser reutilizado em mais de um envelope.

Campo (form-data)TipoObrigatórioDescrição
arquivofileSimArquivo .pdf, .doc ou .docx, até 25 MB
descricaostringNãoDescrição do documento. Padrão: nome do arquivo
{
"documentoId": 98765,
"nomeArquivo": "contrato.pdf",
"descricao": "Contrato principal",
"tamanho": 184320
}
CampoDescrição
documentoIdIdentificador do documento para uso nos envelopes
nomeArquivoNome do arquivo recebido
descricaoDescrição gravada
tamanhoTamanho em bytes

Erros: 400 quando o arquivo está ausente, vazio, com extensão não aceita, acima do limite ou estruturalmente inválido. PDFs são validados com a mesma biblioteca usada na assinatura: um arquivo que abre no navegador mas tem xref/startxref inconsistentes é recusado aqui, e não na hora de assinar. A mesma validação vale para conteudoBase64 na criação do envelope.

POST /xsigner/envelopes
CampoTipoObrigatórioDescrição
assuntostringSimAssunto do e-mail (até 100 caracteres)
mensagemstringNãoMensagem do e-mail (até 1000 caracteres)
codigostringNãoCódigo livre do integrador
enviarPorOrdembooleanNãoAssinatura sequencial. Padrão false
departamentoIdintegerNãoDepartamento responsável no Xjur
documentos[]arraySimVer Documento
signatarios[]arraySimVer Signatário

Use codigo para guardar o identificador do seu sistema.

CampoTipoObrigatórioDescrição
documentoIdintegerUma das formasDocumento enviado por POST /xsigner/documentos
nomeArquivostringUma das formasNome do arquivo com extensão (.pdf, .doc, .docx)
conteudoBase64stringCom nomeArquivoConteúdo em base64 (aceita prefixo data URI). Até 25 MB por arquivo
descricaostringNãoDescrição do documento. Padrão: nome do arquivo
ordensSignatariosPermitidosinteger[]NãoOrdens (ordem) dos signatários que podem ver o documento. Vazio = todos
CampoTipoObrigatórioDescrição
nomestringSimNome e sobrenome
emailstringSimE-mail único dentro do envelope
papelSignatarioIdintegerUm dos doisId do papel
papelstringUm dos doisNome do papel, sem distinção de maiúsculas
ordemintegerSe enviarPorOrdemPosição na sequência (1, 2, 3…). Padrão: posição no array
celularstringNãoCelular com DDD, somente números são considerados
codigostringNãoCódigo livre
  1. Documentos com conteudoBase64 são armazenados antes da criação do envelope.
  2. Se algum documento falhar no upload, o envelope não é criado.
  3. O primeiro documento do array dá o nome ao envelope (nomeDocumento).
  4. Cada e-mail só pode aparecer uma vez por envelope.
  5. Com enviarPorOrdem = true, as ordens precisam ser distintas; o e-mail vai apenas para o primeiro da sequência.

Retorna o EnvelopeResponse completo, com Location: /xsigner/envelopes/{envelopeId}.

GET /xsigner/envelopes
ParâmetroTipoDescrição
statusstring[]Nome ou código do status. Repita o parâmetro para vários: ?status=Assinado&status=Cancelado
codigostringBusca parcial pelo código
nomeDocumentostringBusca parcial pelo nome do documento
dataCadastroDe / dataCadastroAtedatetimePeríodo de criação
dataAssinaturaDe / dataAssinaturaAtedatetimePeríodo de conclusão
dataCancelamentoDe / dataCancelamentoAtedatetimePeríodo de cancelamento
offsetintegerDeslocamento. Padrão 0
limitintegerItens por página. Padrão 25, máximo 100
sortstringCampo de ordenação. Padrão EnvelopeId
{
"totalPaginas": 2,
"totalRegistros": 42,
"data": [ { "envelopeId": 1532, "status": "AguardandoSignatarios", "...": "..." } ]
}

Quando nenhum envelope corresponde ao filtro, a resposta é 200 com data vazio.

GET /xsigner/envelopes/{envelopeId}
CampoTipoDescrição
envelopeIdintegerIdentificador do envelope
hashEnvelopestringHash interno (rastreabilidade)
codigostringCódigo informado na criação
nomeDocumentostringNome do primeiro documento
descricaoDocumentostringDescrição do primeiro documento
plataformastringSempre xsigner
status / statusIdstring / integerAguardandoSignatarios (2), Assinado (3), Cancelado (-1), EmConfeccao (1)
enviarPorOrdembooleanAssinatura sequencial
dataCadastrodatetimeCriação
dataAssinaturadatetimeConclusão (quando Assinado)
dataCancelamentodatetimeCancelamento (quando Cancelado)
motivoCancelamentostringMotivo do cancelamento. Na recusa: Recusado por <nome>: <justificativa>
departamentoobject{ departamentoId, nome }
documentoAssinadoobject{ documentoId, url } do PDF final; presente quando Assinado
documentos[]arrayenvelopeDocumentoId, documentoId, ordem, url (temporária), signatariosPermitidos
signatarios[]arrayVer SignatarioResponse
CampoTipoDescrição
signatarioIdintegerIdentificador do signatário
hashSignatariostringHash interno
nome, email, celularstringDados do signatário
ordemintegerPosição na sequência (0 quando não há ordem)
papelSignatarioId / papelinteger / stringPapel
status / statusIdstring / integerPendenteAssinatura (1), Assinado (2), Recusado (3), Excluido (-1)
dataCadastrodatetimeInclusão no envelope
dataAssinaturadatetimeMomento da assinatura
dataRecusa / motivoRecusadatetime / stringPreenchidos quando o signatário recusou o documento (o envelope é cancelado para todos)
linkAssinaturastringLink público da página de assinatura
documentoIdentificacaoobject{ tipo, numero } informado na assinatura (RG, CPF, CNPJ, DocumentoEstrangeiro)
ipstringIP de origem da assinatura
codigostringCódigo livre
POST /xsigner/envelopes/{envelopeId}/cancelar

Retorna o envelope com status = Cancelado. Envelopes Assinado ou já Cancelado respondem 400.

POST /xsigner/envelopes/{envelopeId}/signatarios

Mesmo formato de Signatário. Em envelopes com enviarPorOrdem = true, ordem é obrigatória e os signatários pendentes a partir daquela posição são deslocados. O e-mail com o link é enviado imediatamente (ou quando chegar a vez dele, na assinatura sequencial). Retorna 201 com o envelope atualizado.

PATCH /xsigner/envelopes/{envelopeId}/signatarios/{signatarioId}
{ "nome": "Maria da Silva", "email": "maria.novo@email.com", "celular": "11999998888" }

Envie apenas os campos que deseja alterar. Somente signatários PendenteAssinatura podem ser alterados. Retorna o envelope atualizado.

DELETE /xsigner/envelopes/{envelopeId}/signatarios/{signatarioId}

O signatário deixa de aparecer no envelope. Se ele era o único pendente e alguém já havia assinado, o envelope é concluído e o PDF final é gerado. Retorna o envelope atualizado.

POST /xsigner/envelopes/{envelopeId}/signatarios/{signatarioId}/reenviar-link
{
"envelopeId": 1532,
"signatarioId": 4101,
"nome": "Maria Silva",
"email": "maria.silva@email.com",
"status": "PendenteAssinatura",
"linkAssinatura": "https://app.xjur.com.br/xsigner?hashEnvelope=...&hashSignatario=...",
"mensagem": "Link de assinatura reenviado por e-mail para maria.silva@email.com."
}
GET /xsigner/envelopes/{envelopeId}/signatarios/{signatarioId}/link

Mesma resposta do reenvio, sem mensagem e sem disparar e-mail. Use para entregar o link por um canal próprio.

RotaConteúdo
GET /xsigner/envelopes/{envelopeId}/documento-assinadoapplication/pdf — PDF final com os documentos e a página de assinaturas. Requer status = Assinado
GET /xsigner/envelopes/{envelopeId}/documentos/zipapplication/zip — documentos do envelope
GET /xsigner/papeis-signatario

Retorna apenas os papéis ativos. Use ?incluirInativos=true para listar todos.

[
{ "papelSignatarioId": 5, "nome": "Contratante", "ativo": true },
{ "papelSignatarioId": 6, "nome": "Testemunha", "codigo": "TEST", "ativo": true }
]
GET /xsigner/dominios

Retorna statusEnvelope, statusSignatario e extensoesAceitas. Não exige autenticação no Xjur.