Password Pusher API v2
BETADocumentazione completa dell'API REST per l'integrazione Password Pusher nelle vostre applicazioni
Avviso Beta: L'API v2 è attualmente in fase beta. Abbiamo fatto ogni sforzo per garantire la stabilità, ma è possibile che vengano apportate delle modifiche prima del rilascio finale. Siamo lieti di ricevere il vostro feedback!
Spinge
I push consentono la trasmissione sicura e unidirezionale di dati sensibili ai destinatari. Create un push con un URL segreto contenente testo, file, codici QR o URL, quindi condividetelo con chiunque, senza esporre dati sensibili in e-mail, chat o registri.
Perfetto per l'onboarding dei dipendenti, l'invio di credenziali di account, la trasmissione di documenti riservati o la condivisione di qualsiasi informazione sensibile. I push scadono automaticamente dopo una determinata durata o un determinato numero di visualizzazioni e il monitoraggio completo del ciclo di vita è disponibile nei log di audit di ogni push.
POST /api/v2/pushes
Crea un nuovo push con il payload fornito.
Corpo della richiesta (JSON)
{
"push": {
"payload": "secret_password_123",
"expire_after_duration": 6,
"expire_after_views": 5,
"passphrase": "optional_passphrase",
"name": "Database Credentials",
"note": "Internal note",
"deletable_by_viewer": true,
"retrieval_step": true,
"kind": "text"
},
"account_id": 123
}
Corpo della richiesta con file (multipart/form-data)
curl -X POST https://eu.pwpush.com/api/v2/pushes \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-F "push[payload]=secret_password_123" \
-F "push[expire_after_duration]=6" \
-F "push[expire_after_views]=5" \
-F "push[name]=Database Credentials" \
-F "push[files][]=@/path/to/file1.pdf" \
-F "push[files][]=@/path/to/file2.txt"
Nota: Per allegare i file, utilizzare multipart/form-data formato e impostare kind: "file". È possibile allegare più file utilizzando push[files][].
Parametri
| Parametro | Tipo | Descrizione |
|---|---|---|
payload
necessario
|
string | Il testo segreto da condividere |
expire_after_duration
opzionale
|
integer (0-17) | Durata enum (0-17) |
expire_after_views
opzionale
|
integer (1-100) | Numero di visualizzazioni prima della scadenza |
passphrase
opzionale
|
string | Richiede una passphrase per essere visualizzato |
name
opzionale
|
string | Un nome per la spinta |
note
opzionale
|
string | Nota interna (visibile solo al creatore) |
deletable_by_viewer
opzionale
|
boolean | Consentire agli spettatori di eliminare il push |
retrieval_step
opzionale
|
boolean | Richiedono un passaggio in più per il recupero |
kind
opzionale
|
string | Tipo: "text", "file", "url" o "qr" (impostazione predefinita "text") |
notify_emails_to
opzionale
|
string | Indirizzi e-mail da notificare quando viene creato un push (separati da virgole) |
notify_emails_to_locale
opzionale
|
string | Locale (lingua) in cui inviare le notifiche via email |
account_id
opzionale
|
integer | L'ID dell'account a cui associare il push (per gli utenti con più account) |
Valori di durata per expire_after_duration
Campi di risposta
I seguenti campi sono restituiti nella risposta quando si crea un push. Nota: il payload e i file NON vengono restituiti alla creazione; sono disponibili solo quando si recupera un push tramite GET.
| Campo | Tipo | Esempio | Descrizione |
|---|---|---|---|
| account_id | integer or null | 1 | ID account proprietario |
| created_at | string | "2025-02-17T10:00:00.000Z" | Tempo di creazione ISO 8601 |
| days_remaining | integer | 1 | Deprecato Giorni interi rimasti (0 se < 1 giorno); preferisce expires_at / expires_in |
| deletable_by_viewer | boolean | true | Se il destinatario può cancellare il push |
| deleted | boolean | false | Se il push è stato esplicitamente cancellato |
| expire_after_days | integer | 1 | Deprecato Giorni approssimativi (derivati dalla durata) |
| expire_after_duration | integer | 6 | Durata enum (0-17); vedi tabella precedente |
| expire_after_views | integer | 5 | Visualizzazioni massime prima della scadenza |
| expired | boolean | false | Se il push è scaduto |
| expired_on | string or null | null | ISO 8601 quando il push è scaduto; null se non è scaduto |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Ora ISO 8601 in cui scade il push; null se scaduto |
| expires_in | number | 86400 | Secondi fino alla scadenza (0 se scaduto) |
| html_url | string | "https://.../p/abc" | URL per aprire il push nel browser |
| json_url | string | "https://.../p/abc.json" | URL per recuperare il push come JSON |
| name | string or null | "Database credentials" | Nome opzionale per il push |
| note | string or null | null | Nota privata opzionale |
| notify_emails_to | string or null | null | Email di notifica alla creazione (solo premium) |
| passphrase | string or null | null | Presente solo se push ha una passphrase (valore nascosto) |
| retrieval_step | boolean | false | Se è necessario un passaggio in più per recuperare |
| updated_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 ora dell'ultimo aggiornamento |
| url_token | string | "fkwjfvhall92" | Identificatore segreto univoco per il push |
| views_remaining | integer | 5 | Visualizzazioni rimaste prima della scadenza |
Esempio di risposta:
{
"expire_after_duration": 6,
"expire_after_views": 5,
"expired": false,
"url_token": "fkwjfvhall92",
"deletable_by_viewer": true,
"retrieval_step": false,
"expired_on": null,
"passphrase": null,
"created_at": "2025-02-17T10:00:00.000Z",
"updated_at": "2025-02-17T10:00:00.000Z",
"expire_after_days": 1,
"views_remaining": 5,
"deleted": false,
"days_remaining": 1,
"expires_at": "2025-02-18T10:00:00.000Z",
"expires_in": 86400,
"json_url": "https://example.com/p/fkwjfvhall92.json",
"html_url": "https://example.com/p/fkwjfvhall92",
"account_id": 1,
"note": null,
"name": "Database Credentials"
}
Esempio di richiesta
curl -X POST https://eu.pwpush.com/api/v2/pushes \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"push": {
"payload": "MySecretPassword123",
"expire_after_duration": 6,
"expire_after_views": 3
}
}'
require 'net/http'
require 'json'
require 'uri'
uri = URI('https://eu.pwpush.com/api/v2/pushes')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.path)
request['Authorization'] = 'Bearer YOUR_API_TOKEN'
request['Content-Type'] = 'application/json'
request.body = {
push: {
payload: 'MySecretPassword123',
expire_after_duration: 6,
expire_after_views: 3
}
}.to_json
response = http.request(request)
puts response.body
import requests
import json
url = 'https://eu.pwpush.com/api/v2/pushes'
headers = {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
data = {
'push': {
'payload': 'MySecretPassword123',
'expire_after_duration': 6,
'expire_after_views': 3
}
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
$headers = @{
'Authorization' = 'Bearer YOUR_API_TOKEN'
'Content-Type' = 'application/json'
}
$body = @{
push = @{
payload = 'MySecretPassword123'
expire_after_duration = 6
expire_after_views = 3
}
} | ConvertTo-Json -Depth 10
$response = Invoke-RestMethod -Uri 'https://eu.pwpush.com/api/v2/pushes' `
-Method Post `
-Headers $headers `
-Body $body
$response | ConvertTo-Json
GET /api/v2/pushes/:url_token
Recupera il payload segreto di un push. Questo incrementa il conteggio delle visualizzazioni e può far scadere il push.
Campi di risposta
I seguenti campi vengono restituiti quando si recupera un push. Questo endpoint restituisce il payload e i file che non sono disponibili su altri endpoint.
| Campo | Tipo | Esempio | Descrizione |
|---|---|---|---|
| created_at | string | "2025-02-17T10:00:00.000Z" | Tempo di creazione ISO 8601 |
| days_remaining | integer | 1 | Deprecato Giorni interi rimasti (0 se < 1 giorno); preferisce expires_at / expires_in |
| deletable_by_viewer | boolean | true | Se il destinatario può cancellare il push |
| deleted | boolean | false | Se il push è stato esplicitamente cancellato |
| expire_after_days | integer | 1 | Deprecato Giorni approssimativi (derivati dalla durata) |
| expire_after_duration | integer | 6 | Durata enum (0-17) |
| expire_after_views | integer | 5 | Visualizzazioni massime prima della scadenza |
| expired | boolean | false | Se il push è scaduto |
| expired_on | string or null | null | ISO 8601 quando il push è scaduto; null se non è scaduto |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Ora ISO 8601 in cui scade il push; null se scaduto |
| expires_in | number | 86400 | Secondi fino alla scadenza (0 se scaduto) |
| files | array | [{ filename, content_type, url }] | Metadati dei file allegati con URL di download |
| html_url | string | "https://.../p/abc" | URL per aprire il push nel browser |
| json_url | string | "https://.../p/abc.json" | URL per recuperare il push come JSON |
| passphrase | string or null | null | Presente solo se push ha una passphrase (valore nascosto) |
| payload | string or null | "secret123" | Il contenuto segreto; nullo se scaduto |
| retrieval_step | boolean | false | Se è necessario un passaggio in più per recuperare |
| updated_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 ora dell'ultimo aggiornamento |
| url_token | string | "fkwjfvhall92" | Identificatore segreto univoco per il push |
| views_remaining | integer | 2 | Visualizzazioni rimaste prima della scadenza |
Esempio di richiesta
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92
Esempio di richiesta con passphrase
curl -X GET "https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92?passphrase=your_passphrase"
Esempio di risposta
{
"expire_after_duration": 6,
"expire_after_views": 3,
"expired": false,
"url_token": "fkwjfvhall92",
"deletable_by_viewer": false,
"retrieval_step": false,
"expired_on": null,
"passphrase": null,
"created_at": "2025-02-17T10:00:00.000Z",
"updated_at": "2025-02-17T10:00:00.000Z",
"expire_after_days": 1,
"views_remaining": 2,
"deleted": false,
"days_remaining": 1,
"expires_at": "2025-02-18T10:00:00.000Z",
"expires_in": 86400,
"json_url": "https://eu.pwpush.com/p/fkwjfvhall92.json",
"html_url": "https://eu.pwpush.com/p/fkwjfvhall92",
"payload": "MySecretPassword123",
"files": []
}
Nota: Se il push ha una passphrase, includerla come parametro di query: ?passphrase=your_passphrase. Il recupero di un push conta come una visualizzazione e può far scadere il push se raggiunge il limite di visualizzazioni.
GET /api/v2/pushes/:url_token/preview
Restituisce l'URL segreto completamente qualificato di un push senza recuperare il payload.
Esempio di richiesta
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92/preview
Esempio di risposta
{
"url": "https://eu.pwpush.com/p/fkwjfvhall92"
}
GET /api/v2/pushes/:url_token/audit
Restituisce il registro di audit per un push. Richiede l'autenticazione e la proprietà.
Parametri della query:
page (opzionale): Numero di pagina per la paginazione.
- Predefinito:
1(prima pagina) - Gamma:
1a200 - Restituisce fino a 50 voci di registro di audit per pagina
- Esempio:
?page=2per recuperare la seconda pagina
Esempio di richiesta
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92/audit \
-H "Authorization: Bearer YOUR_API_TOKEN"
Esempio di risposta
{
"logs": [
{
"ip": "192.168.1.100",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"referrer": null,
"kind": "creation",
"created_at": "2023-10-27T10:00:00.000Z",
"updated_at": "2023-10-27T10:00:00.000Z"
},
{
"ip": "192.168.1.101",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36",
"referrer": "https://example.com",
"kind": "view",
"created_at": "2023-10-27T10:05:00.000Z",
"updated_at": "2023-10-27T10:05:00.000Z"
}
]
}
Nota: Il kind indica il tipo di azione registrata. I valori più comuni sono: creation, view, expire, failed_passphrase, e failed_view.
DELETE /api/v2/pushes/:url_token
Fa scadere immediatamente un push ed elimina in modo permanente tutti i dati sensibili, compresi il payload ed eventuali file allegati. Questa azione è irreversibile e non può essere annullata. Richiede l'autenticazione e la proprietà, oppure il push deve essere stato creato con deletable_by_viewer: true.
Esempio di richiesta
curl -X DELETE https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92 \
-H "Authorization: Bearer YOUR_API_TOKEN"
Esempio di risposta
{
"expire_after_duration": 7,
"expire_after_views": 5,
"expired": true,
"url_token": "fkwjfvhall92",
"deletable_by_viewer": false,
"retrieval_step": false,
"expired_on": "2023-10-27T10:15:00.000Z",
"passphrase": null,
"created_at": "2023-10-27T10:00:00.000Z",
"updated_at": "2023-10-27T10:15:00.000Z",
"expire_after_days": 7,
"days_remaining": 0,
"expires_at": null,
"expires_in": 0,
"views_remaining": 0,
"deleted": true,
"json_url": "https://eu.pwpush.com/p/fkwjfvhall92.json",
"html_url": "https://eu.pwpush.com/p/fkwjfvhall92",
"account_id": 1,
"note": null,
"name": null
}
GET /api/v2/pushes/active
Restituisce un elenco impaginato delle spinte attive (non scadute). Richiede l'autenticazione.
GET /api/v2/pushes/expired
Restituisce un elenco impaginato delle spinte scadute. Richiede l'autenticazione.
Parametri della query:
page (opzionale): Numero di pagina per la paginazione.
- Predefinito:
1(prima pagina) - Gamma:
1a200 - Restituisce fino a 50 spinte per pagina
- Esempio:
?page=2per recuperare la seconda pagina
Esempio di richiesta (attivo)
curl -X GET https://eu.pwpush.com/api/v2/pushes/active \
-H "Authorization: Bearer YOUR_API_TOKEN"
Esempio di richiesta (scaduta)
curl -X GET https://eu.pwpush.com/api/v2/pushes/expired \
-H "Authorization: Bearer YOUR_API_TOKEN"
Esempio di risposta
[
{
"expire_after_duration": 7,
"expire_after_views": 5,
"expired": false,
"url_token": "abc123xyz789",
"deletable_by_viewer": false,
"retrieval_step": false,
"expired_on": null,
"passphrase": null,
"created_at": "2023-10-27T10:00:00.000Z",
"updated_at": "2023-10-27T10:00:00.000Z",
"expire_after_days": 7,
"days_remaining": 7,
"expires_at": "2023-10-29T10:00:00.000Z",
"expires_in": 172800,
"views_remaining": 5,
"deleted": false,
"json_url": "https://eu.pwpush.com/p/abc123xyz789.json",
"html_url": "https://eu.pwpush.com/p/abc123xyz789",
"account_id": 1,
"note": null,
"name": null
},
{
"expire_after_duration": 1,
"expire_after_views": 3,
"expired": false,
"url_token": "def456uvw012",
"deletable_by_viewer": true,
"retrieval_step": false,
"expired_on": null,
"passphrase": null,
"created_at": "2023-10-26T15:30:00.000Z",
"updated_at": "2023-10-26T15:30:00.000Z",
"expire_after_days": 1,
"days_remaining": 0,
"expires_at": "2023-10-26T16:00:00.000Z",
"expires_in": 1200,
"views_remaining": 2,
"deleted": false,
"json_url": "https://eu.pwpush.com/p/def456uvw012.json",
"html_url": "https://eu.pwpush.com/p/def456uvw012",
"account_id": 1,
"note": null,
"name": null
}
]
Ultimo aggiornamento: July 12, 2026