mirror of
https://github.com/mastodon/documentation
synced 2025-04-11 22:56:17 +02:00
261 lines
8.6 KiB
Markdown
261 lines
8.6 KiB
Markdown
---
|
||
title: push
|
||
description: >-
|
||
Subscribe to and receive push notifications when a server-side notification is
|
||
received, via the Web Push API
|
||
menu:
|
||
docs:
|
||
weight: 10
|
||
parent: methods-notifications
|
||
---
|
||
|
||
## Web Push API
|
||
|
||
Mastodon natively supports the [Web Push API](https://developer.mozilla.org/en-US/docs/Web/API/Push_API). You can utilize the same mechanisms for your native app. It requires running a proxy server that connects to Android’s and Apple’s proprietary notification gateways. However, the proxy server does not have access to the contents of the notifications. For a reference, see [Mozilla’s web push server](https://github.com/mozilla-services/autopush), or more practically, see:
|
||
|
||
* [toot-relay](https://github.com/DagAgren/toot-relay)
|
||
* [PushToFCM](https://github.com/tateisu/PushToFCM)
|
||
|
||
{{< api-method method="post" host="https://mastodon.example" path="/api/v1/push/subscription" title="Subscribe to push notifications" >}}
|
||
{{< api-method-description >}}
|
||
|
||
Add a Web Push API subscription to receive notifications. Each access token can have one push subscription. If you create a new subscription, the old subscription is deleted.
|
||
|
||
**Returns:** PushSubscription\
|
||
**OAuth:** User token + `push`\
|
||
**Version history:**
|
||
|
||
- 2.4.0 - added
|
||
|
||
{{< endapi-method-description >}}
|
||
{{< api-method-spec >}}
|
||
{{< api-method-request >}}
|
||
{{< api-method-headers >}}
|
||
{{< api-method-parameter name="Authorization" type="string" required=true >}}
|
||
Bearer <user token>
|
||
{{< endapi-method-parameter >}}
|
||
{{< endapi-method-headers >}}
|
||
{{< api-method-form-data-parameters >}}
|
||
{{< api-method-parameter name="subscription\[endpoint\]" type="string" required=true >}}
|
||
Endpoint URL that is called when a notification event occurs.
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="subscription\[keys\]\[p256dh\]" type="string" required=true >}}
|
||
User agent public key. Base64 encoded string of public key of ECDH key using `prime256v1` curve.
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="subscription\[keys\]\[auth\]" type="string" required=true >}}
|
||
Auth secret. Base64 encoded string of 16 bytes of random data.
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[follow\]" type="boolean" required=false >}}
|
||
Receive follow notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[favourite\]" type="boolean" required=false >}}
|
||
Receive favourite notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[reblog\]" type="boolean" required=false >}}
|
||
Receive reblog notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[mention\]" type="boolean" required=false >}}
|
||
Receive mention notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[poll\]" type="boolean" required=false >}}
|
||
Receive poll notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< endapi-method-form-data-parameters >}}
|
||
{{< endapi-method-request >}}
|
||
{{< api-method-response >}}
|
||
{{< api-method-response-example httpCode=200 >}}
|
||
{{< api-method-response-example-description >}}
|
||
|
||
A new PushSubscription has been generated, which will send the requested alerts to your endpoint.
|
||
{{< endapi-method-response-example-description >}}
|
||
|
||
|
||
```javascript
|
||
{
|
||
"id": 328183,
|
||
"endpoint": "https://yourdomain.example/listener",
|
||
"alerts": {
|
||
"follow": true,
|
||
"favourite": true,
|
||
"reblog": true,
|
||
"mention": true,
|
||
"poll": true
|
||
},
|
||
"server_key": "BCk-QqERU0q-CfYZjcuB6lnyyOYfJ2AifKqfeGIm7Z-HiTU5T9eTG5GxVA0_OH5mMlI4UkkDTpaZwozy0TzdZ2M="
|
||
}
|
||
```
|
||
{{< endapi-method-response-example >}}
|
||
{{< endapi-method-response >}}
|
||
{{< endapi-method-spec >}}
|
||
{{< endapi-method >}}
|
||
{{< api-method method="get" host="https://mastodon.example" path="/api/v1/push/subscription" title="Get current subscription" >}}
|
||
{{< api-method-description >}}
|
||
|
||
View the PushSubscription currently associated with this access token.
|
||
|
||
**Returns:** PushSubscription\
|
||
**OAuth:** User token + `push`\
|
||
**Version history:**
|
||
|
||
- 2.4.0 - added
|
||
|
||
{{< endapi-method-description >}}
|
||
{{< api-method-spec >}}
|
||
{{< api-method-request >}}
|
||
{{< api-method-headers >}}
|
||
{{< api-method-parameter name="Authorization" type="string" required=true >}}
|
||
Bearer <user token>
|
||
{{< endapi-method-parameter >}}
|
||
{{< endapi-method-headers >}}
|
||
{{< endapi-method-request >}}
|
||
{{< api-method-response >}}
|
||
{{< api-method-response-example httpCode=200 >}}
|
||
{{< api-method-response-example-description >}}
|
||
{{< endapi-method-response-example-description >}}
|
||
|
||
|
||
```javascript
|
||
{
|
||
"id": 328183,
|
||
"endpoint": "https://yourdomain.example/listener",
|
||
"alerts": {
|
||
"follow": true,
|
||
"favourite": true,
|
||
"reblog": true,
|
||
"mention": true,
|
||
"poll": true
|
||
},
|
||
"server_key": "BCk-QqERU0q-CfYZjcuB6lnyyOYfJ2AifKqfeGIm7Z-HiTU5T9eTG5GxVA0_OH5mMlI4UkkDTpaZwozy0TzdZ2M="
|
||
}
|
||
```
|
||
{{< endapi-method-response-example >}}
|
||
{{< api-method-response-example httpCode=404 >}}
|
||
{{< api-method-response-example-description >}}
|
||
|
||
A PushSubscription does not exist for this token.
|
||
{{< endapi-method-response-example-description >}}
|
||
|
||
|
||
```javascript
|
||
{
|
||
"error": "Record not found"
|
||
}
|
||
```
|
||
{{< endapi-method-response-example >}}
|
||
{{< endapi-method-response >}}
|
||
{{< endapi-method-spec >}}
|
||
{{< endapi-method >}}
|
||
{{< api-method method="put" host="https://mastodon.example" path="/api/v1/push/subscription" title="Change types of notifications" >}}
|
||
{{< api-method-description >}}
|
||
|
||
Updates the current push subscription. Only the data part can be updated. To change fundamentals, a new subscription must be created instead.
|
||
|
||
**Returns:** PushSubscription\
|
||
**OAuth:** User token + `push`\
|
||
**Version history:**
|
||
|
||
- 2.4.0 - added
|
||
|
||
{{< endapi-method-description >}}
|
||
{{< api-method-spec >}}
|
||
{{< api-method-request >}}
|
||
{{< api-method-headers >}}
|
||
{{< api-method-parameter name="Authorization" type="string" required=true >}}
|
||
Bearer <user token>
|
||
{{< endapi-method-parameter >}}
|
||
{{< endapi-method-headers >}}
|
||
{{< api-method-form-data-parameters >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[follow\]" type="boolean" required=false >}}
|
||
Receive follow notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[favourite\]" type="boolean" required=false >}}
|
||
Receive favourite notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[reblog\]" type="boolean" required=false >}}
|
||
Receive reblog notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[mention\]" type="boolean" required=false >}}
|
||
Receive mention notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< api-method-parameter name="data\[alerts\]\[poll\]" type="boolean" required=false >}}
|
||
Receive poll notifications?
|
||
{{< endapi-method-parameter >}}
|
||
{{< endapi-method-form-data-parameters >}}
|
||
{{< endapi-method-request >}}
|
||
{{< api-method-response >}}
|
||
{{< api-method-response-example httpCode=200 >}}
|
||
{{< api-method-response-example-description >}}
|
||
|
||
Updating a PushSubscription to only receive mention alerts
|
||
{{< endapi-method-response-example-description >}}
|
||
|
||
|
||
```javascript
|
||
{
|
||
"id": 328183,
|
||
"endpoint": "https://yourdomain.example/listener",
|
||
"alerts": {
|
||
"follow": false,
|
||
"favourite": false,
|
||
"reblog": false,
|
||
"mention": true,
|
||
"poll": false
|
||
},
|
||
"server_key": "BCk-QqERU0q-CfYZjcuB6lnyyOYfJ2AifKqfeGIm7Z-HiTU5T9eTG5GxVA0_OH5mMlI4UkkDTpaZwozy0TzdZ2M="
|
||
}
|
||
```
|
||
{{< endapi-method-response-example >}}
|
||
{{< api-method-response-example httpCode=404 >}}
|
||
{{< api-method-response-example-description >}}
|
||
|
||
No existing PushSubscription for this token
|
||
{{< endapi-method-response-example-description >}}
|
||
|
||
|
||
```javascript
|
||
{
|
||
"error": "Record not found"
|
||
}
|
||
```
|
||
{{< endapi-method-response-example >}}
|
||
{{< endapi-method-response >}}
|
||
{{< endapi-method-spec >}}
|
||
{{< endapi-method >}}
|
||
{{< api-method method="delete" host="https://mastodon.example" path="/api/v1/push/subscription" title="Remove current subscription" >}}
|
||
{{< api-method-description >}}
|
||
|
||
Removes the current Web Push API subscription.
|
||
|
||
**Returns:** none\
|
||
**OAuth:** User token + `push`\
|
||
**Version history:**
|
||
|
||
- 2.4.0 - added
|
||
|
||
{{< endapi-method-description >}}
|
||
{{< api-method-spec >}}
|
||
{{< api-method-request >}}
|
||
{{< api-method-headers >}}
|
||
{{< api-method-parameter name="Authorization" type="string" required=true >}}
|
||
Bearer <user token>
|
||
{{< endapi-method-parameter >}}
|
||
{{< endapi-method-headers >}}
|
||
{{< endapi-method-request >}}
|
||
{{< api-method-response >}}
|
||
{{< api-method-response-example httpCode=200 >}}
|
||
{{< api-method-response-example-description >}}
|
||
|
||
PushSubscription successfully deleted or did not exist previously
|
||
{{< endapi-method-response-example-description >}}
|
||
|
||
|
||
```javascript
|
||
{}
|
||
```
|
||
{{< endapi-method-response-example >}}
|
||
{{< endapi-method-response >}}
|
||
{{< endapi-method-spec >}}
|
||
{{< endapi-method >}}
|
||
|
||
|