Password Pusher API v2
베타통합을 위한 포괄적인 REST API 문서 Password Pusher 애플리케이션에 적용
베타 공지: API v2는 현재 베타 버전입니다. 안정성을 보장하기 위해 최선을 다하고 있지만 최종 릴리스 전에는 획기적인 변경 사항이 있을 수 있습니다. 여러분의 피드백을 환영합니다!
푸시
푸시를 사용하면 민감한 데이터를 수신자에게 단방향으로 안전하게 전송할 수 있습니다. 텍스트, 파일, QR코드 또는 URL이 포함된 비밀 URL로 푸시를 만든 다음 이메일, 채팅 또는 로그에 민감한 데이터를 노출하지 않고도 누구와도 공유할 수 있습니다.
직원 온보딩, 계정 자격증명 전송, 기밀 문서 전송 또는 민감한 정보 공유에 적합합니다. 푸시는 지정된 기간 또는 조회 횟수가 지나면 자동으로 만료되며, 각 푸시의 감사 로그에서 전체 수명 주기를 추적할 수 있습니다.
POST /api/v2/pushes
제공된 페이로드를 사용하여 새 푸시를 생성합니다.
요청 본문(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
}
파일이 포함된 요청 본문(멀티파트/양식 데이터)
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 | 푸시 생성 시 알림을 받을 이메일 주소(쉼표로 구분) |
notify_emails_to_locale
선택 과목
|
string | 이메일 알림을 보낼 로캘(언어) |
authenticated_recipients
선택 과목
|
boolean | 조회하기 전에 이메일 OTP 인증을 요구합니다. notify_emails_to가 필요합니다. 이 기능이 활성화되면 조회 작업은 브라우저에서만 가능합니다(API 조회 시 403 오류가 반환됨). |
account_id
선택 과목
|
integer | 푸시를 연결할 계정 ID(여러 개의 계정을 보유한 사용자의 경우) |
기간 값 expire_after_duration
응답 필드
푸시 생성 시 응답에 반환되는 필드는 다음과 같습니다. 참고: 페이로드와 파일은 생성 시 반환되지 않으며, GET을 통해 푸시를 검색할 때만 사용할 수 있습니다.
| 필드 | 유형 | 예 | 설명 |
|---|---|---|---|
| account_id | integer or null | 1 | 소유자 계정 ID |
| created_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 생성 시간 |
| days_remaining | integer | 1 | 더 이상 사용되지 않음 전체 남은 일수(1일 미만인 경우 0), 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 시간, 만료된 경우 무효화됨 |
| expires_in | number | 86400 | 만료까지 초(만료된 경우 0) |
| html_url | string | "https://.../p/abc" | 브라우저에서 푸시를 열 수 있는 URL |
| json_url | string | "https://.../p/abc.json" | 푸시를 JSON으로 검색할 URL |
| name | string or null | "Database credentials" | 푸시 이름(선택 사항) |
| note | string or null | null | 선택적 비공개 메모 |
| notify_emails_to | string or null | null | 생성 시 알림 이메일(프리미엄 전용) |
| passphrase | string or null | null | 푸시에 비밀번호가 있는 경우에만 표시(값 숨김) |
| 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
푸시의 비밀 페이로드를 검색합니다. 이렇게 하면 조회 수가 증가하고 푸시가 만료될 수 있습니다.
응답 필드
푸시를 검색할 때 반환되는 필드는 다음과 같습니다. 이 엔드포인트는 다른 엔드포인트에서는 사용할 수 없는 페이로드와 파일을 반환합니다.
| 필드 | 유형 | 예 | 설명 |
|---|---|---|---|
| created_at | string | "2025-02-17T10:00:00.000Z" | ISO 8601 생성 시간 |
| days_remaining | integer | 1 | 더 이상 사용되지 않음 전체 남은 일수(1일 미만인 경우 0), 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 시간, 만료된 경우 무효화됨 |
| expires_in | number | 86400 | 만료까지 초(만료된 경우 0) |
| files | array | [{ filename, content_type, url }] | 다운로드 URL이 포함된 첨부 파일 메타데이터 |
| html_url | string | "https://.../p/abc" | 브라우저에서 푸시를 열 수 있는 URL |
| json_url | string | "https://.../p/abc.json" | 푸시를 JSON으로 검색할 URL |
| passphrase | string or null | null | 푸시에 비밀번호가 있는 경우에만 표시(값 숨김) |
| 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": []
}
참고: 푸시에 비밀번호가 있는 경우 이를 쿼리 매개변수로 포함하세요: ?passphrase=your_passphrase. 푸시를 검색하는 것은 조회수로 계산되며 조회수 제한에 도달하면 푸시가 만료될 수 있습니다.
GET /api/v2/pushes/:url_token/preview
페이로드를 검색하지 않고 푸시의 정규화된 비밀 URL을 반환합니다.
요청 예시
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
푸시를 즉시 만료하고 페이로드 및 첨부 파일을 포함한 모든 민감한 데이터를 영구적으로 삭제합니다. 이 작업은 되돌릴 수 없으며 취소할 수 없습니다. 인증 및 소유권이 필요하거나 푸시가 다음을 사용하여 생성되었어야 합니다 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