PHPackages                             signdocs-brasil/signdocs-brasil-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. signdocs-brasil/signdocs-brasil-php

ActiveLibrary[API Development](/categories/api)

signdocs-brasil/signdocs-brasil-php
===================================

Official PHP SDK for the SignDocsBrasil API — digital document signing with ICP-Brasil support

1.5.0(2mo ago)0306↓50%MITPHPPHP ^8.1CI passing

Since Apr 8Pushed 2mo agoCompare

[ Source](https://github.com/signdocsbrasil/signdocs-brasil-php)[ Packagist](https://packagist.org/packages/signdocs-brasil/signdocs-brasil-php)[ Docs](https://signdocs.com.br)[ RSS](/packages/signdocs-brasil-signdocs-brasil-php/feed)WikiDiscussions main Synced 2w ago

READMEChangelogDependencies (5)Versions (6)Used By (0)

signdocs-brasil-php
===================

[](#signdocs-brasil-php)

SDK oficial em PHP para a API SignDocsBrasil.

Requisitos
----------

[](#requisitos)

- PHP 8.1+
- Dependências: `guzzlehttp/guzzle`, `firebase/php-jwt`

Instalação
----------

[](#instalação)

```
composer require signdocs-brasil/signdocs-brasil-php
```

Início Rápido
-------------

[](#início-rápido)

```
use SignDocsBrasil\Api\SignDocsBrasilClient;
use SignDocsBrasil\Api\Config;
use SignDocsBrasil\Api\Models\CreateTransactionRequest;
use SignDocsBrasil\Api\Models\Policy;
use SignDocsBrasil\Api\Models\Signer;

$client = new SignDocsBrasilClient(new Config(
    clientId: 'seu_client_id',
    clientSecret: 'seu_client_secret',
));

$tx = $client->transactions->create(new CreateTransactionRequest(
    purpose: 'DOCUMENT_SIGNATURE',
    policy: new Policy(profile: 'CLICK_ONLY'),
    signer: new Signer(
        name: 'João Silva',
        email: 'joao@example.com',
        userExternalId: 'user-001',
    ),
    document: ['content' => $pdfBase64, 'filename' => 'contrato.pdf'],
));

echo $tx->transactionId . ' ' . $tx->status;
```

### Private Key JWT (ES256)

[](#private-key-jwt-es256)

```
$client = new SignDocsBrasilClient(new Config(
    clientId: 'seu_client_id',
    privateKey: file_get_contents('./private-key.pem'),
    kid: 'seu-key-id',
));
```

Recursos Disponíveis
--------------------

[](#recursos-disponíveis)

RecursoMétodos`$client->transactions``create`, `list`, `get`, `cancel`, `finalize`, `listAutoPaginate``$client->documents``upload`, `presign`, `confirm`, `download``$client->steps``list`, `start`, `complete``$client->signing``prepare`, `complete``$client->evidence``get``$client->verification``verify`, `downloads``$client->users``enroll``$client->webhooks``register`, `list`, `delete`, `test``$client->signingSessions``create`, `getStatus`, `cancel`, `list`, `waitForCompletion``$client->envelopes``create`, `get`, `addSession`, `combinedStamp``$client->documentGroups``combinedStamp``$client->health``check`, `history`Envelopes (Múltiplos Signatários)
---------------------------------

[](#envelopes-múltiplos-signatários)

```
use SignDocsBrasil\Api\Models\CreateEnvelopeRequest;
use SignDocsBrasil\Api\Models\AddEnvelopeSessionRequest;

$envelope = $client->envelopes->create(new CreateEnvelopeRequest(
    signingMode: 'PARALLEL',
    totalSigners: 2,
    documentContent: $pdfBase64,
    documentFilename: 'contrato.pdf',
));

$session1 = $client->envelopes->addSession($envelope->envelopeId, new AddEnvelopeSessionRequest(
    signerName: 'João Silva',
    signerEmail: 'joao@example.com',
    policyProfile: 'CLICK_ONLY',
));

$session2 = $client->envelopes->addSession($envelope->envelopeId, new AddEnvelopeSessionRequest(
    signerName: 'Maria Santos',
    signerEmail: 'maria@example.com',
    policyProfile: 'CLICK_ONLY',
    signerIndex: 2,
));

echo $session1->url . ' ' . $session2->url;
```

Configuração Avançada
---------------------

[](#configuração-avançada)

### Guzzle Client customizado

[](#guzzle-client-customizado)

Injete um `GuzzleHttp\Client` customizado (ex: para proxying, middleware ou métricas):

```
use GuzzleHttp\Client as GuzzleClient;

$guzzle = new GuzzleClient(['proxy' => 'http://proxy:8080']);

$client = new SignDocsBrasilClient(new Config(
    clientId: 'seu_client_id',
    clientSecret: 'seu_client_secret',
    guzzle: $guzzle,
));
```

### Logging

[](#logging)

O SDK aceita qualquer logger PSR-3 (`Psr\Log\LoggerInterface`). São logados apenas: método HTTP, path, status code e duração. Headers de autorização, corpos de request/response e tokens nunca são logados.

```
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$logger = new Logger('signdocs');
$logger->pushHandler(new StreamHandler('php://stdout'));

$client = new SignDocsBrasilClient(new Config(
    clientId: 'seu_client_id',
    clientSecret: 'seu_client_secret',
    logger: $logger,
));
```

### Timeout por requisição

[](#timeout-por-requisição)

Todas as operações aceitam `$timeout` (em segundos) como parâmetro opcional, que sobrescreve o timeout padrão do client:

```
$tx = $client->transactions->get('tx_123', timeout: 5);
```

Documentação
------------

[](#documentação)

Para guias completos de integração com exemplos passo-a-passo de todos os fluxos de assinatura, veja a [documentação centralizada](../docs/README.md).

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance88

Actively maintained with recent releases

Popularity15

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Total

5

Last Release

60d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/265559210?v=4)[signdocsbrasil](/maintainers/signdocsbrasil)[@signdocsbrasil](https://github.com/signdocsbrasil)

---

Top Contributors

[![signdocsbrasil](https://avatars.githubusercontent.com/u/265559210?v=4)](https://github.com/signdocsbrasil "signdocsbrasil (9 commits)")

---

Tags

pkcs7digital-signatureicp-brasilelectronic signaturedocument-signingsigndocssigndocs-brasil

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/signdocs-brasil-signdocs-brasil-php/health.svg)

```
[![Health](https://phpackages.com/badges/signdocs-brasil-signdocs-brasil-php/health.svg)](https://phpackages.com/packages/signdocs-brasil-signdocs-brasil-php)
```

###  Alternatives

[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

749284.3k37](/packages/civicrm-civicrm-core)[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k12](/packages/tempest-framework)[avalara/avataxclient

Client library for Avalara's AvaTax suite of business tax calculation and processing services. Uses the REST v2 API.

528.3M7](/packages/avalara-avataxclient)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3661.2M46](/packages/tencentcloud-tencentcloud-sdk-php)[theodo-group/llphant

LLPhant is a library to help you build Generative AI applications.

1.7k371.6k6](/packages/theodo-group-llphant)[keboola/storage-api-client

Keboola Storage API PHP Client

10397.4k31](/packages/keboola-storage-api-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
