Password Pusher API v2
БЕТАИсчерпывающая документация по REST API для интеграции Password Pusher в ваши приложения
Уведомление о бета-версии: API v2 в настоящее время находится в стадии бета-версии. Мы приложили все усилия для обеспечения стабильности, но до финального релиза возможны изменения. Мы приветствуем ваши отзывы!
Нажимает
Push-рассылки обеспечивают безопасную одностороннюю передачу конфиденциальных данных получателям. Создайте push с секретным URL-адресом, содержащим текст, файлы, QR-коды или URL-адреса, а затем поделитесь им с кем угодно - и все это без раскрытия конфиденциальных данных в электронной почте, чате или журналах.
Идеально подходит для ввода сотрудников в должность, отправки учетных данных, передачи конфиденциальных документов или обмена любой конфиденциальной информацией. Толчки автоматически завершаются после указанной продолжительности или количества просмотров, а полный жизненный цикл отслеживается в журналах аудита каждого толчка.
POST /api/v2/pushes
Создает новый push с указанной полезной нагрузкой.
Тело запроса (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
}
Тело запроса с файлами (multipart/form-data)
curl -X POST https://us.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"
Примечание: При прикреплении файлов используйте multipart/form-data формат и набор kind: "file". Несколько файлов можно прикрепить с помощью push[files][].
Параметры
| Параметр | Тип | Описание |
|---|---|---|
payload
обязательный
|
string | Секретный текст, которым можно поделиться |
expire_after_duration
необязательный
|
integer (0-17) | Перечисление продолжительности (0-17) |
expire_after_views
необязательный
|
integer (1-100) | Количество просмотров до истечения срока действия |
passphrase
необязательный
|
string | Требуется парольная фраза для просмотра |
name
необязательный
|
string | Имя для толчка |
note
необязательный
|
string | Внутреннее примечание (видно только создателю) |
deletable_by_viewer
необязательный
|
boolean | Разрешите зрителям удалять нажатия |
retrieval_step
необязательный
|
boolean | Требуют дополнительных действий для извлечения |
kind
необязательный
|
string | Тип: "текст", "файл", "url" или "qr" (по умолчанию "текст") |
notify_emails_to
необязательный
|
string | Адреса электронной почты, на которые будут приходить уведомления о создании push (разделенные запятыми) |
notify_emails_to_locale
необязательный
|
string | Локаль (язык) для отправки уведомлений по электронной почте |
authenticated_recipients
необязательный
|
boolean | Требовать подтверждение с помощью одноразового пароля (OTP), отправленного по электронной почте, перед просмотром. Требуется параметр `notify_emails_to`. При включении этой функции получение данных возможно только через браузер (вызов API возвращает статус 403). |
account_id
необязательный
|
integer | Идентификатор учетной записи, с которой нужно связать push (для пользователей с несколькими учетными записями) |
Значения продолжительности для expire_after_duration
Поля ответа
При создании push в ответе возвращаются следующие поля. Примечание: полезная нагрузка и файлы НЕ возвращаются при создании - они доступны только при получении push через GET.
| Поле | Тип | Пример | Описание |
|---|---|---|---|
| account_id | integer or null | 1 | Идентификатор учетной записи владельца |
| created_at | string | "2025-02-17T10:00:00.000Z" | Время создания ISO 8601 |
| days_remaining | integer | 1 | Устаревший Осталось целых дней (0, если < 1 дня); prefer expires_at / expires_in |
| deletable_by_viewer | boolean | true | Может ли получатель удалить сообщение |
| deleted | boolean | false | Был ли толчок явно удален |
| expire_after_days | integer | 1 | Устаревший Примерное количество дней (определяется по продолжительности) |
| expire_after_duration | integer | 6 | Перечисление продолжительности (0-17); см. таблицу выше |
| expire_after_views | integer | 5 | Максимальное количество просмотров до истечения срока действия |
| expired | boolean | false | Истекло ли время нажатия |
| expired_on | string or null | null | ISO 8601, когда срок действия нажатия истек; null, если срок действия не истек |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Время ISO 8601, когда истекает срок действия нажатия; null, если истек |
| expires_in | number | 86400 | Секунды до истечения срока действия (0, если срок действия истек) |
| html_url | string | "https://.../p/abc" | URL-адрес для открытия push в браузере |
| json_url | string | "https://.../p/abc.json" | URL для получения push в формате JSON |
| name | string or null | "Database credentials" | Необязательное имя для толчка |
| note | string or null | null | Дополнительная частная записка |
| notify_emails_to | string or null | null | Уведомление по электронной почте о создании (только для премиум-класса) |
| passphrase | string or null | null | Присутствует, только если у push есть парольная фраза (значение скрыто) |
| retrieval_step | boolean | false | Требуется ли дополнительный шаг для получения |
| updated_at | string | "2025-02-17T10:00:00.000Z" | Время последнего обновления ISO 8601 |
| url_token | string | "fkwjfvhall92" | Уникальный секретный идентификатор для толчка |
| views_remaining | integer | 5 | Просмотров до истечения срока действия |
Пример ответа:
{
"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"
}
Пример запроса
curl -X POST https://us.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://us.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://us.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://us.pwpush.com/api/v2/pushes' `
-Method Post `
-Headers $headers `
-Body $body
$response | ConvertTo-Json
GET /api/v2/pushes/:url_token
Получает секретную полезную нагрузку push. Это увеличивает счетчик просмотров и может привести к истечению срока действия push.
Поля ответа
При получении push возвращаются следующие поля. Эта конечная точка возвращает полезную нагрузку и файлы, которые недоступны на других конечных точках.
| Поле | Тип | Пример | Описание |
|---|---|---|---|
| created_at | string | "2025-02-17T10:00:00.000Z" | Время создания ISO 8601 |
| days_remaining | integer | 1 | Устаревший Осталось целых дней (0, если < 1 дня); prefer expires_at / expires_in |
| deletable_by_viewer | boolean | true | Может ли получатель удалить сообщение |
| deleted | boolean | false | Был ли толчок явно удален |
| expire_after_days | integer | 1 | Устаревший Примерное количество дней (определяется по продолжительности) |
| expire_after_duration | integer | 6 | Перечисление продолжительности (0-17) |
| expire_after_views | integer | 5 | Максимальное количество просмотров до истечения срока действия |
| expired | boolean | false | Истекло ли время нажатия |
| expired_on | string or null | null | ISO 8601, когда срок действия нажатия истек; null, если срок действия не истек |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Время ISO 8601, когда истекает срок действия нажатия; null, если истек |
| expires_in | number | 86400 | Секунды до истечения срока действия (0, если срок действия истек) |
| files | array | [{ filename, content_type, url }] | Прикрепленные метаданные файлов с URL-адресами загрузки |
| html_url | string | "https://.../p/abc" | URL-адрес для открытия push в браузере |
| json_url | string | "https://.../p/abc.json" | URL для получения push в формате JSON |
| passphrase | string or null | null | Присутствует, только если у push есть парольная фраза (значение скрыто) |
| payload | string or null | "secret123" | Содержимое секрета; null, если срок действия истек |
| retrieval_step | boolean | false | Требуется ли дополнительный шаг для получения |
| updated_at | string | "2025-02-17T10:00:00.000Z" | Время последнего обновления ISO 8601 |
| url_token | string | "fkwjfvhall92" | Уникальный секретный идентификатор для толчка |
| views_remaining | integer | 2 | Просмотров до истечения срока действия |
Пример запроса
curl -X GET https://us.pwpush.com/api/v2/pushes/fkwjfvhall92
Пример запроса с парольной фразой
curl -X GET "https://us.pwpush.com/api/v2/pushes/fkwjfvhall92?passphrase=your_passphrase"
Пример ответа
{
"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://us.pwpush.com/p/fkwjfvhall92.json",
"html_url": "https://us.pwpush.com/p/fkwjfvhall92",
"payload": "MySecretPassword123",
"files": []
}
Примечание: Если у push есть парольная фраза, включите ее в качестве параметра запроса: ?passphrase=your_passphrase. Получение push засчитывается как просмотр и может привести к истечению срока действия push, если он достигнет предела просмотров.
GET /api/v2/pushes/:url_token/preview
Возвращает полный секретный URL-адрес push без извлечения полезной нагрузки.
Пример запроса
curl -X GET https://us.pwpush.com/api/v2/pushes/fkwjfvhall92/preview
Пример ответа
{
"url": "https://us.pwpush.com/p/fkwjfvhall92"
}
GET /api/v2/pushes/:url_token/audit
Возвращает журнал аудита для толчка. Требуется аутентификация и право собственности.
Параметры запроса:
page (необязательный): Номер страницы для пагинации.
- По умолчанию:
1(первая страница) - Диапазон:
1на200 - Возвращает до 50 записей журнала аудита на страницу
- Пример:
?page=2чтобы получить вторую страницу
Пример запроса
curl -X GET https://us.pwpush.com/api/v2/pushes/fkwjfvhall92/audit \
-H "Authorization: Bearer YOUR_API_TOKEN"
Пример ответа
{
"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"
}
]
}
Примечание: Сайт kind поле указывает тип действия, занесенного в журнал. Общие значения включают: creation, view, expire, failed_passphrase, и failed_view.
DELETE /api/v2/pushes/:url_token
Немедленно завершает действие push и безвозвратно удаляет все конфиденциальные данные, включая полезную нагрузку и все вложенные файлы. Это действие необратимо и не может быть отменено. Требуется аутентификация и право собственности, или push должен быть создан с помощью deletable_by_viewer: true.
Пример запроса
curl -X DELETE https://us.pwpush.com/api/v2/pushes/fkwjfvhall92 \
-H "Authorization: Bearer YOUR_API_TOKEN"
Пример ответа
{
"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://us.pwpush.com/p/fkwjfvhall92.json",
"html_url": "https://us.pwpush.com/p/fkwjfvhall92",
"account_id": 1,
"note": null,
"name": null
}
GET /api/v2/pushes/active
Возвращает постраничный список ваших активных (неистекших) толчков. Требуется аутентификация.
GET /api/v2/pushes/expired
Возвращает постраничный список ваших истекших пушей. Требуется аутентификация.
Параметры запроса:
page (необязательный): Номер страницы для пагинации.
- По умолчанию:
1(первая страница) - Диапазон:
1на200 - Возвращает до 50 нажатий на одну страницу
- Пример:
?page=2чтобы получить вторую страницу
Пример запроса (активный)
curl -X GET https://us.pwpush.com/api/v2/pushes/active \
-H "Authorization: Bearer YOUR_API_TOKEN"
Пример запроса (истек)
curl -X GET https://us.pwpush.com/api/v2/pushes/expired \
-H "Authorization: Bearer YOUR_API_TOKEN"
Пример ответа
[
{
"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://us.pwpush.com/p/abc123xyz789.json",
"html_url": "https://us.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://us.pwpush.com/p/def456uvw012.json",
"html_url": "https://us.pwpush.com/p/def456uvw012",
"account_id": 1,
"note": null,
"name": null
}
]
Последнее обновление: July 20, 2026