# info.description
Send web push notifications and manage subscribers and tags. Human-readable documentation: https://pushnotificationservice.com/docs/rest-api. Delivery is asynchronous: a send returns queued (or scheduled) and the counts fill in as workers deliver; poll the notification for live counts.

# paths./sites/{siteId}/notifications.get.summary
List campaigns, newest first (25 per page).

# paths./sites/{siteId}/notifications.post.description
Omitting both tags and subscribers targets all active subscribers. 429 means the send would exceed the monthly push quota (or the rate limit).

# paths./sites/{siteId}/notifications.post.responses.201.description
Campaign created; status is queued or scheduled.

# paths./sites/{siteId}/notifications/{notificationId}.get.summary
Fetch one campaign with live delivery counts.

# paths./sites/{siteId}/tags.get.summary
List the site's tags with subscriber counts.

# components.securitySchemes.bearerAuth.description
API key created in the dashboard, shown once. Format: pns_ + 12-character prefix + _ + 40-character secret. Rate limit: 120 requests/min per key.

# components.parameters.siteId.description
Site ID from the dashboard. Sites not owned by the key's account 404.

# components.responses.404.description
Site or resource not found, or not owned by your account.

# components.responses.429.description
Rate limit hit, or monthly push quota exceeded.

# components.schemas.SendNotificationRequest.properties.url.description
Click destination. Tracked via signed redirect.

# components.schemas.SendNotificationRequest.properties.tags.description
Target subscribers with any of these tags. Mutually exclusive with subscribers.

# components.schemas.SendNotificationRequest.properties.subscribers.description
Target specific subscriber IDs. Mutually exclusive with tags.

# components.schemas.SendNotificationRequest.properties.scheduled_for.description
Future time to send. Omit to send immediately.

# components.schemas.Notification.properties.target.description
Targeting spec; null means all active subscribers.

# components.schemas.Notification.properties.counts.description
delivered = push-service acceptance; displayed = shown on a device.

# components.schemas.Subscriber.properties.meta.description
Browser, OS, and locale reported at subscription.