PHPackages                             isprambiente/pdnd-client - 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. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. isprambiente/pdnd-client

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

isprambiente/pdnd-client
========================

Client PHP per autenticazione e chiamata API PDND (Piattaforma Digitale Nazionale Dati).

v0.2.0(1mo ago)244MITPHPPHP &gt;=8.4CI passing

Since Jul 13Pushed 1mo agoCompare

[ Source](https://github.com/isprambiente/pdnd-php-client)[ Packagist](https://packagist.org/packages/isprambiente/pdnd-client)[ Docs](https://github.com/isprambiente/pdnd-php-client)[ RSS](/packages/isprambiente-pdnd-client/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (7)Versions (17)Used By (0)

pdnd-php-client
===============

[](#pdnd-php-client)

[![Composer Security Audit](https://github.com/isprambiente/pdnd-php-client/actions/workflows/security-audit.yml/badge.svg)](https://github.com/isprambiente/pdnd-php-client/actions/workflows/security-audit.yml/badge.svg)[![License](https://camo.githubusercontent.com/983b7a16c4d3772de3ac3694d1c3fcc0683808e2813a5005bf51ad61e41383ee/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f69737072616d6269656e74652f70646e642d7068702d636c69656e74)](https://camo.githubusercontent.com/983b7a16c4d3772de3ac3694d1c3fcc0683808e2813a5005bf51ad61e41383ee/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f69737072616d6269656e74652f70646e642d7068702d636c69656e74)[![PHP Version](https://camo.githubusercontent.com/7f7f161ac14281d5f247e81163afdf5468f87a7c065ff291210a5944ddfcc811/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f69737072616d6269656e74652f70646e642d636c69656e74)](https://camo.githubusercontent.com/7f7f161ac14281d5f247e81163afdf5468f87a7c065ff291210a5944ddfcc811/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f69737072616d6269656e74652f70646e642d636c69656e74)[![Latest Packagist Version](https://camo.githubusercontent.com/a6024205444b21a826121020e1e5cae35c4c4e94aba3a07d76ed58b45308307b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69737072616d6269656e74652f70646e642d636c69656e74)](https://camo.githubusercontent.com/a6024205444b21a826121020e1e5cae35c4c4e94aba3a07d76ed58b45308307b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f69737072616d6269656e74652f70646e642d636c69656e74)

Client PHP per autenticazione e chiamata API PDND (Piattaforma Digitale Nazionale Dati).

Licenza
-------

[](#licenza)

MIT

Requisiti
---------

[](#requisiti)

- PHP &gt;= 8.4 (versioni precedenti sono [EOL](https://endoflife.date/php))
- Composer
- Estensione cURL abilitata

Installazione
-------------

[](#installazione)

1. Installa la libreria via composer:

    ```
    composer require isprambiente/pdnd-client
    ```
2. Configura il file JSON con i parametri richiesti (esempio in `configs/progetto.json`):

    ```
     {
       "attestazione": {
         "kid": "kid",
         "issuer": "issuer",
         "clientId": "clientId",
         "purposeId": "purposeId",
         "privKeyPath": "/tmp/key.pem"
       },
       "collaudo": {
         "kid": "kid",
         "issuer": "issuer",
         "clientId": "clientId",
         "purposeId": "purposeId",
         "privKeyPath": "/tmp/key.priv"
       },
       "produzione": {
         "kid": "kid",
         "issuer": "issuer",
         "clientId": "clientId",
         "purposeId": "purposeId",
         "privKeyPath": "/tmp/key.priv"
       }
     }
    ```

Istruzioni
----------

[](#istruzioni)

```
require_once __DIR__ . '/vendor/autoload.php';
use Pdnd\Client\PdndClient;

// Istanzia la classe PdndClient
$client = new PdndClient();
// Definisci se vuoi vedere il debug
// Funzione opzionale. Default: false
$client->setDebug(true);
// Definisci se ti trovi in collaudo o produzione
// Funzione opzionale. Default: produzione
$client->setEnv("collaudo");
// Definisci il file di configurazione come indicato sopra.
// Se non indicato, è necessario indicare manualmente i vari parametri di configurazione
$client->config("/percorso/sample.json");
// Imposta l'url dell'API su PDND
$client->setApiUrl("https://www.tuogateway.example.it/indirizzo/della/api");
// Imposta i filtri per la richiesta API
// Esempio: se vuoi filtrare per id, puoi farlo in questo modo
// Se non indicato, il filtro sarà vuoto e l'API restituirà tutti i risultati
$client->setFilters([
    'id' => '1234'
]);
// Disabilita verifica SSL per ambiente di collaudo
$client->setVerifySSL(false);
// Verifica se il token salvato è valido
if ($client->isTokenValid()) {
  // Se il token è valido, lo carica
  $client->loadToken($token);
} else {
  // Se il token non è valido, richiede un nuovo token
  $token = $client->requestToken();
  // Salva il token per usi futuri
  // Questo passaggio è facoltativo, ma consigliato per evitare richieste multiple di token
  $client->saveToken($token);
}
// Richiama l'API
$result = $client->getApi($token);
// Visualizza il risultato
echo $result['body'] . "\n";
```

### Fulzioni aggiuntive

[](#fulzioni-aggiuntive)

**Disabilita verifica certificato SSL**

La funzione `$client->sslValidation(false);` Disabilita verifica SSL per ambiente impostato (es. collaudo). Default: true

**Salva il token**

La funzione `$client->saveToken($token);` consente di memorizzare il token e non doverlo richiedere a ogni chiamata.

**Carica il token salvato**

La funzione `$client->loadToken();` consente di richiamare il token precedentemente salvato.

**Valida il token salvato**

La funzione `$client->isTokenValid();` verifica la validità del token salvato.

**Refresh token**

La funzione `$client->refreshToken();` effettua una nuova richiesta di token. E' un alias di `$client->requestToken();`

Utilizzo da CLI
---------------

[](#utilizzo-da-cli)

Esegui il client dalla cartella principale:

```
php bin/pdnd-client.php --api-url="https://api.pdnd.example.it/resource" --config /percorso/assoluto/progetto.json
```

### Opzioni disponibili

[](#opzioni-disponibili)

- `-e`, `--env` : Specifica l'ambiente da usare (es. collaudo, produzione). Default: `produzione`
- `-c`, `--config` : Specifica il percorso completo del file di configurazione (es: `--config /percorso/assoluto/progetto.json`)
- `--debug` : Abilita output dettagliato
- `--pretty` : Abilita output dei json formattato per essere maggiormante leggibile
- `--api-url` : URL dell’API da chiamare dopo la generazione del token
- `--api-url-filters` : Filtri da applicare all'API (es. ?parametro=valore)
- `--status-url` : URL dell’API di status per verificare la validità del token
- `--json`: Stampa le risposte delle API in formato JSON
- `--save`: Salva il token per evitare di richiederlo a ogni chiamata
- `--no-verify-ssl`: Disabilita la verifica SSL (utile per ambienti di collaudo)
- `--help`: Mostra questa schermata di aiuto

### Esempi

[](#esempi)

**Chiamata API generica:**

```
php bin/pdnd-client.php --api-url="https://api.pdnd.example.it/resource" --config /percorso/assoluto/progetto.json
```

**Verifica validità token:**

```
php bin/pdnd-client.php --status-url="https://api.pdnd.example.it/status" --config /percorso/assoluto/progetto.json
```

**Debug attivo:**

```
php bin/pdnd-client.php --debug --api-url="https://api.pdnd.example.it/resource"
```

### Opzione di aiuto

[](#opzione-di-aiuto)

Se esegui il comando con `--help` oppure senza parametri, viene mostrata una descrizione delle opzioni disponibili e alcuni esempi di utilizzo:

```
php bin/pdnd-client.php --help
```

**Output di esempio:**

```
Utilizzo:
  php bin/pdnd-client.php -c /percorso/config.json [opzioni]

Opzioni:
  -e, --env         Specifica l'ambiente da usare (es. collaudo, produzione)
                    Default: produzione
  -c, --config      Specifica il percorso completo del file di configurazione
  --debug           Abilita output dettagliato
  --pretty          Abilita output dei json formattato per essere maggiormante leggibile
  --api-url         URL dell’API da chiamare dopo la generazione del token
  --api-url-filters Filtri da applicare all'API (es. ?parametro=valore)
  --status-url      URL dell’API di status per verificare la validità del token
  --json            Stampa le risposte delle API in formato JSON
  --save            Salva il token per evitare di richiederlo a ogni chiamata
  --no-verify-ssl   Disabilita la verifica SSL (utile per ambienti di collaudo)
  --help            Mostra questa schermata di aiuto

Esempi:
  php bin/pdnd-client.php --api-url="https://api.pdnd.example.it/resource" --config /percorso/config.json
  php bin/pdnd-client.php --status-url="https://api.pdnd.example.it/status" --config /percorso/config.json
  php bin/pdnd-client.php --debug --api-url="https://api.pdnd.example.it/resource"
  php bin/pdnd-client.php --pretty --api-url="https://api.pdnd.example.it/resource"

```

Variabili di ambiente supportate
--------------------------------

[](#variabili-di-ambiente-supportate)

Se un parametro non è presente nel file di configurazione, puoi definirlo come variabile di ambiente:

- `PDND_KID`
- `PDND_ISSUER`
- `PDND_CLIENT_ID`
- `PDND_PURPOSE_ID`
- `PDND_PRIVKEY_PATH`

Note
----

[](#note)

- Il token viene salvato in un file temporaneo e riutilizzato finché è valido.
- Gli errori specifici vengono gestiti tramite la classe `PdndException`.

Esempio di configurazione minima
--------------------------------

[](#esempio-di-configurazione-minima)

```
{
  "produzione": {
    "kid": "kid",
    "issuer": "issuer",
    "clientId": "clientId",
    "purposeId": "purposeId",
    "privKeyPath": "/tmp/key.pem"
  }
}
```

Esempio di configurazione per attestazione, collaudo e produzione
-----------------------------------------------------------------

[](#esempio-di-configurazione-per-attestazione-collaudo-e-produzione)

```
{
  "attestazione": {
    "kid": "kid",
    "issuer": "issuer",
    "clientId": "clientId",
    "purposeId": "purposeId",
    "privKeyPath": "/tmp/key.pem"
  },
  "collaudo": {
    "kid": "kid",
    "issuer": "issuer",
    "clientId": "clientId",
    "purposeId": "purposeId",
    "privKeyPath": "/tmp/key.pem"
  },
  "produzione": {
    "kid": "kid",
    "issuer": "issuer",
    "clientId": "clientId",
    "purposeId": "purposeId",
    "privKeyPath": "/tmp/key.pem"
  }
}
```

---

Per domande o suggerimenti, apri una issue!

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance89

Actively maintained with recent releases

Popularity11

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

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 ~16 days

Recently: every ~41 days

Total

16

Last Release

59d ago

PHP version history (3 changes)v0.0.6PHP &gt;=8.1

v0.1.1PHP &gt;=8.2

v0.2.0PHP &gt;=8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/bae66103be5c6961f7aa6ec3179edee3663ca0cb1be03c751fa49c2cdb078c34?d=identicon)[francesco.loreti](/maintainers/francesco.loreti)

---

Top Contributors

[![francesco-loreti](https://avatars.githubusercontent.com/u/10075337?v=4)](https://github.com/francesco-loreti "francesco-loreti (79 commits)")

---

Tags

phpapiclientAuthenticationpdnd

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/isprambiente-pdnd-client/health.svg)

```
[![Health](https://phpackages.com/badges/isprambiente-pdnd-client/health.svg)](https://phpackages.com/packages/isprambiente-pdnd-client)
```

###  Alternatives

[andalisolutions/oauth2-anaf

Anaf OAuth 2.0 support for the PHP League's OAuth 2.0 Client

194.1k](/packages/andalisolutions-oauth2-anaf)

PHPackages © 2026

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