Password Pusher API v2
BÊTADocumentation complète de l'API REST pour l'intégration Password Pusher dans vos applications
Avis bêta : L'API v2 est actuellement en version bêta. Bien que nous ayons fait tous les efforts possibles pour en assurer la stabilité, il est possible que des changements radicaux soient apportés avant la sortie de la version finale. N'hésitez pas à nous faire part de vos commentaires !
Publications
Les pushs permettent la transmission sécurisée et unidirectionnelle de données sensibles aux destinataires. Créez un push avec une URL secrète contenant du texte, des fichiers, des codes QR ou des URL, puis partagez-le avec n'importe qui, sans exposer de données sensibles dans des courriels, des chats ou des journaux.
Parfait pour l'intégration des employés, l'envoi d'identifiants de compte, la transmission de documents confidentiels ou le partage de toute information sensible. Les pushs expirent automatiquement après une durée ou un nombre de vues déterminé, et un suivi complet du cycle de vie est disponible dans les journaux d'audit de chaque push.
POST /api/v2/pushes
Crée un nouveau push avec la charge utile fournie.
Corps de la demande (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
}
Corps de la demande avec fichiers (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"
Remarque : Pour joindre des fichiers, utilisez multipart/form-data et définir kind: "file". Plusieurs fichiers peuvent être joints en utilisant push[files][].
Paramètres
| Paramètres | Taper | Description |
|---|---|---|
payload
obligatoire
|
string | Le texte secret à partager |
expire_after_duration
optionnel
|
integer (0-17) | Durée enum (0-17) |
expire_after_views
optionnel
|
integer (1-100) | Nombre de vues avant expiration |
passphrase
optionnel
|
string | Exiger une phrase d'authentification pour visualiser |
name
optionnel
|
string | Un nom pour la poussée |
note
optionnel
|
string | Note interne (visible uniquement par le créateur) |
deletable_by_viewer
optionnel
|
boolean | Permettre aux spectateurs de supprimer le push |
retrieval_step
optionnel
|
boolean | Nécessité d'une étape supplémentaire pour la récupération |
kind
optionnel
|
string | Type : "texte", "fichier", "url" ou "qr" (la valeur par défaut est "texte") |
notify_emails_to
optionnel
|
string | Adresses électroniques à notifier lors de la création d'un push (séparées par des virgules) |
notify_emails_to_locale
optionnel
|
string | Locale (langue) dans laquelle envoyer les notifications par courrier électronique |
account_id
optionnel
|
integer | L'identifiant du compte auquel associer le push (pour les utilisateurs disposant de plusieurs comptes) |
Valeurs de durée pour expire_after_duration
Champs de réponse
Les champs suivants sont renvoyés dans la réponse lors de la création d'un push. Note : payload et files ne sont PAS renvoyés lors de la création - ils ne sont disponibles que lors de la récupération d'un push via GET.
| Champ d'application | Taper | Exemple | Description |
|---|---|---|---|
| account_id | integer or null | 1 | ID du compte du propriétaire |
| created_at | string | "2025-02-17T10:00:00.000Z" | Délai de création de l'ISO 8601 |
| days_remaining | integer | 1 | Obsolète Nombre entier de jours restants (0 si < 1 jour) ; prefer expires_at / expires_in |
| deletable_by_viewer | boolean | true | Si le destinataire peut supprimer le push |
| deleted | boolean | false | Si la poussée a été explicitement supprimée |
| expire_after_days | integer | 1 | Obsolète Jours approximatifs (dérivés de la durée) |
| expire_after_duration | integer | 6 | Durée enum (0-17) ; voir tableau ci-dessus |
| expire_after_views | integer | 5 | Nombre maximal de vues avant expiration |
| expired | boolean | false | Si le push a expiré |
| expired_on | string or null | null | ISO 8601 lorsque le push a expiré ; null s'il n'a pas expiré |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Heure ISO 8601 à laquelle le push expire ; null si expiré |
| expires_in | number | 86400 | Secondes jusqu'à l'expiration (0 si expiré) |
| html_url | string | "https://.../p/abc" | URL pour ouvrir le push dans le navigateur |
| json_url | string | "https://.../p/abc.json" | URL pour récupérer le push en JSON |
| name | string or null | "Database credentials" | Nom facultatif pour la poussée |
| note | string or null | null | Note privée facultative |
| notify_emails_to | string or null | null | Emails à notifier lors de la création (premium only) |
| passphrase | string or null | null | Présente uniquement si push a une phrase d'authentification (valeur cachée) |
| retrieval_step | boolean | false | Si une étape supplémentaire est nécessaire pour récupérer |
| updated_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 : date de la dernière mise à jour |
| url_token | string | "fkwjfvhall92" | Identifiant secret unique pour la poussée |
| views_remaining | integer | 5 | Vues restantes avant l'expiration |
Exemple de réponse :
{
"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"
}
Exemple de demande
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
Récupère le contenu secret d'un push. Cela incrémente le nombre de vues et peut faire expirer le push.
Champs de réponse
Les champs suivants sont renvoyés lors de la récupération d'un push. Ce point d'accès renvoie la charge utile et les fichiers qui ne sont pas disponibles sur d'autres points d'accès.
| Champ d'application | Taper | Exemple | Description |
|---|---|---|---|
| created_at | string | "2025-02-17T10:00:00.000Z" | Délai de création de l'ISO 8601 |
| days_remaining | integer | 1 | Obsolète Nombre entier de jours restants (0 si < 1 jour) ; prefer expires_at / expires_in |
| deletable_by_viewer | boolean | true | Si le destinataire peut supprimer le push |
| deleted | boolean | false | Si la poussée a été explicitement supprimée |
| expire_after_days | integer | 1 | Obsolète Jours approximatifs (dérivés de la durée) |
| expire_after_duration | integer | 6 | Durée enum (0-17) |
| expire_after_views | integer | 5 | Nombre maximal de vues avant expiration |
| expired | boolean | false | Si le push a expiré |
| expired_on | string or null | null | ISO 8601 lorsque le push a expiré ; null s'il n'a pas expiré |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Heure ISO 8601 à laquelle le push expire ; null si expiré |
| expires_in | number | 86400 | Secondes jusqu'à l'expiration (0 si expiré) |
| files | array | [{ filename, content_type, url }] | Métadonnées des fichiers joints avec les URL de téléchargement |
| html_url | string | "https://.../p/abc" | URL pour ouvrir le push dans le navigateur |
| json_url | string | "https://.../p/abc.json" | URL pour récupérer le push en JSON |
| passphrase | string or null | null | Présente uniquement si push a une phrase d'authentification (valeur cachée) |
| payload | string or null | "secret123" | Le contenu secret ; nul en cas d'expiration |
| retrieval_step | boolean | false | Si une étape supplémentaire est nécessaire pour récupérer |
| updated_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 : date de la dernière mise à jour |
| url_token | string | "fkwjfvhall92" | Identifiant secret unique pour la poussée |
| views_remaining | integer | 2 | Vues restantes avant l'expiration |
Exemple de demande
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92
Exemple de demande avec phrase d'authentification
curl -X GET "https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92?passphrase=your_passphrase"
Exemple de réponse
{
"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": []
}
Remarque : Si la poussée a une phrase d'authentification, l'inclure en tant que paramètre de requête : ?passphrase=your_passphrase. La récupération d'un push compte comme une vue et peut faire expirer le push s'il atteint sa limite de vues.
GET /api/v2/pushes/:url_token/preview
Renvoie l'URL secrète entièrement qualifiée d'un push sans récupérer la charge utile.
Exemple de demande
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92/preview
Exemple de réponse
{
"url": "https://eu.pwpush.com/p/fkwjfvhall92"
}
GET /api/v2/pushes/:url_token/audit
Renvoie le journal d'audit d'une poussée. Requiert l'authentification et la propriété.
Paramètres d'interrogation :
page (optionnel): Numéro de page pour la pagination.
- Par défaut :
1(première page) - Gamme :
1à200 - Renvoie jusqu'à 50 entrées de journal d'audit par page
- Exemple :
?page=2pour récupérer la deuxième page
Exemple de demande
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92/audit \
-H "Authorization: Bearer YOUR_API_TOKEN"
Exemple de réponse
{
"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"
}
]
}
Remarque : Le kind indique le type d'action enregistrée. Les valeurs courantes sont les suivantes : creation, view, expire, failed_passphrase, et failed_view.
DELETE /api/v2/pushes/:url_token
Expire immédiatement un push et supprime définitivement toutes les données sensibles, y compris la charge utile et tous les fichiers joints. Cette action est irréversible et ne peut être annulée. Nécessite une authentification et une propriété, ou le message doit avoir été créé avec la fonction deletable_by_viewer: true.
Exemple de demande
curl -X DELETE https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92 \
-H "Authorization: Bearer YOUR_API_TOKEN"
Exemple de réponse
{
"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
Renvoie une liste paginée de vos poussées actives (non expirées). Nécessite une authentification.
GET /api/v2/pushes/expired
Renvoie une liste paginée de vos poussées expirées. Nécessite une authentification.
Paramètres d'interrogation :
page (optionnel): Numéro de page pour la pagination.
- Par défaut :
1(première page) - Gamme :
1à200 - Retourne jusqu'à 50 poussées par page
- Exemple :
?page=2pour récupérer la deuxième page
Exemple de demande (actif)
curl -X GET https://eu.pwpush.com/api/v2/pushes/active \
-H "Authorization: Bearer YOUR_API_TOKEN"
Exemple de demande (expiré)
curl -X GET https://eu.pwpush.com/api/v2/pushes/expired \
-H "Authorization: Bearer YOUR_API_TOKEN"
Exemple de réponse
[
{
"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
}
]
Dernière mise à jour : July 12, 2026