> ## Documentation Index
> Fetch the complete documentation index at: https://developers.aimtell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Generic Functions

> Javascript generic functions for Aimtell

## Check Permissions

```javascript theme={null}
_aimtellCheckPermissions()
```

**Description:** Checks visitor's push notification permissions

**Params:** N/A

**Response:** `(str)` - `granted`, `default` or `denied`

***

## Supports Push

```javascript theme={null}
_aimtellSupportsPush()
```

**Description:** Checks to see if visitor's browser supports push notifications

**Params:** N/A

**Response:** `(boolean)`

***

## Get Subscriber ID

```javascript theme={null}
_aimtellGetSubscriberID()
```

**Description:** Grabs the active visitor's subscriber id. If none exists, one is generated.

**Params:** N/A

**Response:** promise, `(str)` subscriber id

***

## Get Push Token

```javascript theme={null}
_aimtellGetPushToken()
```

**Description:** Pulls the device push token from the current visitor. This is delivered as a javascript promise.

**Params:** N/A

**Response:** promise, `(str)` device token

***

## Get Subscriber ID From Token

```javascript theme={null}
_aimtellGetSubscriberIDFromToken(token)
```

**Description:** Grabs visitors subscriber id based on push token

**Params:**

* `token` - required. browser push token

**Response:** promise, `(obj)` result, uid

***

## Get Subscriber Attributes

```javascript theme={null}
_aimtellGetSubscriberAttributes()
```

**Description:** Grabs current website subscriber's attributes.

<Warning>
  **Note:** As custom attributes may contain information which an Aimtell website owner may not want easily viewable, this function by default is locked as a security measure. You must specifically request our team to unlock it for your account.
</Warning>

***

## Show Push Prompt

```javascript theme={null}
_aimtellPrompt()
```

**Description:** If custom push prompt exists, show it, else load native push prompt

**Params:** N/A

**Response:** `null`

***

## Force Push Prompt

```javascript theme={null}
_aimtellForcePrompt()
```

**Description:** Force shows the custom optin, even if previously denied.

**Params:** N/A

**Response:** `null`

***

## Get Notifications

```javascript theme={null}
_aimtellGetNotifications()
```

**Description:** Returns the subscriber's notifications, most recent first.

**Params:** N/A

**Response:** promise, `(array)` of notification objects with the following fields:

* `title` - notification title
* `body` - notification body
* `icon` - icon URL
* `link` - destination URL
* `read` - `(boolean)` `true` if read, `false` if unread
* `timestamp` - used to target a single notification in the functions below

***

## Mark Notifications Read

```javascript theme={null}
_aimtellMarkNotificationsRead(timestamp)
```

**Description:** Marks notifications as read. Pass a `timestamp` to mark a single notification, or call with no arguments to mark all notifications as read.

**Params:**

* `timestamp` - optional. The `timestamp` value from a `_aimtellGetNotifications()` response item. Pass it through unchanged.

**Response:** promise, `(obj)` `{ updated: <count> }`

***

## Mark Notifications Unread

```javascript theme={null}
_aimtellMarkNotificationsUnread(timestamp)
```

**Description:** Marks notifications as unread. Pass a `timestamp` to target one, or omit to mark all notifications as unread.

**Params:**

* `timestamp` - optional. The `timestamp` value from a `_aimtellGetNotifications()` response item. Pass it through unchanged.

**Response:** promise, `(obj)` `{ updated: <count> }`

***

## Delete Notifications

```javascript theme={null}
_aimtellDeleteNotifications(timestamp)
```

**Description:** Deletes notifications. Pass a `timestamp` to delete a single notification, or omit to delete all of the subscriber's notifications.

**Params:**

* `timestamp` - optional. The `timestamp` value from a `_aimtellGetNotifications()` response item. Pass it through unchanged.

**Response:** promise, `(obj)` `{ deleted: <count> }`
