Password Pusher API v2
BETAKompleksowa dokumentacja interfejsu API REST do integracji Password Pusher do aplikacji
Powiadomienie o wersji beta: API v2 jest obecnie w wersji beta. Chociaż dołożyliśmy wszelkich starań, aby zapewnić stabilność, przed ostatecznym wydaniem mogą pojawić się przełomowe zmiany. Czekamy na Twoją opinię!
Popycha
Push umożliwia bezpieczną, jednokierunkową transmisję poufnych danych do odbiorców. Utwórz wiadomość push z tajnym adresem URL zawierającym tekst, pliki, kody QR lub adresy URL, a następnie udostępnij ją komukolwiek - wszystko to bez ujawniania poufnych danych w wiadomościach e-mail, czatach lub dziennikach.
Idealny do wdrażania pracowników, wysyłania poświadczeń konta, przesyłania poufnych dokumentów lub udostępniania wszelkich poufnych informacji. Pushy automatycznie wygasają po określonym czasie trwania lub liczbie wyświetleń, a pełne śledzenie cyklu życia jest dostępne w dziennikach audytu każdego pushu.
POST /api/v2/pushes
Tworzy nowy push z podanym ładunkiem.
Treść żądania (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"
},
"workspace_id": "acct_oxQdpMWVm"
}
Treść żądania z plikami (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"
Uwaga: Podczas dołączania plików należy użyć multipart/form-data format i zestaw kind: "file". Można dołączyć wiele plików za pomocą push[files][].
Parametry
| Parametr | Typ | Opis |
|---|---|---|
payload
wymagany
|
string | Sekretny tekst do udostępnienia |
expire_after_duration
opcjonalny
|
integer (0-17) | Czas trwania enum (0-17) |
expire_after_views
opcjonalny
|
integer (1-100) | Liczba wyświetleń przed wygaśnięciem |
passphrase
opcjonalny
|
string | Wymagaj hasła, aby wyświetlić |
name
opcjonalny
|
string | Nazwa dla pchnięcia |
note
opcjonalny
|
string | Uwaga wewnętrzna (widoczna tylko dla twórcy) |
deletable_by_viewer
opcjonalny
|
boolean | Zezwalaj widzom na usuwanie push |
retrieval_step
opcjonalny
|
boolean | Wymagają dodatkowego kroku do pobrania |
kind
opcjonalny
|
string | Typ: "tekst", "plik", "url" lub "qr" (domyślnie "tekst") |
notify_emails_to
opcjonalny
|
string | Adresy e-mail odbiorców: lista dozwolonych adresów w funkcji Auto-Dispatch i/lub uwierzytelnieni odbiorcy. Nie wysyła wiadomości e-mail z własnej inicjatywy, gdy parametr `notify_recipients` ma wartość `false`. |
notify_emails_to_locale
opcjonalny
|
string | Ustawienie regionalne (język), w którym mają być wysyłane powiadomienia e-mailowe. W przypadku pominięcia tej wartości stosowane jest domyślne ustawienie obszaru roboczego, a następnie domyślny język aplikacji. |
notify_recipients
opcjonalny
|
boolean | Wysyłaj e-mail z tajnym linkiem po utworzeniu (automatyczna wysyłka). W przypadku pominięcia tej opcji stosowana jest domyślna polityka obszaru roboczego. W przypadku anonimowego tworzenia domyślną wartością jest „true”. Ustaw wartość „false”, aby traktować `notify_emails_to` jako listę dozwolonych adresów bez wysyłania wiadomości e-mail o utworzeniu. |
authenticated_recipients
opcjonalny
|
boolean | Wymagaj weryfikacji za pomocą jednorazowego hasła (OTP) wysłanego na adres e-mail przed wyświetleniem. Wymaga ustawienia parametru `notify_emails_to`. Po włączeniu tej opcji pobieranie danych jest możliwe wyłącznie w przeglądarce (wywołanie API zwraca kod błędu 403). Niezależne od parametrów `notify_recipients` i `Auto-Dispatch`. |
workspace_id
opcjonalny
|
string | Identyfikator obszaru roboczego z prefiksem (na przykład acct_oxQdpMWVm). Starsze wersje account_id a surowe identyfikatory numeryczne są nadal akceptowane ze względu na kompatybilność wsteczną. |
Wartości czasu trwania dla expire_after_duration
OSS a wersja Pro: Pola wygaśnięcia
Wersje Pro i pwpush.com wykorzystują expire_after_duration (wyliczenie 0–17 powyżej). Wersja open source używa zamiast tego expire_after_days (liczba dni) — expire_after_duration nie jest tam obsługiwane i jest ignorowane. Starsze expire_after_days jest nadal akceptowane w wersji Pro i mapowane na wyliczenie czasu trwania.
Pola odpowiedzi
Następujące pola są zwracane w odpowiedzi podczas tworzenia push. Uwaga: payload i pliki NIE są zwracane podczas tworzenia - są one dostępne tylko podczas pobierania push przez GET.
| Pole | Typ | Przykład | Opis |
|---|---|---|---|
| account_id | string or null | "acct_oxQdpMWVm" | Identyfikator obszaru roboczego właściciela (z prefiksem). Zwracany wyłącznie podczas tworzenia lub gdy można zarządzać operacją push. |
| created_at | string | "2025-02-17T10:00:00.000Z" | Czas tworzenia ISO 8601 |
| days_remaining | integer | 1 | Przestarzałe Pozostało pełnych dni (0, gdy < 1 dzień); preferuj expires_at / expires_in |
| deletable_by_viewer | boolean | true | Czy odbiorca może usunąć wiadomość push |
| deleted | boolean | false | Czy push został wyraźnie usunięty |
| expire_after_days | integer | 1 | Przestarzałe Przybliżone dni (na podstawie czasu trwania) |
| expire_after_duration | integer | 6 | Czas trwania enum (0-17); patrz tabela powyżej |
| expire_after_views | integer | 5 | Maksymalna liczba wyświetleń przed wygaśnięciem |
| expired | boolean | false | Czy push wygasł |
| expired_on | string or null | null | ISO 8601, gdy push wygasł; null, jeśli nie wygasł |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Czas ISO 8601 wygaśnięcia push; null, jeśli wygasł |
| expires_in | number | 86400 | Sekundy do wygaśnięcia (0, jeśli wygasło) |
| html_url | string | "https://.../p/abc" | Adres URL do otwarcia push w przeglądarce |
| json_url | string | "https://.../p/abc.json" | Adres URL do pobrania push jako JSON |
| name | string or null | "Database credentials" | Opcjonalna nazwa dla push |
| note | string or null | null | Opcjonalna notatka prywatna |
| notify_emails_to | string or null | null | Adresy e-mail odbiorców w ramach funkcji automatycznego wysyłania i/lub dla odbiorców uwierzytelnionych (tylko w wersji premium) |
| notify_emails_to_locale | string or null | "en" | Język tych wiadomości e-mail (tylko w wersji premium). Jeśli nie podano języka podczas tworzenia, stosowany jest domyślny język środowiska pracy, a następnie domyślny język aplikacji. |
| notify_recipients | boolean | true | Czy funkcja automatycznego wysyłania jest włączona. Jest to zapisane ustawienie, a nie potwierdzenie dostawy. |
| passphrase | string or null | null | Obecny tylko wtedy, gdy push ma hasło (wartość ukryta) |
| retrieval_step | boolean | false | Czy wymagany jest dodatkowy krok w celu pobrania |
| updated_at | string | "2025-02-17T10:00:00.000Z" | Czas ostatniej aktualizacji ISO 8601 |
| url_token | string | "fkwjfvhall92" | Unikalny tajny identyfikator push |
| views_remaining | integer | 5 | Liczba wyświetleń pozostała do wygaśnięcia |
Przykładowa odpowiedź:
{
"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": "acct_oxQdpMWVm",
"note": null,
"name": "Database Credentials"
}
Przykładowe żądanie
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
Pobiera tajny ładunek push. Zwiększa to liczbę wyświetleń i może spowodować wygaśnięcie push.
Pola odpowiedzi
Następujące pola są zwracane podczas pobierania push. Ten punkt końcowy zwraca ładunek i pliki, które nie są dostępne w innych punktach końcowych.
| Pole | Typ | Przykład | Opis |
|---|---|---|---|
| created_at | string | "2025-02-17T10:00:00.000Z" | Czas tworzenia ISO 8601 |
| days_remaining | integer | 1 | Przestarzałe Pozostało pełnych dni (0, gdy < 1 dzień); preferuj expires_at / expires_in |
| deletable_by_viewer | boolean | true | Czy odbiorca może usunąć wiadomość push |
| deleted | boolean | false | Czy push został wyraźnie usunięty |
| expire_after_days | integer | 1 | Przestarzałe Przybliżone dni (na podstawie czasu trwania) |
| expire_after_duration | integer | 6 | Czas trwania enum (0-17) |
| expire_after_views | integer | 5 | Maksymalna liczba wyświetleń przed wygaśnięciem |
| expired | boolean | false | Czy push wygasł |
| expired_on | string or null | null | ISO 8601, gdy push wygasł; null, jeśli nie wygasł |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Czas ISO 8601 wygaśnięcia push; null, jeśli wygasł |
| expires_in | number | 86400 | Sekundy do wygaśnięcia (0, jeśli wygasło) |
| files | array | [{ filename, content_type, url }] | Dołączone metadane pliku z adresami URL pobierania |
| html_url | string | "https://.../p/abc" | Adres URL do otwarcia push w przeglądarce |
| json_url | string | "https://.../p/abc.json" | Adres URL do pobrania push jako JSON |
| passphrase | string or null | null | Obecny tylko wtedy, gdy push ma hasło (wartość ukryta) |
| payload | string or null | "secret123" | Tajna zawartość; wartość null po wygaśnięciu |
| retrieval_step | boolean | false | Czy wymagany jest dodatkowy krok w celu pobrania |
| updated_at | string | "2025-02-17T10:00:00.000Z" | Czas ostatniej aktualizacji ISO 8601 |
| url_token | string | "fkwjfvhall92" | Unikalny tajny identyfikator push |
| views_remaining | integer | 2 | Liczba wyświetleń pozostała do wygaśnięcia |
Przykładowe żądanie
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92
Przykładowe żądanie z hasłem
curl -X GET "https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92" -H "X-Passphrase: your_passphrase"
Przykładowa odpowiedź
{
"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": []
}
Uwaga: Jeśli operacja push ma hasło, należy je przesłać wraz z X-Passphrase nagłówek (zalecany). The passphrase Ten parametr jest nadal akceptowany ze względu na kompatybilność, ale należy unikać umieszczania poufnych danych w adresach URL. Pobranie push liczy się jako widok i może spowodować wygaśnięcie push, jeśli osiągnie limit widoku.
GET /api/v2/pushes/:url_token/preview
Zwraca w pełni kwalifikowany tajny adres URL push bez pobierania ładunku.
Przykładowe żądanie
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92/preview
Przykładowa odpowiedź
{
"url": "https://eu.pwpush.com/p/fkwjfvhall92"
}
GET /api/v2/pushes/:url_token/audit
Zwraca dziennik inspekcji dla push. Wymaga uwierzytelnienia i własności.
Parametry zapytania:
page (opcjonalny): Numer strony do paginacji.
- Domyślnie:
1(pierwsza strona) - Zasięg:
1do200 - Zwraca do 50 wpisów dziennika kontroli na stronę
- Przykład:
?page=2aby pobrać drugą stronę - Nagłówki odpowiedzi:
Link,X-Page,X-Per-Page,X-Total,X-Total-Pages
Przykładowe żądanie
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92/audit \
-H "Authorization: Bearer YOUR_API_TOKEN"
Przykładowa odpowiedź
{
"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"
}
]
}
Uwaga: The kind wskazuje typ rejestrowanej akcji. Typowe wartości obejmują: creation, view, expire, failed_passphrase, i failed_view.
DELETE /api/v2/pushes/:url_token
Natychmiast wygasa push i trwale usuwa wszystkie poufne dane, w tym ładunek i wszelkie załączone pliki. Ta akcja jest nieodwracalna i nie można jej cofnąć. Wymaga uwierzytelnienia i prawa własności lub wiadomość push musi zostać utworzona przy użyciu funkcji deletable_by_viewer: true.
Przykładowe żądanie
curl -X DELETE https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92 \
-H "Authorization: Bearer YOUR_API_TOKEN"
Przykładowa odpowiedź
{
"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": "acct_oxQdpMWVm",
"note": null,
"name": null
}
GET /api/v2/pushes/active
Zwraca stronicowaną listę aktywnych (niewygasłych) pushów. Wymaga uwierzytelnienia.
GET /api/v2/pushes/expired
Zwraca stronicowaną listę wygasłych pushów. Wymaga uwierzytelnienia.
Parametry zapytania:
page (opcjonalny): Numer strony do paginacji.
- Domyślnie:
1(pierwsza strona) - Zasięg:
1do200 - Zwraca do 50 naciśnięć na stronę
- Przykład:
?page=2aby pobrać drugą stronę - Nagłówki odpowiedzi:
Link,X-Page,X-Per-Page,X-Total,X-Total-Pages
Przykładowe żądanie (aktywne)
curl -X GET https://eu.pwpush.com/api/v2/pushes/active \
-H "Authorization: Bearer YOUR_API_TOKEN"
Przykładowy wniosek (wygasły)
curl -X GET https://eu.pwpush.com/api/v2/pushes/expired \
-H "Authorization: Bearer YOUR_API_TOKEN"
Przykładowa odpowiedź
[
{
"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": "acct_oxQdpMWVm",
"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": "acct_oxQdpMWVm",
"note": null,
"name": null
}
]
Ostatnia aktualizacja: October 24, 2026