Password Pusher API v2
BETADocumentação abrangente da API REST para integração Password Pusher nas suas aplicações
Aviso de Beta: A API v2 está atualmente em versão beta. Embora tenhamos feito todos os esforços para garantir a estabilidade, pode haver alterações significativas antes do lançamento final. Agradecemos o seu feedback!
Empurra
Os Pushes permitem a transmissão segura e unidirecional de dados sensíveis aos destinatários. Crie um push com um URL secreto que contenha texto, ficheiros, códigos QR ou URLs e, em seguida, partilhe-o com qualquer pessoa - tudo isto sem expor dados sensíveis no correio eletrónico, no chat ou nos registos.
Perfeito para a integração de funcionários, envio de credenciais de conta, transmissão de documentos confidenciais ou partilha de qualquer informação sensível. Os envios expiram automaticamente após uma duração ou número de visualizações especificado, e o acompanhamento completo do ciclo de vida está disponível nos registos de auditoria de cada envio.
POST /api/v2/pushes
Cria um novo push com a carga útil fornecida.
Corpo do pedido (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 do pedido com ficheiros (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: Para anexar ficheiros, utilize multipart/form-data formato e conjunto kind: "file". Podem ser anexados vários ficheiros utilizando push[files][].
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
payload
requeridos
|
string | O texto secreto a partilhar |
expire_after_duration
opcional
|
integer (0-17) | Duração enum (0-17) |
expire_after_views
opcional
|
integer (1-100) | Número de visualizações antes da expiração |
passphrase
opcional
|
string | Exigir uma frase-passe para ver |
name
opcional
|
string | Um nome para o empurrão |
note
opcional
|
string | Nota interna (apenas visível para o criador) |
deletable_by_viewer
opcional
|
boolean | Permitir que os espectadores apaguem o push |
retrieval_step
opcional
|
boolean | Exigir um passo extra para recuperar |
kind
opcional
|
string | Tipo: "texto", "ficheiro", "url" ou "qr" (a predefinição é "texto") |
notify_emails_to
opcional
|
string | Endereços de correio eletrónico a notificar quando é criado um envio (separados por vírgulas) |
notify_emails_to_locale
opcional
|
string | Localidade (língua) para enviar a(s) notificação(ões) por correio eletrónico |
account_id
opcional
|
integer | A ID da conta à qual associar o envio (para utilizadores com várias contas) |
Valores de duração para expire_after_duration
Campos de resposta
Os campos seguintes são devolvidos na resposta ao criar um envio. Nota: a carga útil e os ficheiros NÃO são devolvidos na criação - apenas estão disponíveis quando se recupera um push através de GET.
| Campo | Tipo | Exemplo | Descrição |
|---|---|---|---|
| account_id | integer or null | 1 | ID da conta do proprietário |
| created_at | string | "2025-02-17T10:00:00.000Z" | Tempo de criação da ISO 8601 |
| days_remaining | integer | 1 | Descontinuada Dias inteiros restantes (0 quando < 1 dia); preferir expires_at / expires_in |
| deletable_by_viewer | boolean | true | Se o destinatário pode apagar o envio |
| deleted | boolean | false | Se o push foi explicitamente eliminado |
| expire_after_days | integer | 1 | Descontinuada Dias aproximados (derivados da duração) |
| expire_after_duration | integer | 6 | Duração enum (0-17); ver quadro acima |
| expire_after_views | integer | 5 | Máximo de visualizações antes da expiração |
| expired | boolean | false | Se o impulso expirou |
| expired_on | string or null | null | ISO 8601 quando o envio expirou; nulo se não tiver expirado |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Hora ISO 8601 em que o envio expira; nulo se expirado |
| expires_in | number | 86400 | Segundos até à expiração (0 se expirado) |
| html_url | string | "https://.../p/abc" | URL para abrir o push no browser |
| json_url | string | "https://.../p/abc.json" | URL para recuperar o envio como JSON |
| name | string or null | "Database credentials" | Nome opcional para o envio |
| note | string or null | null | Nota privada facultativa |
| notify_emails_to | string or null | null | Emails para notificar sobre a criação (apenas premium) |
| passphrase | string or null | null | Presente apenas se o envio tiver uma frase-chave (valor oculto) |
| retrieval_step | boolean | false | Se é necessário um passo adicional para recuperar |
| updated_at | string | "2025-02-17T10:00:00.000Z" | Hora da última atualização da ISO 8601 |
| url_token | string | "fkwjfvhall92" | Identificador secreto único para o envio |
| views_remaining | integer | 5 | Vistas restantes antes da expiração |
Exemplo de resposta:
{
"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"
}
Exemplo de pedido
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 o payload secreto de um push. Isto aumenta a contagem de visualizações e pode expirar o envio.
Campos de resposta
Os campos seguintes são devolvidos quando se recupera um envio. Este ponto de extremidade devolve a carga útil e os ficheiros que não estão disponíveis noutros pontos de extremidade.
| Campo | Tipo | Exemplo | Descrição |
|---|---|---|---|
| created_at | string | "2025-02-17T10:00:00.000Z" | Tempo de criação da ISO 8601 |
| days_remaining | integer | 1 | Descontinuada Dias inteiros restantes (0 quando < 1 dia); preferir expires_at / expires_in |
| deletable_by_viewer | boolean | true | Se o destinatário pode apagar o envio |
| deleted | boolean | false | Se o push foi explicitamente eliminado |
| expire_after_days | integer | 1 | Descontinuada Dias aproximados (derivados da duração) |
| expire_after_duration | integer | 6 | Duração enum (0-17) |
| expire_after_views | integer | 5 | Máximo de visualizações antes da expiração |
| expired | boolean | false | Se o impulso expirou |
| expired_on | string or null | null | ISO 8601 quando o envio expirou; nulo se não tiver expirado |
| expires_at | string or null | "2025-02-18T10:00:00.000Z" | Hora ISO 8601 em que o envio expira; nulo se expirado |
| expires_in | number | 86400 | Segundos até à expiração (0 se expirado) |
| files | array | [{ filename, content_type, url }] | Metadados de ficheiros anexados com URLs de transferência |
| html_url | string | "https://.../p/abc" | URL para abrir o push no browser |
| json_url | string | "https://.../p/abc.json" | URL para recuperar o envio como JSON |
| passphrase | string or null | null | Presente apenas se o envio tiver uma frase-chave (valor oculto) |
| payload | string or null | "secret123" | O conteúdo secreto; nulo quando expirado |
| retrieval_step | boolean | false | Se é necessário um passo adicional para recuperar |
| updated_at | string | "2025-02-17T10:00:00.000Z" | Hora da última atualização da ISO 8601 |
| url_token | string | "fkwjfvhall92" | Identificador secreto único para o envio |
| views_remaining | integer | 2 | Vistas restantes antes da expiração |
Exemplo de pedido
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92
Exemplo de pedido com frase-chave
curl -X GET "https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92?passphrase=your_passphrase"
Exemplo de resposta
{
"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 o envio tiver uma frase-chave, inclua-a como parâmetro de consulta: ?passphrase=your_passphrase. A recuperação de um push conta como uma vista e pode expirar o push se este atingir o seu limite de vistas.
GET /api/v2/pushes/:url_token/preview
Devolve o URL secreto totalmente qualificado de um push sem recuperar a carga útil.
Exemplo de pedido
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92/preview
Exemplo de resposta
{
"url": "https://eu.pwpush.com/p/fkwjfvhall92"
}
GET /api/v2/pushes/:url_token/audit
Devolve o registo de auditoria de um envio. Requer autenticação e propriedade.
Parâmetros de consulta:
page (opcional): Número de página para paginação.
- Predefinição:
1(primeira página) - Alcance:
1para200 - Apresenta até 50 entradas de registo de auditoria por página
- Exemplo:
?page=2para obter a segunda página
Exemplo de pedido
curl -X GET https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92/audit \
-H "Authorization: Bearer YOUR_API_TOKEN"
Exemplo de resposta
{
"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: O kind indica o tipo de ação registada. Os valores comuns incluem: creation, view, expire, failed_passphrase, e failed_view.
DELETE /api/v2/pushes/:url_token
Expira imediatamente um envio e elimina permanentemente todos os dados sensíveis, incluindo a carga útil e quaisquer ficheiros anexados. Esta ação é irreversível e não pode ser desfeita. Requer autenticação e propriedade, ou o push deve ter sido criado com deletable_by_viewer: true.
Exemplo de pedido
curl -X DELETE https://eu.pwpush.com/api/v2/pushes/fkwjfvhall92 \
-H "Authorization: Bearer YOUR_API_TOKEN"
Exemplo de resposta
{
"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
Devolve uma lista paginada dos seus pushes activos (não expirados). Requer autenticação.
GET /api/v2/pushes/expired
Devolve uma lista paginada dos seus pushes expirados. Requer autenticação.
Parâmetros de consulta:
page (opcional): Número de página para paginação.
- Predefinição:
1(primeira página) - Alcance:
1para200 - Devolve até 50 empurrões por página
- Exemplo:
?page=2para obter a segunda página
Exemplo de pedido (ativo)
curl -X GET https://eu.pwpush.com/api/v2/pushes/active \
-H "Authorization: Bearer YOUR_API_TOKEN"
Exemplo de pedido (expirado)
curl -X GET https://eu.pwpush.com/api/v2/pushes/expired \
-H "Authorization: Bearer YOUR_API_TOKEN"
Exemplo de resposta
[
{
"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
}
]
Última atualização: July 12, 2026