# Push Notifications

Push notification token management

## Register a token for push notifications

> Registers a push notification token for the authenticated user.\
> The type of the token determines the handler used to send notifications.  Currently supported types are \`iOS\` and \`Android\`, but other values are allowed  for future compatibility.\
> Both Android and iOS handlers use params to define the language of the notifications, default "en". Supported languages as of 2025-11 are English (en), Finnish (fi), Swedish (sv), French (fr), Russian (ru), and German (de).\
> Rate limits apply per user account, IP address and total calls. <br>

```json
{"openapi":"3.0.3","info":{"title":"Ruuvi Cloud - User API","version":"1.0.0"},"tags":[{"name":"Push-Notifications","description":"Push notification token management"}],"servers":[{"url":"https://network.ruuvi.com"},{"url":"https://testnet.ruuvi.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{"Success":{"type":"object","required":["result","data"],"properties":{"result":{"type":"string","enum":["success"]},"data":{"description":"Endpoint-specific payload"}}},"Error":{"type":"object","required":["result","error","code"],"properties":{"result":{"type":"string","enum":["error"]},"error":{"type":"string","description":"Human-readable explanation"},"code":{"type":"string","description":"Machine-readable primary error code"},"sub_code":{"nullable":true,"type":"string","description":"Optional secondary code useful for client logic"}}}}},"paths":{"/push-register":{"post":{"summary":"Register a token for push notifications","description":"Registers a push notification token for the authenticated user.\nThe type of the token determines the handler used to send notifications.  Currently supported types are `iOS` and `Android`, but other values are allowed  for future compatibility.\nBoth Android and iOS handlers use params to define the language of the notifications, default \"en\". Supported languages as of 2025-11 are English (en), Finnish (fi), Swedish (sv), French (fr), Russian (ru), and German (de).\nRate limits apply per user account, IP address and total calls. \n","operationId":"pushRegister","tags":["Push-Notifications"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token","type","name"],"properties":{"token":{"type":"string","description":"Push notification token, used to authenticate at the push notification services"},"type":{"type":"string","description":"Device platform type","enum":["iOS","Android"]},"name":{"type":"string","description":"Human-readable device name"},"data":{"type":"object","description":"Additional nested data for the device. Handler-specific.","additionalProperties":true},"params":{"type":"object","description":"Optional parameters for push notification behavior. Handler-specific.","additionalProperties":true}}}}}},"responses":{"200":{"description":"Push notification token registered successfully","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Success"},{"type":"object","properties":{"data":{"type":"object","required":["id","lastAccessed","name"],"properties":{"id":{"type":"integer","format":"int64","description":"Unique identifier for the registered push token"},"lastAccessed":{"type":"integer","format":"int64","description":"Unix timestamp of last access"},"name":{"type":"string","description":"Human-readable device name"}}}}}]}}}},"400":{"description":"INVALID - Missing or malformed fields   (`token`, `type`, or `name` missing; invalid type value)\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"UNAUTHORIZED - Auth token missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"FORBIDDEN - User does not have permission to register push tokens","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests - Rate limit exceeded Rate limits apply per user account, IP address and total calls.  Try again later.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```
