> This is part 1 of 2 of the full documentation (pages 1–100 of 111).
> The content is paginated: fetch every part to see all of it.
> Next part: https://docs.globalalerting.com/llms-full.txt/1
> Page index: https://docs.globalalerting.com/llms.txt

# Help Center

<h2 align="center">Welcome to the GAP Help Centre</h2>

<p align="center">Browse the topics below or contact the Support Desk for assistance.</p>

<p align="center"><a href="mailto:support@two10degrees.com" class="button primary" data-icon="comments-question-check">Contact Support Desk</a> </p>

<table data-view="cards"><thead><tr><th align="center"></th><th align="center"></th><th align="center"></th><th data-hidden data-type="content-ref"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td align="center"><h4><i class="fa-eye">:eye:</i></h4></td><td align="center"><h3><a href="/monitoring-and-response"><strong>Monitoring &#x26; Response</strong></a></h3></td><td align="center">Get help with the basics of monitoring and response</td><td><a href="https://www.gitbook.com/">https://www.gitbook.com/</a></td><td><a href="https://docs.globalalerting.com/monitoring-and-response/">Monitoring &amp; Response</a></td></tr><tr><td align="center"><h4><i class="fa-gear">:gear:</i></h4></td><td align="center"><h3><a href="/administration">Planning &#x26; <strong>Administration</strong></a></h3></td><td align="center">Learn more about managing and administering GAP</td><td><a href="https://www.gitbook.com/">https://www.gitbook.com/</a></td><td><a href="https://docs.globalalerting.com/administration/">Administration</a></td></tr><tr><td align="center"><h4><i class="fa-tablet-rugged">:tablet-rugged:</i></h4></td><td align="center"><h3><a href="/devices"><strong>Device Guides</strong></a></h3></td><td align="center">Set up your devices to work with GAP</td><td><a href="https://www.gitbook.com/">https://www.gitbook.com/</a></td><td><a href="https://docs.globalalerting.com/devices/">Device Guides</a></td></tr><tr><td align="center"><h4><i class="fa-code">:code:</i></h4></td><td align="center"><h3><a href="https://docs.globalalerting.com/web-api/"><strong>Web API</strong></a></h3></td><td align="center">Learn how to integrate third-party services with GAP</td><td><a href="https://www.gitbook.com/">https://www.gitbook.com/</a></td><td><a href="https://docs.globalalerting.com/web-api/">Web API</a></td></tr><tr><td align="center"><h4><i class="fa-star">:star:</i></h4></td><td align="center"><h3><a href="/release-notes"><strong>Release Notes</strong></a></h3></td><td align="center">Find out what's new</td><td><a href="https://www.gitbook.com/">https://www.gitbook.com/</a></td><td><a href="https://docs.globalalerting.com/release-notes/">Release Notes</a></td></tr><tr><td align="center"><h4><i class="fa-wave-pulse">:wave-pulse:</i></h4></td><td align="center"><h3><a href="http://status.globalalerting.com/">Service <strong>Status</strong></a></h3></td><td align="center">View service status and subscribe to notifications</td><td><a href="https://www.gitbook.com/">https://www.gitbook.com/</a></td><td><a href="http://status.globalalerting.com/">http://status.globalalerting.com/</a></td></tr></tbody></table>


# Supported Browsers

The most recent two production versions that were available at the time of the last GAP release are supported for the following browsers:

* Google Chrome
* Mozilla Firefox
* Microsoft Edge (Chromium version)

The most recent production version that was available at the time of the last GAP release is supported for the following browsers:

* Apple Safari

## Google Chrome Users

GAP Portal alert sounds may not play if the user hasn't interacted with the page after login.

If this is a potential issue in your environment, you may want to try running Chrome with a different auto-play policy.

{% hint style="info" %}
After making this change, websites other than GAP will be able to automatically play content without the user needing to have first interacted with the page.
{% endhint %}

To do this, modify your usual Google Chrome shortcut (right click and then click "Properties") and append the following to the "Target" text box:

```
 --autoplay-policy=no-user-gesture-required
```

<figure><img src="https://662936150-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwQdMZbff4yc7pAzdq4xZ%2Fuploads%2F2eqtWaiLuV1O6J5opHVv%2FGoogleChromeShortcut.png?alt=media&amp;token=a6669cc5-9afc-49b8-b2f8-e9aabb06f04b" alt=""><figcaption></figcaption></figure>


# Monitoring & Response

## Introduction

This section will explain how to get started with GAP from the perspective of an operator - someone responsible for monitoring devices, responding to alerts and query data.


# Your Profile

## Updating Basic Details

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "My Profile".
3. Click "Name, Photo & Citizenship".
4. Enter your name in the "First Name", "Middle Name" and "Last Name" text boxes.
5. Optionally, select your gender from the "Gender" drop-down list.
6. Click "Select Photo" to upload a photo from your computer.
7. Select the relevant country / countries from the "Citizenship" drop-down list.
8. Optionally, select your date of birth from the "Date of Birth" picker.
9. Click the "OK" button.

## Updating Phone Number(s)

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "My Profile".
3. Click "Address and Phone".
4. Enter up to three phone numbers in the "Primary Phone Number", "Secondary Phone Number" and "Tertiary Phone Number" text boxes.
5. Click the "OK" button.

## Updating Emergency Contact Information

The information on this form will be provided to first responders in the event of an emergency or the result of an event notification.

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "My Profile".
3. Click "Emergency Planning and Contacts".
4. Enter any relevant emergency information into the "Emergency Planning" text box.
5. Enter the name, e-mail address and phone number for up to two emergency contacts into the "Name", "Email Address" and "Phone" text boxes for the "First Contact" and "Second Contact" sections.
6. Click the "OK" button.


# Your Account

## Changing Your Password

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "My Profile".
3. Click "Change Password".
4. Enter your current password in the "Current Password" text box.
5. Enter your new password in the "New Password" text box.
6. Confirm your new password by entering it in the "Re-enter New Password" text box.
7. Click the "OK" button.

## Setting Up 2-Step Verification

2-Step Verification requires users to provide a verification code in addition to their user name and password when logging in.

This code is supplied either via SMS or the Google Authenticator app.

The Google Authenticator app can be downloaded on the [iOS](https://apps.apple.com/gb/app/google-authenticator/id388497605) and [Android](https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2) app stores.

2-Step Verification may be required or optional for your tenant.  The setup experience will differ in each case.

### Setting Up 2-Step Verification (Required Mode)

When 2-Step Verification is required for a tenant and a user is logging in for the first time, they will be asked to choose between using SMS or the Google Authenticator app just after they have logged in.

To use Google Authenticator:

1. Click "Setup 2-Step Verification via Google Authenticator".
2. Start the Google Authenticator app and scan the code shown on the screen. If you can't scan the code for whatever reason, click "Show text key instead".
3. Enter the verification code provided and click "OK".

To use SMS:

1. Click "Setup 2-Step Verification via SMS".
2. Enter a phone number in the text box.
3. Click "OK".
4. Enter the verification code provided and click "OK".

### Setting Up 2-Step Verification (Optional Mode)

When 2-Step Verification is optional, a user will need to set up 2-Step Verification themselves via the GAP Portal.

To use Google Authenticator:

1. In the GAP Portal, click "Options".
2. Click "My Profile".
3. Click "2-step Verification".
4. Click "Setup 2-Step Verification via Google Authenticator"
5. Start the Google Authenticator app and scan the code shown on the screen. If you can't scan the code for whatever reason, click the "Show text key instead" button.
6. Enter the verification code provided
7. Click the "Enable 2-Step Verification" button.

To use SMS:

1. In the GAP Portal, click "Options".
2. Click "My Profile".
3. Click "2-step Verification".
4. Click "Setup 2-Step Verification via SMS".
5. Enter a phone number in the "Enter your phone number" text box.
6. Click the "Send Verification Code" button.
7. Enter the verification code provided.
8. Click the "Enable 2-Step Verification" button.


# Your Settings

## Configuring Regional Settings

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "My Profile".
3. Click "Portal Settings".
4. Select a time zone in which all dates and times will be displayed using the "Time Zone" drop-down list.
5. Select a date time format in which all dates and times will be displayed using the "Date & Time Format (and Language, if available)" drop-down list.
6. Select a display language from the "Language" drop-down list.
7. Select a co-ordinate format from the "Position Format" drop-down list.
8. Click the "OK" button.

## Configuring Map Settings

See [Configuring Map Settings](/monitoring-and-response/visualisation/configuring-map-settings#setting-default-map-view).

## Configuring Alert Settings

You can configure an audible sound and the notification behaviour when there is a new "Critical" alert or a device enters "Emergency" state.

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "My Profile".
3. Click "Portal Alert Settings".
4. Select whether on screen alerts hide automatically after 10 seconds or whether they need to be closed manually via the "On Screen Alerts" section options.
5. Select your preferred alert sound settings using the "Audible Sound Alerts" drop-down list.
6. If you select "Play once for new alerts", "Play every minute until all alerts acknowledged" or "Play continuously until all alerts acknowledged", select a sound to play using the "Sound File" drop-down list.
7. Click the "OK" button.


# Devices Explained

A device represents an object that sends messages to and / or receives messages from GAP.

A device can be anything that has a mechanism for sending and / or receiving data (including satellite phones, GSM (cellular) trackers, smartphone apps, etc.).

Like all data in GAP, a device resides in a tenant.

## Device Types

Each device is of a specific device type.  A device type is usually a manufacturer / model combination (e.g. Iridium Extreme, Garmin inReach Mini, NAL SHOUT Nano, etc.).

The type of the device determines its features (e.g. text messaging, remote configuration, address book synchronisation, etc.).

See the [list of supported device types](/monitoring-and-response/working-with-devices/supported-devices) for more information.

## Bearers

A bearer is the means by which a device sends its data to GAP - for example, Iridium SBD, Globalstar, UDP, TCP, etc.

A device type will support one or more bearers.

## Messages

A message is a piece of data sent from a device to GAP (or from GAP to a device).

Messages sent from a device to GAP are known as Mobile Originated (MO) messages.

Messages sent to a device by GAP are known as Mobile Terminated (MT) messages.

## Message Types

Message Types determine the meaning (and sometimes the content) of messages.

For example, a message of type "FreeText" will typically contain a text message composed by the device user or GAP Portal operator.  A message of type "CheckIn" will represent a proactive notification from the device user that they are OK (and will typically contain position data).

<br>


# Supported Devices

GAP supports a wide range of devices.

{% hint style="info" %}
If you do not see one of the device types listed below when creating a new device on GAP, please contact your administrator.
{% endhint %}

## Smartphone Apps

* [GAP Guardian for Android](/devices/gap-guardian-app/gap-guardian-v3-user-guide)
* [GAP Guardian for iOS](/devices/gap-guardian-app/gap-guardian-v3-user-guide)

## Messengers & Phones

* Honeywell Osprey Personal Tracker
* NAL SHOUT
* NAL SHOUT gsm
* [NAL SHOUT Nano](https://naltec.com/products/shout-nano/)
* [NAL SHOUT ts](https://naltec.com/products/nal-shout-ts/)
* Globalstar SPOT
* Globalstar SPOT Gen3
* [Globalstar SPOT Trace](https://www.globalstar.com/en-us/products/spot-for-business/spot-trace)
* Garmin inReach SE
* Garmin inReach for Smartphones
* Garmin inReach Explorer
* Garmin inReach Explorer+
* Garmin inReach Montana
* Garmin inReach Mini Series
* Garmin GPSMap 66i
* Garmin GPSMap 67i
* Garmin GPSMAP Series
* Garmin Mini Plus Series
* [Iridium Extreme](https://www.iridium.com/products/iridium-extreme-satellite-phone)
* IsatPhone 2
* IsatPhone Pro
* [Lars Thrane LT-3100](https://thrane.eu/lt-3100-iridium/)
* [Thuraya XT-PRO](https://www.thuraya.com/en/products-list/land-voice/thuraya-xt-pro)

## Personal Trackers

* [Iridium GO!](https://www.iridium.com/products/iridium-go)
* NAL SHOUT ns
* MasTrack MT-121
* Prime AT Lite
* Prime PT
* Queclink GL300
* Queclink GL300MG
* [Queclink GL300W](https://www.queclink.com/product/gl300w/)
* [Queclink GL320](https://www.queclink.com/product/gl320mg/)
* SANAV CT-24
* SANAV MU-201

## Asset Trackers

* Digital Matter Oyster
* Digital Matter Oyster LoRaWAN
* Digital Matter Oyster2
* [Digital Matter Oyster3](https://www.digitalmatter.com/devices/oyster3/)
* [Digital Matter Yabby3-4G](https://www.digitalmatter.com/devices/yabby3/)
* Digital Matter Yabby Edge
* Digital Matter Yabby GPS
* Digital Matter G62 LoRaWAN
* Geoforce
* Trackimo
* [GTTS-2000](https://www.gtts.eu/gtts-2000.html)
* GTTS-2000Bi
* GTTS-2000E-LW
* [GTTS-3000](https://www.gtts.eu/gtts-3000.html)
* GTTS-3000 Hybrid
* Skywave IDP-680
* [Iridium Edge Solar](https://www.iridium.com/products/iridium-edge-solar)
* Osprey M2M
* Osprey Bay
* Osprey T.M.C.
* QPro
* [Ground Control RockFLEET](https://www.groundcontrol.com/product/rockfleet-marine-tracking-messaging-device/)
* [Ground Control RockSTAR](https://www.groundcontrol.com/product/rockstar-global-satellite-messaging-tracking/)
* Globalstar SmartOne B
* [Globalstar SmartOne C](https://www.globalstar.com/en-us/products/iot/smartone-c)
* [Globalstar SmartOne Solar](https://www.globalstar.com/en-ap/products/iot/smartone-solar)
* Yellowbrick

## Vehicle Trackers

* GO7 IVMS
* [GO9 IVMS](https://www.geotab.com/au/products/vehicle-tracking-device/)
* Digital Matter Dart
* Digital Matter Dart 2
* [Digital Matter G100](https://support.digitalmatter.com/en_US/g100)
* Xirgo XT2000

## Base Stations & Terminals

* Cobham EXPLORER 510
* Cobham EXPLORER 540
* Cobham EXPLORER 700
* Cobham EXPLORER 710
* Inmarsat BGAN
* Grace SuperCell SC500
* Grace Sled 4G LTE
* Grace Sled 4G LTE / Iridium SBD
* [hiiro](https://www.novasystems.com/file/kkz0192oj/hiiro%20-%20A4%20Flyer%20\(IP65\).pdf)

## Pendants

* Grace Pendant SuperCELL 500
* [Grace Pendant TPASS 3](https://www.graceindustries.com/safety-products/lone-worker-safety/fixed-facility/tpass-3-am-buddy-system/)
* [Grace Pendant TPASS 5](https://www.graceindustries.com/safety-products/firefighter/tpass-accountability/tpass-5/)
* [Grace Pendant WorkForce 1](https://www.graceindustries.com/safety-products/workforce/)
* [Grace Pendant WorkForce 2](https://www.graceindustries.com/safety-products/workforce/)
* [hiiro Pendant](https://www.novasystems.com/file/kkz0192oj/hiiro%20-%20A4%20Flyer%20\(IP65\).pdf)

## Generic Devices

* [Cell Phone](/devices/telephony/cell-phone)
* [Dumb Phone](/devices/telephony/dumb-phone)


# Inbox, Outbox & Device Log

Each device record in GAP has an Inbox, Outbox (if it supports MT messaging) and Device Log.

## Inbox

The Inbox displays messages that the device has sent to GAP (MO Messages).

{% hint style="info" icon="user-lock" %}
Access to the inbox requires the **View All Inbox Messages** permission.  Otherwise, only the most recent message is shown.
{% endhint %}

### Viewing the Inbox

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose inbox you want to view.
3. Under the "Context" section, click "Inbox".

### Searching & Filtering the Inbox

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose inbox you want to view.
3. Under the "Context" section, click "Inbox".
4. Click "Inbox Options".
5. To search for specific text in a message, enter the text in the "Search in Messages" text box and click the <i class="fa-searchengin">:searchengin:</i> (magnifying glass) icon.
6. To show a specific number of messages in the Inbox (up to 5,000), select a value from the "Select number of messages or choose Start Date and End Date" drop-down list.  Alternatively, select a start and end date using the "Start Date" and "End Date" date and time pickers.
7. To filter the Inbox based on accuracy of position data in messages, use the "Show messages based on position accuracy" drop-down list.
8. To filter the Inbox based on message type, use the "Show messages based on message type" drop-down list.
9. Click the "Reload" button.

### Configuring Inbox View Settings

{% hint style="info" %}
Changing these settings applies to your user account only.
{% endhint %}

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose Inbox you want to configure.
3. Under the "Context" section, click "Inbox".
4. Click "Inbox Options".
5. Click the "Setup" button.
6. Check the "Setup Custom Fields" check box under "Template Options".
7. Remove unwanted fields using the <i class="fa-trash-can">:trash-can:</i> (trash) icon.
8. Re-order fields by clicking and dragging the <i class="fa-grip-vertical">:grip-vertical:</i> (grip) icon as required.
9. Configure custom number formats using the <i class="fa-file-code">:file-code:</i> (code) icon.  You can also use this option to not show zero values.
10. Click the "+ Add Field" button to add new fields.
11. Enter a label for the field in the "Label (optional)" text box.
12. Select a value to display in that field using the drop-down list on the right-hand side of the "Label (optional)" text box.
13. Repeat steps 11 and 12 as required.
14. Click "OK".

### Exporting Inbox Messages

To perform a one-off export of MO messages:

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose inbox you want to view.
3. Under the "Context" section, click "Inbox".
4. Click "Inbox Options".
5. Filter the inbox as required (see [#searching-and-filtering-the-inbox](#searching-and-filtering-the-inbox "mention")).
6. Click the "Export" button and select a format in which to export the data.
7. Save the file when prompted by your web browser.

### Deleting Inbox Messages

{% hint style="info" icon="user-lock" %}
This action requires the **Delete Messages** permission.
{% endhint %}

{% hint style="warning" %}
Deleting messages is irreversible.

Messages cannot be deleted whilst a device is in an emergency or monitored state, or has a check-in schedule enabled.
{% endhint %}

#### Deleting Specific Messages

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose messages you want to delete.
3. Under the "Context" section, click "Inbox".
4. Click "Inbox Options".
5. Click the "Delete" button.
6. Select "Delete selected messages" from the "Delete Option" drop-down list.
7. Select each message you want to delete using the check box on the right-hand side of each message tile.
8. Click the "Yes, Delete" button.

#### Deleting Messages for a Time Period

{% hint style="warning" icon="triangle-exclamation" %}
Messages deleted using this functionality are deleted in the background, and thus may still appear in the Inbox after you have completed the procedure below.
{% endhint %}

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose messages you want to delete.
3. Under the "Context" section, click "Inbox".
4. Click "Inbox Options".
5. Click the "Delete" button.
6. Select "Delete messages for interval" from the "Delete Option" drop-down list.
7. Select the start and end date and times for the period using the "Start Date" and "End Date" pickers respectively.
8. Type 'delete' (without the single quotes) into the confirmation text box.
9. Click the "Yes, Delete" button.

## Outbox

The Outbox displays messages that GAP has sent to the device (MT Messages).

{% hint style="info" icon="user-lock" %}
Access to the inbox requires the **Show Device Outbox** permission.
{% endhint %}

{% hint style="info" %}
Only devices of types that support MT messaging will have an outbox.
{% endhint %}

### Viewing the Outbox

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose outbox you want to view.
3. Under the "Context" section, click "Outbox".

### Filtering the Outbox

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose outbox you want to view.
3. Under the "Context" section, click "Outbox".
4. Click "Outbox Options".
5. To show outbox messages sent between a specific period, select a start and end date using the "Start Date" and "End Date" date and time pickers.
6. Click the "Reload Messages" button.

### Exporting Outbox Messages

To perform a one-off export of MT messages:

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose outbox you want to view.
3. Under the "Context" section, click "Outbox".
4. Click "Outbox Options".
5. Filter the inbox as required (see [#filtering-the-outbox](#filtering-the-outbox "mention")).
6. Click the "Export" button.
7. Save the file when prompted by your web browser.

## Device Log

The Device Log is an audit trail of activity relating to a device.  It typically stores the following kinds of information:

* Event notifications that have been triggered by the device
* Actions performed on the device (such as acknowledging an emergency, assigning the device to another user, etc.)
* Ad-hoc text notes

### Viewing the Device Log

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose log you want to view.
3. Under the "Context" section, click "Device Log".

### Filtering the Device Log

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose log you want to view.
3. Under the "Context" section, click "Device Log".
4. Click "Device Log Options".
5. To show log messages sent between a specific period, select a start and end date using the "Start Date" and "End Date" date and time pickers.
6. Click the "Reload" button.

### Exporting the Device Log

To perform a one-off export of MT messages:

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose log you want to view.
3. Under the "Context" section, click "Device Log".
4. Click "Device Log Options".
5. Filter the inbox as required (see [#filtering-the-device-log](#filtering-the-device-log "mention")).
6. Click the "Export" button.
7. Save the file when prompted by your web browser.

### Adding Text Notes

{% hint style="info" icon="user-lock" %}
This action requires the **Add Device Log Notes** permission.
{% endhint %}

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click on the device whose log you want to annotate.
3. Under the "Context" section, click "Device Log".
4. Click "Add Note to Device Log".
5. Enter a note in the "Note Text" text box.
6. Click the "Add Note" button.


# Monitoring & Check-Ins

There are two approaches to monitoring offered by GAP:

* Monitoring (also called "Monitor Me")
* Check-In Schedules

The fundamental difference between the two is that monitoring mode is primarily user-initiated and configured, whereas Check-In Schedules are administrator-initiated and policy-based.

A check-in is a message sent from a device that indicates that the user is OK, and fulfils the requirements of monitoring mode or the Check-In Schedule.

If the user misses a check-in, their device will be marked as overdue in the GAP Portal.

## Monitoring / Monitor Me

A user can initiate monitoring mode / Monitor Me when they want to be asked to check in at a certain interval (which they can configure).

See [GAP Guardian v3 User Guide](/devices/gap-guardian-app/gap-guardian-v3-user-guide#monitor-me) for more information on using and configuring Monitor Me in the GAP Guardian smartphone app.

## Check-In Schedules

A Check-In Schedule is a series of times at which a user must send a check-in message.

Schedules can be configured to specify an interval (for example, every 6 hours) or certain times on certain days (for example, at 09:00 and 13:30 on Mondays and Wednesdays).

Schedules must first be created, then assigned to devices or groups and finally enabled.

See [Managing Check-In Schedules](/administration/notifications/managing-check-in-schedules) for more information on creating and assigning Check-In Schedules via the GAP Admin app.

### Enabling / Disabling Check-In Schedules

#### Enabling / Disabling Check-In Schedules for a Device

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click the name of the device whose schedule you want to enable.
3. Under the "Device Actions" section, click "Manage Check-In Schedule".
4. Check or uncheck the "Check-In Schedule Enabled" check box as required.

#### Enabling / Disabling Check-In Schedules for a Group

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "Groups".
3. Click the name of the group whose schedule you want to enable.
4. Click "Check-In Schedule".
5. Click "Enable Check-In Schedule" or "Disable Check-In Schedule" as required.
6. Click the "Save" button.

## Manual Check-Ins <a href="#howtoperformamanualcheckin" id="howtoperformamanualcheckin"></a>

You can manually check in a user (for example, if their device is not working) via the "Manual Check-In" button under the "Check-In Actions" section:

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click the name of the device you wish to manually check in.
3. Under the "Check-In Actions" section, click "Manual Check-In".
4. If you want to include a location with the manual check-in, click "Include Location" and click on the map or search for a location via the "Search" box.
5. Click the "OK" button.
6. Click the "Yes, Check In" button.

## Overdue Alerts

When a device goes overdue, the device enters an "overdue" state in the GAP Portal.

If there are event notifications configured at the device or tenant-level relating to overdue alerts, these will be triggered.  See [Event Notifications Reference](/administration/notifications/event-notifications-reference#check-in) and [Managing Event Notifications](/administration/notifications/managing-event-notifications) for more information.

If a check-in message is received whilst a device is in an overdue state, the device state will clear.


# Device Actions & Commands

Some devices support receiving messages from GAP (MT messaging).  This allows GAP to send text messages and / or commands to the device.

{% hint style="info" %}
Support for text messaging and other forms of remote commands is dependent on the type of the device.
{% endhint %}

Messages and commands can be sent to individual devices or groups of devices.

## Individual Devices

### Sending a Text Message

The most common type of MT messaging capability is text messaging.

To send a text message to a device:

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click the name of the device you want to message.
3. Under the "Context" section, click "Send Text Message".
4. Enter a message in the text box.
5. If the device in question supports SMS and has a phone number added to its device record, you can force the message to be sent as an SMS by checking the "Force SMS" check box.
6. Click the "Send" button.

#### Conversation View

If you are likely to be sending multiple messages (e.g. engaged in a conversation with a device user), you may find it more convenient to use the Conversation View.

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click the name of the device you want to message.
3. Under the "Context" section, click "Conversation".
4. Enter your message in the "Enter your message" text box at the bottom of the screen.
5. Click the "Send" button.

### Requesting a Location Update

Many devices support being polled for a location update.

To request a current location from a device:

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click the name of the device from which you want to request a location.
3. Under the "Context" section, click "Request Location".

When you request a location update, the device is marked as "Pending Location Request".  This status is cleared when a response is received from the device.

### Requesting a Check-In

Many devices support requesting the user to check in.  If the user does not check in within the specified period, the device is marked overdue.

To request a check-in from a device:

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click the name of the device from which you want to request a check-in.
3. Under the "Check-In Actions" section, click "Request Check-In".
4. Select the period after which the device will be marked as overdue using the "Check-In Period" drop-down list.
5. Click the "Send" button.

## Groups

### Sending a Text Message

{% hint style="info" %}
If one or more devices in a group do not support text messaging, the message will not be received by those devices.
{% endhint %}

To send a text message to a group of devices:

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "Groups".
3. Click the name of the group you want to message.
4. Click "Send Text Message".
5. Enter a message in the text box.
6. If any of the devices in the group support SMS and has a phone number added to its device record, you can force the message to be sent as an SMS by checking the "Force SMS" check box.
7. Click the "Send" button.

### Requesting a Location Update

{% hint style="info" %}
If one or more devices in a group do not support location requests, the request will not be received by those devices.
{% endhint %}

To request a current location from a group of devices:

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "Groups".
3. Click the name of the group from which you want to request a check-in.
4. Click "Request Location".
5. Click the "Send" button.

When you request a location update, the devices are marked as "Pending Location Request".  This status is cleared when a response is received from the device.

### Requesting a Check-In

{% hint style="info" %}
If one or more devices in a group do not support check-in requests, the request will not be received by those devices.
{% endhint %}

To request a current location from a group of devices:

1. In the GAP Portal, click "Options" from the banner menu.
2. Click "Groups".
3. Click the name of the group from which you want to request a check-in.
4. Click "Request Check-In".
5. Select the period after which the device will be marked as overdue using the "Check-In Period" drop-down list.
6. Click the "Send" button.

When you request a location update, the device is marked as "Pending Location Request".  This status is cleared when a response is received from the device.

## Broadcasting

You can also send text messages and location requests to large numbers of devices using criteria such as country, tag value or being within a particular zone via the "Send Text Message" and "Send Check-In Request" feature (under "Broadcast") on the GAP Portal home screen.

See [Message Broadcast](/monitoring-and-response/working-with-devices/message-broadcast) for more information.

## App Administration

See the [GAP Guardian v3 Administration Guide](/devices/gap-guardian-app/gap-guardian-v3-administration-guide) for additional information on administering the GAP Guardian smartphone app (including remote configuration).


# Message Broadcast

{% hint style="info" icon="user-lock" %}
This feature requires the **Broadcast** permission.
{% endhint %}

Using the GAP Portal, you can broadcast a text message or a check-in request to one or more devices based on various criteria:

* Location (country, geofence, arbitrary geometry)
* Device tags
* Group membership

You can also broadcast a message to a GAP Distribution List.

{% hint style="warning" icon="triangle-exclamation" %}
Not all device types support text messaging or check-ins.

In order for devices to receive broadcast messages they must be on and have cellular / Wi-Fi / satellite coverage.

Messages may be truncated according to the capabilities of the receiving device.
{% endhint %}

When sending a text message, GAP selects the most appropriate channel for each device. For example, for a SHOUT Nano, the text message is sent via the Iridium network. For apps, a push notification is used. Some devices (such as apps) allow you to select a different channel (i.e. SMS).

## Broadcasting Text Messages

### Broadcast By Country

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Text Message" under "Broadcast".
3. Select a country from the "Send to all devices in the selected country" drop-down list.
4. Type your message in the box provided.
5. For text messages, if you want to default to SMS (for devices that support it), select the "Use SMS (where supported)" check box.
6. Click the "Send" button.

### Broadcast by Custom Circle / Polygon

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Text Message" under "Broadcast".
3. Select "Custom Circle or Polygon" from the "Delivery Type" drop-down list.
4. Select either "Circle" or "Polygon" depending on the geometry you wish to use to select devices.
5. Click on the map and draw the shape in question.
6. Type your message in the box provided.
7. For text messages, if you want to default to SMS (for devices that support it), select the "Use SMS (where supported)" check box.
8. Click the "Send" button.

### Broadcast by Device Tag

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Text Message" under "Broadcast".
3. Select "Devices with tag" from the "Delivery Type" drop-down list.
4. Select a tag name from the next drop-down list.
5. Select either "equals" (to perform a text match) or "is not empty" (to match all devices with the specified tag).
6. If you have selected "equals", select a value from the next drop-down list.
7. Type your message in the box provided.
8. For text messages, if you want to default to SMS (for devices that support it), select the "Use SMS (where supported)" check box.
9. Click the "Send" button.

### Broadcast by User Tag

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Text Message" under "Broadcast".
3. Select "Devices assigned to users with tag" from the "Delivery Type" drop-down list.
4. Select a tag name from the next drop-down list.
5. Select either "equals" (to perform a text match) or "is not empty" (to match all users with the specified tag).
6. If you have selected "equals", select a value from the next drop-down list.
7. Type your message in the box provided.
8. For text messages, if you want to default to SMS (for devices that support it), select the "Use SMS (where supported)" check box.
9. Click the "Send" button.

### Broadcast by Geofence

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Text Message" under "Broadcast".
3. Select "Geofence" from the "Delivery Type" drop-down list.
4. Select a geofence name from the "Send to all devices in selected geofence" drop-down list.
5. Type your message in the box provided.
6. For text messages, if you want to default to SMS (for devices that support it), select the "Use SMS (where supported)" check box.
7. Click the "Send" button.

### Broadcast by Group

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Text Message" under "Broadcast".
3. Select "Group" from the "Delivery Type" drop-down list.
4. Select the group names from the "Send to all devices in selected groups" list.
5. Type your message in the box provided.
6. For text messages, if you want to default to SMS (for devices that support it), select the "Use SMS (where supported)" check box.
7. Click the "Send" button.

### Broadcast by Distribution List

{% hint style="info" %}
Sending a message to a distribution list will send the message to all recipients (using all contact methods) specified in that distribution list.
{% endhint %}

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Check-In Request" under "Broadcast".
3. Select "Distribution List" from the "Delivery Type" drop-down list.
4. Select the distribution list names from the "Send to all Contact Details in selected Distribution Lists" list.
5. Select how long before the device will be marked overdue using the "Check-In Period" drop-down list.
6. Click the "Send" button.

## Broadcasting Check-In Requests

### Broadcast By Country

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Check-In Request" under "Broadcast".
3. Select a country from the "Send to all devices in the selected country" drop-down list.
4. Select how long before the device will be marked overdue using the "Check-In Period" drop-down list.
5. Click the "Send" button.

### Broadcast by Custom Circle / Polygon

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Check-In Request" under "Broadcast".
3. Select "Custom Circle or Polygon" from the "Delivery Type" drop-down list.
4. Select either "Circle" or "Polygon" depending on the geometry you wish to use to select devices.
5. Click on the map and draw the shape in question.
6. Select how long before the device will be marked overdue using the "Check-In Period" drop-down list.
7. Click the "Send" button.

### Broadcast by Device Tag

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Check-In Request" under "Broadcast".
3. Select "Devices with tag" from the "Delivery Type" drop-down list.
4. Select a tag name from the next drop-down list.
5. Select either "equals" (to perform a text match) or "is not empty" (to match all devices with the specified tag).
6. If you have selected "equals", select a value from the next drop-down list.
7. Select how long before the device will be marked overdue using the "Check-In Period" drop-down list.
8. Click the "Send" button.

### Broadcast by User Tag

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Check-In Request" under "Broadcast".
3. Select "Devices assigned to users with tag" from the "Delivery Type" drop-down list.
4. Select a tag name from the next drop-down list.
5. Select either "equals" (to perform a text match) or "is not empty" (to match all users with the specified tag).
6. If you have selected "equals", select a value from the next drop-down list.
7. Select how long before the device will be marked overdue using the "Check-In Period" drop-down list.
8. Click the "Send" button.

### Broadcast by Geofence

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Check-In Request" under "Broadcast".
3. Select "Geofence" from the "Delivery Type" drop-down list.
4. Select a geofence name from the "Send to all devices in selected geofence" drop-down list.
5. Select how long before the device will be marked overdue using the "Check-In Period" drop-down list.
6. Click the "Send" button.

### Broadcast by Group

1. From the GAP Portal Dashboard screen, click "Home".
2. Click "Send Check-In Request" under "Broadcast".
3. Select "Group" from the "Delivery Type" drop-down list.
4. Select the group names from the "Send to all devices in selected groups" list.
5. Select how long before the device will be marked overdue using the "Check-In Period" drop-down list.
6. Click the "Send" button.


# Filters

You can use filters to configure what information is displayed on the GAP Portal.

Filters can be based on one or more of the following:

* Tenants
* Groups
* Collections
* Specific devices
* Device type
* Device state
* Device status
* Device tags
* Last message date

Filters you create apply to your user account only.

## Applying Filters

When a filter is applied, the filter icon in the GAP Portal banner menu will show a red <i class="fa-circle-info">:circle-info:</i> (info) icon and a grey banner will appear with the name of the filter.

To apply an existing filter:

1. In the GAP Portal, click "Filters" from the banner menu.
2. Select an existing filter from the "Filters" drop-down list.  To clear a filter, select "None" or click the <i class="fa-x">:x:</i> (close) icon on the grey "Filter applied" banner.

## Adding Tenant Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Tenant, Group or Collection".
3. Select "Tenant" from the "Select Tenant, Group or Collection" drop-down list.
4. Select the tenant from the next drop-down list.
5. If you want to include sub-tenants of the selected tenant, check the "Include Subtenants" check box.
6. Click the "OK" button.

## Adding Group Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Tenant, Group or Collection".
3. Select "Group" from the "Select Tenant, Group or Collection" drop-down list.
4. Select the group from the next drop-down list.
5. Click the "OK" button.

## Adding Collection Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Tenant, Group or Collection".
3. Select "Collection" from the "Select Tenant, Group or Collection" drop-down list.
4. Select the collection from the next drop-down list.
5. Click the "OK" button.
6. To save the filter, click the "Save" button.
7. Enter a name in the "Name" text box.
8. Click the "OK" button.

## Adding Device Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Devices".
3. Select the specific devices you want to filter from the list.  You can search using the "Search for devices and check those to be included" text box.
4. Click the "OK" button.

## Adding Device Type Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Device Type".
3. Select the specific device types you want to filter from the list.
4. Click the "OK" button.

## Adding Device State Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Device State".
3. Select the specific device states you want to filter from the list.
4. Click the "OK" button.

## Adding Device Status Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Device Status".
3. Select the specific device status you want to filter from the list.
4. Click the "OK" button.

## Adding Device Tag Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Device Tag".
3. Enter the tag name in the "Tag Name" text box.
4. To filter based on whether the tag value is set to any value, select "Devices Where Tag Value Is Set".  To filter based on specific tag values, select "Devices Where Tag Contains Value" and enter the value in the "Tag Value" text box.
5. Click the "OK" button.

## Adding Last Message Date Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Click "Filter by Message Date".
3. Select a time unit from the "Time Unit" drop-down list.
4. Enter the number in the "Tag Period" text box.
5. Click the "OK" button.

## Saving Filters

Once you have created your filter, with it applied:

1. Click the "Save" button.
2. Enter a name in the "Name" text box.
3. Click the "OK" button.

## Deleting Filters

1. In the GAP Portal, click "Filters" from the banner menu.
2. Select the filter you want to delete from the "Filter" drop-down list.
3. Click the "Delete" button.
4. Click the "Yes, Delete" button.


# Configuring Map Settings

## Map Types & Options

### Changing Map Type

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click the "Map Types" tab.
3. Select a map type from the list.

### Setting Default Map View

You configure the default location and zoom level for the GAP Portal map by setting your default viewport.  The map will always revert back to the location / zoom level you set when navigating around the Portal.

1. In the GAP Portal, click "Options".
2. Click "My Profile".
3. Click "Portal Settings".
4. From the "Custom Default Viewport" drop-down list, select "Use Current Map as New Custom Viewport".
5. Pan / zoom map as required.
6. Click the "OK" button.

To revert the default viewport:

1. In the GAP Portal, click "Options".
2. Click "My Profile".
3. Click "Portal Settings".
4. From the "Custom Default Viewport" drop-down list, select "Use Default Viewport".
5. Click the "OK" button.

### Configuring Track Display Settings

1. In the GAP Portal, click "Options".
2. Click "My Profile".
3. Click "Portal Settings".
4. Select the line style you want to use from the "Track Line Style" drop-down list.
5. Click the "OK" button.

### Configuring Icon Display Settings

1. In the GAP Portal, click "Options".
2. Click "My Profile".
3. Click "Portal Settings".
4. To turn device labels on or off, check or uncheck the "Show Device Labels on Map" check box as required.
5. To turn device icon clustering on or off, check or uncheck the "Enable Map Icon Clustering" check box as required.
6. To turn intelligence (travel alert) icon clustering on or off, check or uncheck the "Insights Intelligence Clustering" check box as required.
7. Click the "OK" button.

### Configuring Animation

By default, devices in an emergency state are shown on the GAP Portal map with a pulsating animation.  This can be turned off for your user account as follows:

1. In the GAP Portal, click "Options".
2. Click "My Profile".
3. Click "Portal Settings".
4. Uncheck the "Enable Emergency Animation" check box.
5. Click the "OK" button.

## Overlays

The following GAP data can be overlayed on the GAP Portal map to provide additional context:

* Facilities
* Geofences
* Points of Interest
* KML Layers

### Viewing Facilities

{% hint style="info" icon="user-lock" %}
This feature requires the **View Facilities** permission.
{% endhint %}

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click the "Overlays" tab.
3. Check the "Show Facilities" check box.

### Viewing Geofences

{% hint style="info" icon="user-lock" %}
This feature requires the **View Geofences** permission.
{% endhint %}

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click the "Overlays" tab.
3. Check the "Show Geofences" check box.

### Viewing Points of Interest

{% hint style="info" icon="user-lock" %}
This feature requires the **View Points of Interest** permission.
{% endhint %}

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click the "Overlays" tab.
3. Check the "Show Points of Interest" check box.
4. Optionally, if you want to view labels for Points of Interest, check the "Show Points of Interest Labels" check box.

### Viewing KML Layers

{% hint style="info" icon="user-lock" %}
This feature requires the **View KML Files** permission.
{% endhint %}

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click the "Overlays" tab.
3. Check the "Show KML Layers" check box.

## Weather

### Viewing Weather Maps

{% hint style="info" %}
Some weather maps offer limited geographical coverage.
{% endhint %}

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click the "Weather" tab.
3. Under the "Forecast" section, select a map layer.
4. Under the "Map Overlays" section, select whether the map you chose should show current conditions ("Now") or the forecasted conditions 24, 48 or 72 hours in the future.

### Viewing Weather Forecasts

You can view the current conditions and a forecast for a specific location using the Weather Information Tool.

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click the "Weather" tab.
3. Click "Weather Information Tool".
4. Drop the pin on the map at the desired location.

## Tools & Controls

### Using Map Tools

The following map tools are available:

* Search Map Location
* Slide Time Filter
* Measure Distance
* Time Information

#### Searching for Locations

Use the Search Map Location to find specific places.

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click "Search Map Location".  The tool will appear in the top left-hand side of the map, next to the "Map Settings" button.
3. Enter the search term in the text box and click the <i class="fa-magnifying-glass">:magnifying-glass:</i> (search) icon or select a result from the list.

#### Slide Time Filtering

Use the Slide Time Filter tool to quickly show or hide devices on the map, based on when they last sent a message to GAP.

{% hint style="info" %}
The Slide Time Filter tool only filters what is displayed on the map, it does not change what is listed in the Devices screen or other places in the GAP Portal.
{% endhint %}

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click "Slide Time Filter".  The tool will appear at the bottom centre of the map.
3. Drag the slider to the right to filter out devices that haven't reported for the specified period of time.
4. To close the tool, click the <i class="fa-x">:x:</i> (close) button.

#### Time Information

Use the Time Information tool to show the local time and time zone for a specific place on the map.

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click "Time Information".
3. Click on a place on the map.
4. The current time at that location, applicable time zone and UTC time will be shown at the bottom centre of the map.
5. Drag the <i class="fa-clock">:clock:</i> (clock) icon to another place on the map to see the time information for that location.
6. To close the tool, click the <i class="fa-x">:x:</i> (close) button.

### Turning Map Controls On / Off

{% hint style="warning" icon="triangle-exclamation" %}
Use of certain map controls can slow down map performance when there are a large number of devices displayed.
{% endhint %}

The following map controls are available:

| Control           | Description                                                                                                                                                                     |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Zoom Buttons      | Click to zoom in or out.  Displayed at the top right-hand side corner of the map, under "Map Settings".                                                                         |
| Map Scale         | Displays the map scale at the bottom left-hand side of the map.                                                                                                                 |
| Mini Map          | Displays a smaller map in the top right-hand corner at a lesser zoom level for providing context.                                                                               |
| Edge Markers      | Display arrows pointing in the direction of nearby devices not shown in the current map view.  Clicking on the arrow moves the map to the devices in question.                  |
| Mouse Position    | Displays the current location (latitude / longitude) of the mouse pointer in various co-ordinate formats, as well as the current UTC time and map zoom level.                   |
| Quick Zoom Button | Click to zoom the map to the most appropriate level to display all devices.  Displayed at the top right-hand side corner of the map, under "Map Settings" and the zoom buttons. |
| Refresh Timer     | Displays a countdown timer in the bottom right-hand corner of the map to show when the next data refresh is due.                                                                |
| Grid              | Displays a latitude / longitude grid.                                                                                                                                           |
| Day And Night     | Overlays a shadow showing where it is currently nighttime.                                                                                                                      |
| Map Legend        | Displayed by clicking on the <i class="fa-circle-question">:circle-question:</i> icon on the bottom right-hand side of the map.                                                 |

To change which map controls are displayed:

1. In the GAP Portal, click the <i class="fa-bars">:bars:</i> icon on the top left-hand side of the map.
2. Click the "Controls" tab.
3. Toggle the relevant control(s) on or off as required.


# Sending Messages

{% hint style="info" icon="user-lock" %}
These actions require the **View Comms Web App**, **View Messages** and **Send Messages** permissions.
{% endhint %}

## Sending Freeform Messages

1. From the GAP Comms home screen, click the "Create New Message" button.
2. Enter a name for the message in the "Name" text box.  This is not shown to recipients, it is used to identify the message in the GAP Comms user interface.
3. Select a message bearer the message will be used for using the "Bearer" picker.
4. If e-mail is selected as a bearer, select a priority for the messages from the "Priority" picker.
5. Click the "Next" button.
6. Enter a subject in the "Subject" text box.
7. Enter the message text into the text box / rich text editor and format it as desired.  You can use the parentheses button (<i class="fa-brackets-curly">:brackets-curly:</i>) to insert placeholders (such as recipient name, e-mail address and phone number) into the body of the resulting message.
8. Click the "Next" button.
9. Select whether the messages should require an acknowledgement of receipt, the selection of a response, or no action, using the "Request Response" picker.
10. If "Responses" is selected, add a response option (e.g. "Yes", "No", "Maybe") into the "Response Options" text box.
11. Click the "+ Add Response" button to add more.
12. Repeat steps 10 and 11 as required.
13. If you want to the message to be re-sent if the recipient does not respond, check the "Enable Resending" check box.
14. Select how many times the message should be re-sent using the "Number of Resends" drop-down list.
15. Select how frequently the message should be re-sent using the "Delay Between Each Resend" drop-down list.
16. Click the "Next" button.
17. Select the criteria used to determine the recipients of the message from the "Conditions" section.
18. Click the "+ Add Condition" button to add more.
19. Repeat steps 17 and 18 as required.
20. Preview the recipients using the "View Recipients" button.
21. Click the "Next" button.
22. If you want to schedule the message so it is sent later, check the "Send Later" check box.
23. Select a date and time to send the message using the "Schedule Time" picker.
24. Select a time zone for the date and time you just entered from the "Time Zone" drop-down list.
25. Click the "Next" button.
26. Review the summary and, if correct, click the "Send" button.  If you want to test the message by sending it to a single recipient, click the "Send Test Message" button, enter an e-mail address and click "Send".  You can optionally save the message as a draft to send later using the "Save Draft" button.

{% embed url="<https://vimeo.com/1181409947?fe=ci&fl=sv&share=copy>" %}

## Sending Messages Using Templates

{% hint style="info" %}
For information on creating templates for GAP Comms Messages, see [Managing Comms Templates](/administration/comms/managing-comms-templates).
{% endhint %}

1. From the GAP Comms home screen, click the "Create New Message" button.
2. Enter a name for the message in the "Name" text box.  This is not shown to recipients, it is used to identify the message in the GAP Comms user interface.
3. Select the template to base the message upon using the "Template" drop-down list.
4. If e-mail is selected as a bearer, select a priority for the messages from the "Priority" picker.
5. Click the "Next" button.
6. If required, amend the subject using the "Subject" text box.
7. If required, amend the text the "Message" text box / rich text editor and format it as desired.  You can use the parentheses button (<i class="fa-brackets-curly">:brackets-curly:</i>) to insert placeholders (such as recipient name, e-mail address and phone number) into the body of the resulting message.
8. Click the "Next" button.
9. If required, amend whether the messages should require an acknowledgement of receipt, the selection of a response, or no action, using the "Request Response" picker.
10. If "Responses" is selected, add a response option (e.g. "Yes", "No", "Maybe") into the "Response Options" text box.
11. Click the "+ Add Response" button to add more.
12. Repeat steps 10 and 11 as required.
13. If you want to the message to be re-sent if the recipient does not respond, check the "Enable Resending" check box.
14. Select how many times the message should be re-sent using the "Number of Resends" drop-down list.
15. Select how frequently the message should be re-sent using the "Delay Between Each Resend" drop-down list.
16. Click the "Next" button.
17. Select the criteria used to determine the recipients of the message from the "Conditions" section.
18. Click the "+ Add Condition" button to add more.
19. Repeat steps 17 and 18 as required.
20. Preview the recipients using the "View Recipients" button.
21. Click the "Next" button.
22. If you want to schedule the message so it is sent later, check the "Send Later" check box.
23. Select a date and time to send the message using the "Schedule Time" picker.
24. Select a time zone for the date and time you just entered from the "Time Zone" drop-down list.
25. Click the "Next" button.
26. Review the summary and, if correct, click the "Send" button.  If you want to test the message by sending it to a single recipient, click the "Send Test Message" button, enter an e-mail address and click "Send".  You can optionally save the message as a draft to send later using the "Save Draft" button.

{% embed url="<https://vimeo.com/1181426380?fe=ci&fl=sv&share=copy>" %}

## Sending Follow-Up Messages

See [Managing Messages](/monitoring-and-response/mass-comms/managing-messages#send-follow-up-messages).


# Managing Messages

## Duplicating Messages

{% hint style="info" icon="user-lock" %}
This action requires the **View Comms Web App**, **View Messages** and **Send Messages** permissions.
{% endhint %}

If you want to manually re-send a message you have sent previously, you can duplicate it.

1. In GAP Comms, click "Messages" from the left-hand side navigation menu.
2. Click on the "Sent" tab.
3. Click on the message you want to duplicate.
4. Click the "Duplicate Message" button.
5. Enter a name for the message in the "Name" text box.  This is not shown to recipients, it is used to identify the message in the GAP Comms user interface.
6. Select the template to base the message upon using the "Template" drop-down list.
7. If e-mail is selected as a bearer, select a priority for the messages from the "Priority" picker.
8. Click the "Next" button.
9. If required, amend the subject using the "Subject" text box.
10. If required, amend the text the "Message" text box / rich text editor and format it as desired.  You can use the parentheses button (<i class="fa-brackets-curly">:brackets-curly:</i>) to insert placeholders (such as recipient name, e-mail address and phone number) into the body of the resulting message.
11. Click the "Next" button.
12. If required, amend whether the messages should require an acknowledgement of receipt, the selection of a response, or no action, using the "Request Response" picker.
13. If "Responses" is selected, add a response option (e.g. "Yes", "No", "Maybe") into the "Response Options" text box.
14. Click the "+ Add Response" button to add more.
15. Repeat steps 13 and 11 as required.
16. If you want to the message to be re-sent if the recipient does not respond, check the "Enable Resending" check box.
17. Select how many times the message should be re-sent using the "Number of Resends" drop-down list.
18. Select how frequently the message should be re-sent using the "Delay Between Each Resend" drop-down list.
19. Click the "Next" button.
20. Select the criteria used to determine the recipients of the message from the "Conditions" section.
21. Click the "+ Add Condition" button to add more.
22. Repeat steps 20 and 21 as required.
23. Preview the recipients using the "View Recipients" button.
24. Click the "Next" button.
25. If you want to schedule the message so it is sent later, check the "Send Later" check box.
26. Select a date and time to send the message using the "Schedule Time" picker.
27. Select a time zone for the date and time you just entered from the "Time Zone" drop-down list.
28. Click the "Next" button.
29. Review the summary and, if correct, click the "Send" button.  If you want to test the message by sending it to a single recipient, click the "Send Test Message" button, enter an e-mail address and click "Send".  You can optionally save the message as a draft to send later using the "Save Draft" button.

## View Message Delivery & Response Statistics

When a message has been sent, you can use the "Messages" screen in GAP Comms to view delivery statistics and responses, and compose follow-up e-mails as required.

The statistics available to you will depend on:

* The bearer
* Whether read receipts or specific responses were requested

For example, for an e-mail message with read receipts configured, you will be able to see:

* Whether the message was sent, delivered or failed to be delivered
* Whether the recipient clicked on the link in the e-mail to confirm they have read the message

If specific responses have been requested, you will additionally be able to see what response each recipient selected.

To view delivery and response statistics:

1. In GAP Comms, click "Messages" from the left-hand side navigation menu.
2. Then click on the message you want to view.

<figure><img src="https://1486684288-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FEm7IfGQ9bdvWnFgyJqFD%2Fuploads%2Fw9WhSPxAyQAM4XJje0e1%2FScreenshot%202026-04-09%20140836.png?alt=media&amp;token=abcd4fee-1168-4ded-8f4f-7295afc6a336" alt=""><figcaption><p>Message delivery and response statistics</p></figcaption></figure>

## Sending Follow-Up Messages

You can send follow-up messages to recipients who have responded a certain way (e.g. requested assistance) or have not responded at all.

1. In GAP Comms, click "Messages" from the left-hand side navigation menu.
2. Click on the message you want to view.
3. Under the "Responses" section, click on the <i class="fa-message-dots">:message-dots:</i> (message) icon next to the response you want to follow up with (e.g. the recipients who did not read the message, etc.).
4. If required, amend the name for the message in the "Name" text box.  This is not shown to recipients, it is used to identify the message in the GAP Comms user interface.
5. Optionally, select the template to base the message upon using the "Template" drop-down list.
6. If e-mail is selected as a bearer, select a priority for the messages from the "Priority" picker.
7. Click the "Next" button.
8. If required, amend the subject using the "Subject" text box.
9. If required, amend the text the "Message" text box / rich text editor and format it as desired.  You can use the parentheses button (<i class="fa-brackets-curly">:brackets-curly:</i>) to insert placeholders (such as recipient name, e-mail address and phone number) into the body of the resulting message.
10. Click the "Next" button.
11. If required, amend whether the messages should require an acknowledgement of receipt, the selection of a response, or no action, using the "Request Response" picker.
12. If "Responses" is selected, add a response option (e.g. "Yes", "No", "Maybe") into the "Response Options" text box.
13. Click the "+ Add Response" button to add more.
14. Repeat steps 12 and 13 as required.
15. If you want to the message to be re-sent if the recipient does not respond, check the "Enable Resending" check box.
16. Select how many times the message should be re-sent using the "Number of Resends" drop-down list.
17. Select how frequently the message should be re-sent using the "Delay Between Each Resend" drop-down list.
18. Click the "Next" button.
19. Preview the recipients using the "View Recipients" button.
20. Click the "Next" button.
21. If you want to schedule the message so it is sent later, check the "Send Later" check box.
22. Select a date and time to send the message using the "Schedule Time" picker.
23. Select a time zone for the date and time you just entered from the "Time Zone" drop-down list.
24. Click the "Next" button.
25. Review the summary and, if correct, click the "Send" button.  If you want to test the message by sending it to a single recipient, click the "Send Test Message" button, enter an e-mail address and click "Send".  You can optionally save the message as a draft to send later using the "Save Draft" button.

## Deleting Draft Messages

{% hint style="info" icon="user-lock" %}
This action requires the **Delete Messages** permission.
{% endhint %}

{% hint style="warning" %}
Deleting messages is irreversible.
{% endhint %}

1. In GAP Comms, click "Messages" from the left-hand side navigation menu.
2. Click on the "Draft" tab.
3. Click on the <i class="fa-trash-can">:trash-can:</i> (trash) icon next to the message you want to delete.
4. Click the "Delete" button in the confirmation dialog.


# Running Reports

{% hint style="info" icon="user-lock" %}
These actions require the **View Reports Web App** permission.

Access to data included in reports will depend on other permissions assigned to your user role.
{% endhint %}

## Running a Report

{% hint style="info" %}
It may take time to load large datasets.  Consider using smaller datasets or using [Report Schedules](/monitoring-and-response/reporting/managing-report-schedules).
{% endhint %}

1. From the GAP Reports app home screen, click the name of the report you want to run.  You can filter by report type using the "Filter" options on the right-hand side of the page.
2. Select your report parameters and filters from the right-hand side "Filter" section.
3. Click the "Get Report" button.
4. Once loaded, you can sort the output and apply additional report filters using the <i class="fa-ellipsis-vertical">:ellipsis-vertical:</i>button next to each column.
5. To view more results or page through the data, using the paging controls at the bottom of the data table.

## Exporting Report Data

1. From the GAP Reports app home screen, click the name of the report you want to run.
2. Select your report parameters and filters from the right-hand side "Filter" section.
3. Click the "Get Report" button.
4. Click the "Export" button at the top right-hand side of the report data table.
5. Select an export format from the drop-down list.
6. Save the resulting file to your local computer.

{% embed url="<https://vimeo.com/1182505522?fe=ci&fl=sv&share=copy>" %}


# Managing Report Jobs

Report Jobs allow you to query large amounts of message data in the background.

Common use cases include:

* Finding messages that are within a specific geofence
* Filtering MO messages by specific message properties
* Producing data suitable for visualisation using the GAP Reports app's "Visualise" functionality

{% hint style="info" icon="user-lock" %}
These activities require the **View Reports Web App** and **Manage Report Jobs** permissions.

Access to data included in reports will depend on other permissions assigned to your user role.
{% endhint %}

There are two steps to running a Report Job:

* Preparing the dataset for querying
* Running the Report Job

## Preparing Datasets

{% hint style="warning" icon="triangle-exclamation" %}
When creating a dataset, live messages data is accessed, and this can create a performance overhead at scale.  Consider running the dataset preparation job outside peak times.

Dataset preparation may take some time to complete, depending on the period selected and the number of messages to query.
{% endhint %}

1. In the GAP Reports app, click the "Report Jobs" button on the left-hand side menu.
2. Click "Explore Prepared Messages Data".
3. If the time period you want to query is not available, click the "+" button.
4. Enter a name for the dataset in the "Name" text box.
5. Enter a description in the "Description" text box.
6. Select a tenant from the "Tenant" drop-down list.
7. Select a date period using the "From" and "To" pickers.
8. Click the "Submit" button.

When the status of the job is shown as "Completed", you can set up your report job.

## Running Report Jobs

1. In the GAP Reports app, click the "Report Jobs" button on the left-hand side menu.
2. Click the "Add Report Job" button.
3. Click the type of report job you want to run.
4. Enter a name for the dataset in the "Name" text box.
5. Enter a description in the "Description" text box.
6. Select a tenant from the "Tenant" drop-down list.
7. Select a date period using the "From" and "To" pickers.
8. Depending on the type of job you selected, other parameters may be available.  For example, if you selected "MO Messages in Geofence", you will need to select a geofence from the "Geofence" drop-down list.
9. Click the "Submit" button.
10. When the status of the job is shown as "Completed", you can download the data using the <i class="fa-cloud-arrow-down">:cloud-arrow-down:</i> (download) button.

{% embed url="<https://vimeo.com/1182510463?fe=ci&fl=sv&share=copy>" %}


# Managing Report Schedules

Report Schedules allow you to configure a report to run on an interval, and have the results sent to you by e-mail.

{% hint style="info" icon="user-lock" %}
These actions require the **View Reports Web App** and **Manage Report Schedules** permissions.

Access to data included in reports will depend on other permissions assigned to your user role.
{% endhint %}

## Adding Schedules

1. In the GAP Reports app, click the "Schedules" button on the left-hand side menu.
2. Click the "Add Schedule" button.
3. Select the tenant that the report will apply to from the "Tenant" drop-down list.
4. Enter a name for the Report Schedule in the "Report Name" text box.
5. Enter a description in the "Description" text box.
6. To enable the schedule upon creation, check the "Schedule Enabled" check box.
7. Select how often the report will run using the "Frequency" drop-down list.
8. Select when the report will run using the "Run Time" and "Time Zone" drop-down lists.
9. Select or enter the recipients for the report using the "Recipients" text box.
10. Select which report will run using the "Report Type" drop-down list.
11. Select the file format to use for the report from the "Report Format" drop-down list.
12. Select the parameters for the chosen report using the remaining drop-down lists and text boxes.
13. Click the "Submit" button.

{% embed url="<https://vimeo.com/1182504434?fe=ci&fl=sv&share=copy>" %}

## Editing Schedules

1. In the GAP Reports app, click the "Schedules" button on the left-hand side menu.
2. Click the <i class="fa-file-pen">:file-pen:</i> (edit) icon next to the name of the schedule you want to edit.
3. To change the name of the Report Schedule, amend the value in the "Report Name" text box.
4. To change the description, amend the value in the "Description" text box.
5. To enable / disable the schedule, check or uncheck the "Schedule Enabled" check box as required.
6. To change how often the report will run, amend the value in the "Frequency" drop-down list.
7. To change when the report will run, amend the values the "Run Time" and / or "Time Zone" drop-down lists.
8. To change the recipients for the report, amend the values in the "Recipients" text box.
9. To change which report will run, amend the value in the "Report Type" drop-down list.
10. To change the file format to use for the report, amend the value in the "Report Format" drop-down list.
11. Select the parameters for the chosen report using the remaining drop-down lists and text boxes.
12. Click the "Submit" button.

## Deleting Schedules

1. In the GAP Reports app, click the "Schedules" button on the left-hand side menu.
2. Click the <i class="fa-trash-can">:trash-can:</i> (delete) icon next to the name of the schedule you want to delete.
3. Click the "OK" button at the confirmation dialog.


# Administration

## Introduction

This section will explain how to administer GAP - setting up access control, provisioning devices, managing rules and notifications and review logs.


# Access Control Concepts

GAP is a multi-tenant platform.

Data is stored in a central repository, separated by logical identifiers using the concept of tenants.

## Tenants

A tenant is a container for GAP data - this includes users, devices, geofences, rules and event other tenants.

Tenants act as security boundaries and are organised into a hierarchy.  Think of it as trees in a forest, with branches and leaves but no shared roots.

The root tenant in each hierarchy is called the top-level tenant.  Child tenants are called sub-tenants.

{% hint style="warning" icon="triangle-exclamation" %}
Once created, tenants cannot be moved to other places in the tenant hierarchy.  We recommend designing your tenant structure prior to implementation and keeping it as simple as possible.
{% endhint %}

See [Managing Tenants](/administration/access-control/managing-tenants) for more information.

## Users

A user represents a person with some level of access to GAP.

A user account resides in a tenant.  By default, users in a sub-tenant cannot view objects in a parent tenant (unless that object has been specifically shared with them).

A user also cannot see data in tenants at the same level in the tenant hierarchy as their own.

See [Managing Users](/administration/access-control/managing-users) for more information.

## User Roles

The role assigned to a user account determines the functionality that user can access.  It also is a factor in determining the objects (e.g. devices, users, etc.) that the user can access.

There are two built-in roles:

* User - has limited permissions (e.g. can view only devices assigned to them).
* Administrator - has the ability to view and manage all objects in their tenant and any sub-tenants.

See [Managing User Roles](/administration/access-control/managing-user-roles) and [User Roles Reference](/administration/access-control/user-roles-reference) for more information.

## Collections

More complex access control requirements can be met through the use of collections.

A collection comprises devices, groups of devices and / or tenants.  These collections are assigned to users, who are in turn granted access to them.

See [Managing Collections](/administration/access-control/managing-collections) for more information.


# Managing Tenants

{% hint style="info" icon="user-lock" %}
This action requires the **View Tenants** and **Add Tenants** permissions
{% endhint %}

## Adding Tenants

1. From the GAP Admin home page, click "Tenants" under the "Access Control" section.
2. Click the "+ Create Tenant" button.
3. Enter the tenant name in the "Tenant name" text box.
4. Select the parent tenant for the new tenant from the "Parent tenant" field.
5. From the "Allowed device types" list, select which device types you wish to make available in this tenant.  Expand the sections using the chevron icon for more granular options.
6. If you wish to enable automatic creation of app device records, check the "App device auto-add" checkbox.
7. Click "Submit"

{% embed url="<https://vimeo.com/1177167515?fe=ci&fl=sv&share=copy>" %}

## Editing Tenants

1. From the GAP Admin home page, click "Tenants" under the "Access Control" section.
2. Click on the name of the tenant you want to edit.
3. To change the tenant name, enter the new name in the "Tenant name" text box.
4. From the "Allowed device types" list, select which device types you wish to make available in this tenant.  Expand the sections using the chevron icon for more granular options.
5. If you wish to enable or disable automatic creation of app device records, check or uncheck the "App device auto-add" check box.
6. To amend the contact information for a tenant, click the "Contacts" tab and enter e-mail addresses (comma-separated) into the "Technical contacts" and "Sales contacts" text boxes.
7. To customise the e-mail address from which notifications are sent, click the "Sender Info" tab and then check the "Customise notifications sender" check box.
8. Enter an e-mail address in the "Email address" text box.
9. Enter a display name (e.g. "GAP Notifications") in the "Display name" text box.
10. Click "Save Changes"

## Deleting Tenants

{% hint style="danger" icon="circle-exclamation" %}
Deleting a tenant is irreversible and can result in significant data loss if used incorrectly.

Deleting a tenant deletes all data therein, including devices, users, geofences, contacts, KML, etc.
{% endhint %}

{% hint style="info" %}
You cannot delete a tenant that has sub-tenants.  Delete any sub-tenants first.
{% endhint %}

1. From the GAP Admin home page, click "Tenants" under the "Access Control" section.
2. Click on the name of the tenant you want to delete.
3. Click the "Delete Tenant" button.
4. Check the confirmation checkboxes.
5. Enter the name of the tenant you want to delete in the confirmation text box.
6. Click "Delete Tenant".


# Managing Collections

Collections (sometimes referred to as Cross-Tenant Collections) are a means of granting users access to a set of devices in a highly configurable manner.  They can contain individual devices, groups and even entire tenants.

You can also create a publicly accessible map for the group of devices, to share on a blog or social media, for example.

{% hint style="info" icon="user-lock" %}
These activities require the **View Collections** and **Manage Collections** permissions.
{% endhint %}

## Adding Collections

1. From the GAP Admin home page, click "Collections" under the "Tenants" section.
2. Click the "+ New Collection" button.
3. Enter a name for the collection in the "New collection name" text box.
4. Select a tenant in which the collection will reside from the "Tenant" drop-down list.
5. Click the "Create New Collection" button.
6. Click the "Manage Devices" button.
7. To add devices to the Collection, select them using the check boxes next to each device in the bottom table and click the "+ Add Selected" button.  To add all devices listed, click the "+ Add All" button.  You can use the "Search in all columns" text box to search for devices by device friendly name or assigned user name.
8. To add groups of devices to the Collection, click the "Groups" tab in the bottom table.  Select the groups you want to add using the check boxes next to each group and click the "+ Add Selected" button.  To add all groups listed, click the "+ Add All" button.  You can use the "Search in all columns" text box to search for groups by name.  You can view the group's membership using the > icon next to the check box.
9. All devices in a tenant may be added to the collection by clicking on the "Tenants" tab.  Select the tenants you want to add using the check boxes next to each group and click the "+ Add Selected" button.  To add all tenants listed, click the "+ Add All" button.  You can use the "Search in all columns" text box to search for tenants by name.  Use the "Include subtenants" check box at the top of the screen to include all existing and any future new sub-tenants for the selected tenants in the membership of the collection.
10. Click the "Save Changes" button.
11. After adding devices, groups and / or tenants, click the "Users" tab.
12. Click the "Manage Users" button.
13. To assign users to the Collection, select them using the check boxes next to each user in the bottom table and click the "+ Add Selected" button.  To add all users listed, click the "+ Add All" button.  You can use the "Search in all columns" text box to search for devices by user name, e-mail address or user role.
14. Click the "Save Changes" button.

{% embed url="<https://vimeo.com/1205626319?share=copy>" %}

## Editing Collections

1. From the GAP Admin home page, click "Collections" under the "Tenants" section.
2. Click on the name of the collection you wish to edit.
3. To change the membership of the collection, click the "Manage Devices" button.
4. Amend the collection membership, as described in [#adding-collections](#adding-collections "mention") steps 7 - 10.
5. Amend the collection assignment, as described in [#adding-collections](#adding-collections "mention") steps 12 - 14.
6. To rename the collection, click "Rename" next to the collection name.
7. Enter a new name into the "Collection Name" text box and click the "Save" button.

## Deleting Collections

1. From the GAP Admin home page, click "Collections" under the "Tenants" section.
2. Click on the name of the collection you wish to delete.
3. Click the "Delete Collection" button.
4. Click the "Delete Collection" button at the confirmation dialog.


# Managing Users

{% hint style="info" icon="user-lock" %}
These actions require the **Add User**, **View Other Users**, **Edit User**, **Tag User** and **Delete User** permissions.
{% endhint %}

## Adding Users

### Adding Individual Users

1. From the GAP Admin home page, click "Users" under the "Access Control" section, then "Add New User".
2. Select the tenant in which the user account will reside using the "Tenant" drop-down list.
3. Enter the user's e-mail address in the "Email" text box.  This will be the user's user name and cannot be changed.
4. To require the user to verify their e-mail address (via a link provided by e-mail), check the "Require email verification" check box.
5. Enter a password in the "Password' check box, or autogenerate one using the "Suggest Password" button.
6. Select a role using the "Search for role" text box.
7. To grant the user access to GAP web applications, check the "Allow access to Web Apps" check box.  Note that this is required for web app access, irrespective of role permissions.
8. Enter the user's first name into the "First name" text box under the "Personal Details" section.
9. Enter the user's last name into the "Last name" text box.
10. Complete other optional fields as required.
11. Click the "Submit" button.

{% embed url="<https://vimeo.com/1179071830?fe=ci&fl=sv&share=copy>" %}

### Adding Users via Spreadsheet

Users can be managed at scale via spreadsheet (CSV or Excel) download / upload.

The following fields should be specified:

* Email \*
* First Name
* Last Name
* User Role \* (must be a name of a User Role that already exists)
* Phone Number (must be a valid phone number)
* Date of Birth
* Trial Account Expiry Date
* Account Disabled (Yes or No)
* Allow Login to Web Apps (Yes or No)
* Tags (for example "First=123,Second=yes")
* Manager Email (must be an email address of a user that already exists or is uploaded in the same file)
* Primary Facility (must be a name of a facility that already exists)
* Secondary Facilities (must be a comma delimited list of facility names that already exist)
* Job Title
* Employee Id
* Delete (enter "Delete" if you want to delete the record)

1. From the GAP Admin home page, click "Users" under the "Access Control" section, then "User Bulk Upload".
2. Drag and drop the spreadsheet file onto the screen or use the "Select Files" button.
3. Assign columns from the spreadsheet to user properties using the "User property" drop-down lists.  If the spreadsheet uses the correct column names, these will be automatically assigned.
4. Click the "Next" button.
5. The data will be validated.  If there are no errors, click the "Next" button to import the users.
6. Click the "Close" button.

## Editing Users

### Editing Individual Users

1. From the GAP Admin home page, click "Users" under the "Access Control" section, then "View All Users".
2. Click on the name of the user you want to edit.
3. Amend the required fields.
4. Click the "Save Changes" button.

### Edit Users via Spreadsheet Upload

1. From the GAP Admin home page, click "Users" under the "Access Control" section, then click "View All Users".
2. Click the "Download" button.
3. Click the "Download as Excel" option.
4. Save the file locally and edit the users contained therein as required.
5. Click the "Upload" button.
6. Drag and drop the spreadsheet file you just edited onto the screen or use the "Select Files" button.
7. Assign columns from the spreadsheet to facility properties using the "User property" drop-down lists.  If the spreadsheet uses the correct column names, these will be automatically assigned.
8. Click the "Next" button.
9. The data will be validated.  If there are no errors, click the "Next" button to import the users.
10. Click the "Close" button.

## Deleting Users

1. From the GAP Admin home page, click "Users" under the "Access Control" section, then click "View All Users".
2. Click the <i class="fa-trash">:trash:</i> (trash can) icon next to the user you want to delete.
3. At the confirmation prompt, click the "Delete User" button to delete the user.


# Default User Settings

The settings that are applied by default to new user accounts are set via the "Default User Settings" screen in GAP Admin.

{% hint style="info" %}
The settings described below apply to new users only.  Changing these settings does not impact existing users.
{% endhint %}

## Configuring Default User Settings

1. From the GAP Admin home page, click "Default User Settings" under the "Access Control" section.
2. Select the tenant whose default settings you wish to configure via the "Change Tenant" button.
3. Set the display language via the "Language" drop-down list.
4. Set the time zone via the "Time zone" drop-down list.
5. Set the date and time format via the "Date & time format" drop-down list.
6. Set the position format via the "Position format" drop-down list.
7. Configure how alert notifications are displayed in the GAP Portal using the "On screen alerts" radio buttons.
8. If you want a sound to be played when an alert is shown in the GAP Portal, check the "Play alert sound" and select the sound from the "Alert sound type" drop-down list.
9. Click the "Save Changes" button.

{% embed url="<https://vimeo.com/1179069765?fe=ci&fl=sv&share=copy>" %}


# Configuring SSO

{% hint style="info" icon="user-lock" %}
This feature requires the **Manage SSO** permission.
{% endhint %}

GAP supports SSO by means of the [Open ID Connect (OIDC) protocol](https://openid.net/).

In order to set up SSO for your tenant(s), you will need the following information:

* Authority URL
* Client IDs (for one web apps and one for the smartphone app - if required)
* Client Secret
* OIDC Discovery URL

To set up SSO for your tenant(s), please contact the Support Desk for assistance.  The Support Desk will provide you with the necessary instructions to configure your Identity Provider (e.g. Entra ID, Okta, etc.).


# Managing User Roles

{% hint style="info" icon="user-lock" %}
These actions require the **View User Roles**, **Add User Role**, **Edit User Role** and **Delete User Role** permissions.
{% endhint %}

## Understanding User Roles

A role is a collection of user permissions that are assigned to user accounts to grant access to functions within GAP. Two roles are available pre-configured:

* Administrator
* User

Users have limited access to functions within GAP and can only manage devices that are explicitly assigned to them.

Administrators have full access to all devices and functions within their tenant (and any sub-tenants).

If you need to set up more granular permissions for your users, you can create your own roles and assign them to your users.

Like other objects within GAP, roles are created within a tenant and are not available outside of that tenant.

## Adding User Roles

{% hint style="info" %}
it is not possible to create roles within greater permissions than are assigned to your own role.
{% endhint %}

1. From the GAP Admin home page, click "Roles" under the "Access Control" section.
2. Click the "+ New Role" button.
3. Enter a name for the role in the "New role name" text box.
4. Select a tenant in which the new role will reside from the "Tenant" drop-down list.
5. If you want the new role to be available for assignment to users in sub-tenants of the selected tenant, leave the "Available to sub-tenants" checkbox checked.
6. Assign the required permissions to the role.  See the [User Roles Reference](/administration/access-control/user-roles-reference) guide for a description of each permission.
7. When complete, click the "Save Changes" button.

## Duplicating User Roles

It can be more efficient to base a new role on an existing one.  Roles can be duplicated so they can act as a baseline for new roles.

1. From the GAP Admin home page, click "Roles" under the "Access Control" section.
2. Click on the name of the role you want to duplicate.
3. Click the "Duplicate Role" button.
4. Enter a name for the role in the "New role name" text box.
5. Select a tenant in which the new role will reside from the "Tenant" drop-down list.
6. If you want the new role to be available for assignment to users in sub-tenants of the selected tenant, leave the "Available to sub-tenants" checkbox checked.
7. Assign the required permissions to the role.  See the [User Roles Reference](/administration/access-control/user-roles-reference) guide for a description of each permission.
8. When complete, click the "Save Changes" button.

{% embed url="<https://vimeo.com/1179068855?fe=ci&fl=sv&share=copy>" %}

## Editing User Roles

1. From the GAP Admin home page, click "Roles" under the "Access Control" section.
2. Click on the name of the role you want to edit.
3. Click the "Duplicate Role" button.
4. To rename the role, click the "Rename" button next to the role name.
5. Enter a new role name and click the "Save" button.
6. If you want to change whether the new role to be available for assignment to users in sub-tenants of the selected tenant, toggle the "Available to subtenants" option as required.
7. Assign the required permissions to the role.  See the [User Roles Reference](/administration/access-control/user-roles-reference) guide for a description of each permission.
8. When complete, click the "Save Changes" button.

## Deleting User Roles

1. From the GAP Admin home page, click "Roles" under the "Access Control" section.
2. Click on the name of the role you want to delete.
3. Click the "Delete Role" button.
4. At the confirmation dialog, click the "Delete Role" button.


# User Roles Reference

This page documents the different permissions that can be assigned to a user role.

## Access Control

### Tenants

#### Tenant Management

| Permission    | Description                                                                      |
| ------------- | -------------------------------------------------------------------------------- |
| View tenants  | Allows the user to view their tenant and any sub-tenants.                        |
| Add tenant    | Allows the user to add tenants.  Requires "View Tenants"                         |
| Edit tenant   | Allows the user to edit (change settings, etc.) for tenants they have access to. |
| Delete tenant | Allows the user to delete tenants (and all devices and users contained therein). |

#### Appearance & Map

| Permission                     | Description                                                                                                                          |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| Change tenant logo and styling | Allows the user to access the "Web App Styling" screen in GAP Admin, permitting them to configure the look and feel of GAP web apps. |
| Change app default settings    | Allows the user to the configure the tenant-level default settings for the GAP smartphone app.                                       |
| Change app default features    | Allows the user to the configure the available features for the GAP smartphone app.                                                  |
| Configure Quick Call           | Allows the user to set up the GAP smartphone app's Quick Call feature.                                                               |

#### Other

| Permission                  | Description                                                                           |
| --------------------------- | ------------------------------------------------------------------------------------- |
| Change contacts             | Allows the user to change the Technical and Sales contacts for a tenant.              |
| Data logs                   | Allows the user to configure data exports via the "Data Exports" screen in GAP Admin. |
| Change allowed device types | Allows the user to change which device types are available for a tenant.              |
| Access billing              | Allows the user to download invoice details via the GAP Web API.                      |
| Configure web hooks         | Allows the user to configure web hooks via the Webhooks screen in GAP Admin.          |
| Manage SSO                  | Allows the user to set up SSO for a tenant via the Manage SSO screen in GAP Admin.    |

### Users

#### User Management

| Permission                        | Description                                                                                                                             |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| View other users                  | Allows the user to view user accounts other than their own.                                                                             |
| Add user                          | <p>Allows the user to create users.<br><br>"View user roles" permission is also required.</p>                                           |
| Edit other user                   | <p>Allows the user to edit user accounts other than their own.<br><br>"View other users" permission is also required.</p>               |
| Change user role                  | <p>Allows the user to change the user role assigned to another user account.<br><br>"Edit other users" permission is also required.</p> |
| Change user trial                 | <p>Allows the user to change the expiry date of a temporary user account.<br><br>"Edit other users" permission is also required.</p>    |
| Delete user                       | Allows the user to delete user accounts assigned user roles with fewer permissions than their own.                                      |
| Add and delete users in this role | Allows the user to create and delete user accounts assigned the same user role as their own.                                            |

#### Other

| Permission                            | Description                                                                                                      |
| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Change user alert contacts            | Allows the user to change the emergency contacts.                                                                |
| Tag user                              | Allows the user to add tags to a user.                                                                           |
| View PIN codes                        | <p>Allows the user to view other users' PIN codes.<br><br>Not required for a user to see their own PIN code.</p> |
| Display external link on Options page |                                                                                                                  |
| Reset 2-step verification             | Allows the user to reset 2-step verification for another user.                                                   |
| Manage other users' API keys          | Allows a user to view and regenerate other users' API keys.                                                      |
| Manage own API key                    | Allows a user to view and regenerate their own API key.                                                          |

### Roles

#### Role Management

| Permission       | Description                                                                                                         |
| ---------------- | ------------------------------------------------------------------------------------------------------------------- |
| View user roles  | Allows the user to view user role definitions via the "Roles" screen in GAP Admin.                                  |
| Add user role    | Allows the user to create new user roles with fewer permissions than their own via the "Roles" screen in GAP Admin. |
| Edit user role   | Allows the user to edit roles with fewer permissions than their own via the "Roles" screen in GAP Admin.            |
| Delete user role | Allows the user to delete user roles with fewer permissions than their own via the "Roles" screen in GAP Admin.     |

### Collections

#### Collection Management

| Permission         | Description                                             |
| ------------------ | ------------------------------------------------------- |
| View collections   | Allows the user to view collections.                    |
| Manage collections | Allows the user to create, edit and delete collections. |

## Devices

### Devices

#### Device Access

| Permission             | Description                                                                                                                               |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| All                    | Allows the user to view all devices to which they have access.                                                                            |
| All in emergency state | Allows the user to view all devices to which they have access that are currently in an emergency state or have been in the last 24 hours. |
| Own device only        | Allows the user to view only devices assigned to their user account.                                                                      |

#### Device Management

| Permission     | Description                                                                  |
| -------------- | ---------------------------------------------------------------------------- |
| Add device     | Allows the user to create devices.                                           |
| Add own device | Allows the user to create devices assigned solely to their own user account. |
| Edit device    | Allows the user to edit devices to which they have access.                   |
| Delete device  | Allows the user to delete devices to which they have access.                 |

#### Messaging

| Permission                | Description                                                                                                                        |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Remotely configure device | Allows the user to change the configuration of a device via the GAP Portal (e.g. set tracking interval, etc.)                      |
| Message device            | Allows the user to send messages that do not change the configuration of the device (e.g. text messages, location requests, etc.). |
| Broadcast                 | Allows the user to use the Broadcast feature in the GAP Portal.                                                                    |
| View inbox messages       | Allows the user to view the device's inbox via the GAP Portal.                                                                     |
| Show device outbox        | Allows the user to view the device's outbox via the GAP Portal.                                                                    |
| Show conversation view    | Allows the user to view the device's conversation screen via the GAP Portal.                                                       |
| Delete messages           | Allows the user to delete messages from the device's inbox via the GAP Portal.                                                     |

#### Monitoring

| Permission                         | Description                                                                                                                                                                              |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Check in device                    | Allows the user to check in a device manually, useful when devices are being monitored.                                                                                                  |
| Raise or cancel emergency state    | Allows the user to remotely trigger and cancel an emergency against a device via the GAP Portal.                                                                                         |
| Override stop monitoring behaviour | Allows the user to forcibly stop server-side monitoring.  Note that this can lead to the user believing they are being monitored when they are not and thus should be used with caution. |

#### Customization

| Permission          | Description                                                                  |
| ------------------- | ---------------------------------------------------------------------------- |
| Change app features | Allows the user to set which app features are available.                     |
| Custom map icon     | Allows the user to upload custom map icons for devices.                      |
| External links      | Allows the user to view configured External Links on the device detail page. |

#### Other

| Permission                        | Description                                                                                                                   |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| Change device ID                  | Allows the user to change a device's ID.                                                                                      |
| Change device user                | Allows the user to re-assign devices to other user accounts.                                                                  |
| Change device provisioning status | Allows the user to change a device's provisioning status via the GAP Portal.                                                  |
| Change tenant                     | Allows the user to move devices between tenants.  Note this feature can result in data loss and should be used with caution.  |
| Manage device encryption keys     | Allows the user to manage keys for devices that support encryption.                                                           |
| Add device log notes              | Allows the user to add free-text notes to the device log.                                                                     |
| Tag device                        | Allows the user to apply tags to devices.                                                                                     |
| Access list view                  | Allows the user to access list view for devices in the GAP Portal.  Note this also requires View Other Users and View Groups. |

### Groups

#### Group Access

| Permission                                 | Description                                                                        |
| ------------------------------------------ | ---------------------------------------------------------------------------------- |
| All                                        | Allows a user to access all groups                                                 |
| Groups user is assigned to via collections | Allows a user to access only groups they have been assigned to using a collection. |
| None                                       | Does not allow the user to access groups.                                          |

#### Group Management

| Permission    | Description                                                                                                     |
| ------------- | --------------------------------------------------------------------------------------------------------------- |
| Manage groups | Allows the user to create and edit groups, including changing group membership.  Requires access to all groups. |

#### Other

| Permission     | Description                                                                               |
| -------------- | ----------------------------------------------------------------------------------------- |
| Message groups | Allows the user to send text messages and assign check-in schedules to devices in groups. |
| Tag groups     | Allows the user to apply tags to groups.                                                  |

## Intel

### Geofences

#### Geofence Management

| Permission       | Description                                                                                |
| ---------------- | ------------------------------------------------------------------------------------------ |
| View geofences   | Allows the user to view geofences.                                                         |
| Manage geofences | Allows the user to add, edit and delete geofences via the "Geofences" screen in GAP Admin. |

#### Other

| Permission    | Description                                 |
| ------------- | ------------------------------------------- |
| Tag geofences | Allows the user to apply tags to geofences. |

### Points Of Interest

#### PoI Management

| Permission                       | Description                                                              |
| -------------------------------- | ------------------------------------------------------------------------ |
| View points of interest          | Allows the user to view points of interest.                              |
| Manage points of interest        | Allows the user to add, edit and delete their own points of interest.    |
| Manage global points of interest | Allows the user to add, edit and delete tenant-level points of interest. |

### KML Files

#### KML File Management

| Permission              | Description                                                      |
| ----------------------- | ---------------------------------------------------------------- |
| View KML files          | Allows the user to view KML layers.                              |
| Manage user KML files   | Allows the user to add, edit and delete their own KML layers.    |
| Manage global KML files | Allows the user to add, edit and delete tenant-level KML layers. |

## Notifications

### Address Book

#### Address Book Management

| Permission                 | Description                                                                     |
| -------------------------- | ------------------------------------------------------------------------------- |
| View device address book   | Allows the user to view the address book for devices to which they have access. |
| View global address book   | Allows the user to view the global address book.                                |
| Manage device address book | Allows the user to edit the address book for devices to which they have access. |
| Manage global address book | Allows the user to edit the global address book.                                |

### Check-In Schedules

#### Schedule Management

| Permission       | Description                                                 |
| ---------------- | ----------------------------------------------------------- |
| Manage schedules | Allows the user to add, edit and delete check-in schedules. |

#### Schedule Actions

| Permission                   | Description                                                                         |
| ---------------------------- | ----------------------------------------------------------------------------------- |
| Assign schedules to devices  | Allows the user to assign a check-in schedule to devices to which they have access. |
| Enable and disable schedules | Allows the user to enable and disable check-in schedules.                           |

### Event Notifications

#### Notification Management

| Permission                        | Description                                                                               |
| --------------------------------- | ----------------------------------------------------------------------------------------- |
| View device event notifications   | Allows the user to view event notifications for devices to which they have access.        |
| View global event notifications   | Allows the user to view global event notifications for tenants to which they have access. |
| Manage device event notifications | Allows the user to edit event notifications for devices to which they have access.        |
| Manage global event notifications | Allows the user to edit global event notifications for tenants to which they have access. |

#### Other

| Permission                                                  | Description                                                                                                      |
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Include global event notifications with event notifications | Allows the user to view all notifications that apply to a device in the device-level event notifications screen. |

### Canned Messages

#### Management

| Permission                    | Description                                                                  |
| ----------------------------- | ---------------------------------------------------------------------------- |
| View canned messages          | Allows the user to view canned messages.                                     |
| Manage device canned messages | Allows the user to add, edit and delete canned messages at the device level. |
| Manage global canned messages | Allows the user to add, edit and delete canned messages at the tenant-level. |

## Web Apps

### Portal

#### Alert Management

| Permission            | Description                                                                                  |
| --------------------- | -------------------------------------------------------------------------------------------- |
| Change alert settings | Allows the user to configure the portal alert settings, including onscreen alerts and sound. |

### Admin

#### Main Access

| Permission         | Description                                  |
| ------------------ | -------------------------------------------- |
| View Admin web app | Allows the user access to the GAP Admin app. |

#### Logs

| Permission        | Description                                      |
| ----------------- | ------------------------------------------------ |
| View email log    | Allows the user to view the E-Mail Log screen.   |
| View SMS log      | Allows the user to view the SMS Log screen.      |
| View IVR log      | Allows the user to view the IVR Log screen.      |
| View importer log | Allows the user to view the Importer Log screen. |

#### Facilities

| Permission        | Description                                         |
| ----------------- | --------------------------------------------------- |
| View facilities   | Allows the user to view facilities.                 |
| Manage facilities | Allows the user to add, edit and delete facilities. |

### Reports

#### Main Access

| Permission           | Description                                    |
| -------------------- | ---------------------------------------------- |
| View Reports web app | Allows the user access to the GAP Reports app. |

#### Management

| Permission              | Description                                               |
| ----------------------- | --------------------------------------------------------- |
| Manage report schedules | Allows the user to add, edit and delete report schedules. |
| Manage report jobs      | Allows the user to add, edit and delete report jobs.      |

### Comms

#### Main Access

| Permission         | Description                                  |
| ------------------ | -------------------------------------------- |
| View Comms web app | Allows the user access to the GAP Comms app. |

#### Messages

| Permission               | Description                                                                       |
| ------------------------ | --------------------------------------------------------------------------------- |
| View messages            | Allow the user to view comms messages.                                            |
| Send messages            | Allows the user to send comms messages.                                           |
| Delete messages          | Allows the user to delete comms messages.                                         |
| Manage message templates | Allows the user to create, edit and delete comms message templates via GAP Admin. |

### Insights

#### Intelligence

| Permission          | Description                                                                    |
| ------------------- | ------------------------------------------------------------------------------ |
| View intelligence   | Allows the user to view alerts, points, routes and regions.                    |
| Manage intelligence | Allows the user to create, edit and delete alerts, points, routes and regions. |

#### Itineraries

| Permission             |                                                                               |
| ---------------------- | ----------------------------------------------------------------------------- |
| View itineraries       | Allows the user to view all itineraries in tenants to which they have access. |
| Manage own itineraries | Allows the user to edit their own itineraries.                                |
| Create itineraries     | Allows the user to add itineraries.                                           |

#### Documents

| Permission       | Description                                                                      |
| ---------------- | -------------------------------------------------------------------------------- |
| View documents   | Allows the user to view documents.                                               |
| Manage documents | Allows the user to create, share and delete folder, and upload and delete files. |

#### Others

| Permission          | Description                                                     |
| ------------------- | --------------------------------------------------------------- |
| Show hidden folders | Allows the user to view hidden folders in the Documents feature |
| Manage rules engine | Allows the user to view, add, edit and delete rules.            |
| Edit settings       | Allows the user to configure GAP for Travel settings.           |

### Journeys

#### Main Access

| Permission            | Description                                     |
| --------------------- | ----------------------------------------------- |
| View Journeys web app | Allows the user access to the GAP Journeys app. |

#### Management

| Permission                    | Description                                                                |
| ----------------------------- | -------------------------------------------------------------------------- |
| View all journeys             | Allows the user to view all journeys in tenants to which they have access. |
| Manage journey classification | Allows the user to classify journeys.                                      |
| Manage off road data          | Allows the user to manage Fuel Tax Credit (FTC) data.                      |


# Managing Public Maps

Public maps allow the current location and track of a group of devices to be made available in the form of an embeddable map (or link to a map) that do not require a login.

It is possible to configure a public map to show position report histories based on the following criteria:

* Last X Messages (shows a certain number of messages)
* Last X Days (shows messages from a certain number of days ago)
* From Date (from a specific date)
* Between Two Dates

## Enabling Public Maps

1. From the GAP Admin home screen, click either "Groups" (under the "Devices" section) or "Collections" (under the "Access Control" section) depending on whether you want to base your map on a group or a collection respectively.
2. Click on an existing group / collection.
3. Click "Create Public Map".
4. Click "Create Public Map" at the prompt dialog.
5. Select the base map from the "Base map" drop-down list.  To allow the viewer of the map to change the base map, toggle the "Show base map picker" option to on.
6. To show a label for devices, toggle the "Show label for each device" option to on.
7. To show points of interest on the map, toggle the "Show Points of Interest" option to on.
8. Select the criteria for the position reports to show on the map using the "Location history" options.  To show the current position only, select "No History".  To show only the *n* messages, enter a number in the "Last messages" text box.  To show messages from the last *n* days, enter a number in the "Last days" text box.  To show messages between certain dates, select your chosen dates form the "From" and "until" date pickers.
9. Type a title for the map in the "Map title" text box.
10. Select a time zone from the "Time zone" drop-down list.
11. To enable automatic refresh, toggle the "Auto-refresh every minute" option to on.
12. Copy the map link and / or the embed code using the "Copy Link" and "Copy Embed Code" buttons.
13. Click the "X" button.

{% embed url="<https://vimeo.com/1205627599?fe=ci&fl=sv&share=copy>" %}

## Editing Public Maps

1. From the GAP Admin home screen, click either "Groups" (under the "Devices" section) or "Collections" (under the "Access Control" section) depending on whether you want to base your map on a group or a collection respectively.
2. Click on an existing group / collection.
3. Click "Configure" next to the public map copy buttons.
4. Set your desired options as described in [#enabling-public-maps](#enabling-public-maps "mention") steps 5 - 11.
5. Click the "X" button.

## Deleting Public Maps

1. From the GAP Admin home screen, click either "Groups" (under the "Devices" section) or "Collections" (under the "Access Control" section) depending on whether you want to base your map on a group or a collection respectively.
2. Click on an existing group / collection.
3. Click on the group / collection.
4. Click "Delete" next to the public map copy buttons.
5. Click the "Delete Public Map" button at the confirmation dialog.


# Managing Devices

A device represents an object that sends messages to and / or receives messages from GAP.

A device can be anything that has a mechanism for sending and / or receiving data (including satellite phones, GSM (cellular) trackers, smartphone apps, etc.).

## Adding Devices

{% hint style="info" %}
Depending on the device type you select, you may need to enter additional information when creating a device (e.g. phone number).

If you do not see the type of device you want to add listed, please see the [Supported Devices List](/monitoring-and-response/working-with-devices/supported-devices).
{% endhint %}

{% hint style="info" icon="user-lock" %}
This action requires the **Add Device** permission.
{% endhint %}

1. From the GAP Admin home page, click "Devices" under the "Devices" section.
2. Click the "+ Add Device" button.
3. Select the tenant in which the device will reside using the "Tenant" drop-down list.
4. Enter a device ID in the "Device ID" text box.  The device ID must be unique (e.g. IMEI, GUID, etc.).
5. Enter a friendly name for the device in the "Device friendly name" field.
6. Select the type of device from the "Device type" drop-down list.
7. Select a user to whom the device is assigned from the "Assigned User" drop-down list.
8. Select a device manager from the "Device manager" drop-down list.
9. Select the device's provisioning status from the "Provisioning status" drop-down list.
10. Enter a description in the "Description" text box.
11. To add tags to the device, click "+ Add Tags".  Enter a tag name and tag value.  Repeat as required.
12. To add a note to the device, click "+ Add Note".
13. Click the "Submit" button.

{% embed url="<https://vimeo.com/1222589744?fe=ci&fl=sv&share=copy>" %}

## Editing Device Details

{% hint style="info" %}
Depending on the device type you select, you may have additional fields shown when editing a device (e.g. phone number).
{% endhint %}

{% hint style="info" icon="user-lock" %}
These actions require the **Edit Device** and **Change Device User** permissions.
{% endhint %}

1. From the GAP Admin home page, click "Devices" under the "Devices" section.
2. Click the name of the device you want to edit.
3. To change the friendly name, click "<i class="fa-pen">:pen:</i> EDIT" next to the device friendly name, amend the name in the text box and click the "Save" button.
4. To change the device status, toggle the "Status" option.
5. To assign the device to a different user, select the user from the "Assigned user" drop-down list.
6. To assign the device to a different device manager, select the device manager from the "Device manager" drop-down list.
7. To edit the device's tags, click "<i class="fa-pen">:pen:</i> EDIT TAGS" and amend the tag names or values as required.  Tags can be deleted by clicking "<i class="fa-trash">:trash:</i> DELETE".  New tags can be added by clicking "+ ADD TAG".  Click the "Done" button when complete.
8. To edit the device notes, amend the value in the "Notes" text box.
9. To change device-type specific settings (e.g. phone number, SIM card number, etc.), click the "Type-Specific Settings" tab and amend the settings as required.
10. Click the "Save Changes" button.

## Changing Device IDs

{% hint style="danger" icon="circle-exclamation" %}
Changing the device ID of app (e.g. GAP Guardian) will prevent it from communicating with GAP.

If you change the device ID of an app, ask the user to deactivate and log in again.
{% endhint %}

{% hint style="warning" icon="triangle-exclamation" %}
Changing a device ID is not recommended for devices with significant message histories.
{% endhint %}

{% hint style="info" icon="user-lock" %}
This action requires the **Edit Device** and **Change Device ID** permissions.
{% endhint %}

1. From the GAP Portal home page, click "Devices".
2. Click the name of the device you want to edit.
3. Under the "Device Actions" section, click "Configure Device".
4. Click "Advanced".
5. Click "Change Device Id".
6. Enter the new device ID in the "New Device Id" text box.  The device ID must be unique (e.g. IMEI, GUID, etc.).
7. Click "OK".

## Deactivating Devices

{% hint style="info" icon="user-lock" %}
This action requires the **Change Device Provisioning Status** permission.
{% endhint %}

Deactivating a device retains its data in GAP and stops messages being sent from it being processed (except for emergency messages).  The device will appear greyed out in the GAP Portal.

1. From the GAP Admin home page, click "Devices" under the "Devices" section.
2. Click the name of the device you want to deactivate.
3. To change the device status, toggle the "Status" option to off.
4. Click the "Save Changes" button.

## Deleting Devices

{% hint style="warning" icon="triangle-exclamation" %}
Deleting a device is irreversible.  Deleting a device will also delete all messages associated with it.  Consider deactivating it instead.
{% endhint %}

{% hint style="info" icon="user-lock" %}
This action requires the **Delete Device** permission.
{% endhint %}

1. From the GAP Admin home page, click "Devices" under the "Devices" section.
2. Click <i class="fa-trash-can">:trash-can:</i> (trash) icon next to the name of the device you want to delete.
3. Click the "Delete Device" button at the prompt.


# Managing Groups

Groups are sets of devices that allow you to quickly perform actions across multiple devices at once.

You can request their current location, send a text message, or assign check-in schedules to all the devices in a group with one action.

You can also create a publicly accessible map for the group of devices, to share on a blog or social media, for example.

{% hint style="info" icon="user-lock" %}
These actions require the **Group Access (All)** and **Manage Groups** permissions.
{% endhint %}

## Creating Groups

1. From the GAP Portal home screen, click "Options".
2. Click "Groups".
3. Click "+".
4. Enter a name for the group in the "Group Name" text box.
5. Select a tenant in which the group will reside from the "Tenant" drop-down list.
6. Click "OK".
7. Drag and drop the relevant devices into the middle of the window to add them to the group.
8. Click the "Save" button.

{% embed url="<https://vimeo.com/1179048215?fe=ci&fl=sv&share=copy>" %}

## Editing Groups

1. From the GAP Portal home screen, click "Options".
2. Click "Groups".
3. Click on the name of the group you want to edit.
4. To change the membership of the group, click "Manage".
5. Drag and drop the relevant devices to / from the middle of the window to add / remove them to the group as required.
6. Click the "Save" button.
7. To rename the group, click "Rename".
8. Enter a new name into the "Group Name" text box and click the "OK" button.

## Assigning Check-In Schedules

1. From the GAP Portal home screen, click "Options".
2. Click "Groups".
3. Click on the name of the group to which you want to assign the schedule.
4. Click "Check-In Schedule".  If the group is already using a Check-In Schedule it will be shown here.
5. Click "Select Check-In Schedule".
6. Select a schedule from the drop-down control and click "OK".
7. If you wish to enable the schedule, click "Enable Check-In Schedule".

## Deleting Groups

1. From the GAP Portal home screen, click "Options".
2. Click "Groups".
3. Click on the name of the group you want to edit.
4. Click "Delete".
5. Click the "Yes, Delete" button.

### Determining group membership for a device

You can view which collections a device belongs to via the "View Assigned Group and Collections" screen

1. From the GAP Portal home screen, click "Devices".
2. Click on the name of the device.
3. Under the "Device Actions" section, click "Configure Device".
4. Click "View Assigned Group and Collections".


# Custom Device Modes

{% hint style="info" icon="user-lock" %}
This feature requires the **Edit Tenant** permission.
{% endhint %}

Custom Device Modes are tenant-level settings that determine how some device types behave, or what options are available to certain device types.

{% hint style="warning" icon="triangle-exclamation" %}
Changing these settings will impact all devices of said type in the tenant in question.
{% endhint %}

| Device Type             | Options                                                                                                                                                                                                                                                                | Notes                                                                                                                                                                                 |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| App                     | <p>Send push notifications for check-in requests<br><br>Send SMS for check-in requests</p>                                                                                                                                                                             | Determines how server-side notifications are sent to users to remind them to check in.                                                                                                |
| Garmin inReach devices  | <p>inReach Monitoring Presets<br><br>inReach Check In Schedule Presets<br><br>Off</p>                                                                                                                                                                                  | Determines whether preset buttons are used for starting / stopping check-in schedules, monitoring mode, or act as designed by the manufacturer.                                       |
| Globalstar SPOT devices | <p>SPOT Monitoring Mode<br><br>SPOT Check-In Schedule Mode<br><br>Off</p>                                                                                                                                                                                              | Determines whether the check-in and custom text buttons are used for starting and stopping check-in schedules / monitoring mode respectively, or act as designed by the manufacturer. |
| two10degrees hiiro      | <p>Automatic Emergency Acknowledgement<br><br>Manual Emergency Acknowledgement</p>                                                                                                                                                                                     | Determines how emergencies are acknowledged.                                                                                                                                          |
| Grace (cellular)        | <p>Off, 60 min<br><br>Off, 60 min, 30 min, 20 min<br><br>Off, 60 min, 30 min, 20 min, 15 min, 10 min, 5 min<br><br>Off, 60 min, 30 min, 20 min, 15 min, 10 min, 5 min, 4 min, 3 min<br><br>Off, 60 min, 30 min, 20 min, 15 min, 10 min, 5 min, 4 min, 3 min, 1 min</p> | Determines reporting rates for Grace devices over a cellular bearer.                                                                                                                  |
| Grace (satellite)       | <p>Off, 60 min<br><br>Off, 60 min, 30 min, 20 min<br><br>Off, 60 min, 30 min, 20 min, 15 min, 10 min, 5 min<br><br>Off, 60 min, 30 min, 20 min, 15 min, 10 min, 5 min, 4 min, 3 min<br><br>Off, 60 min, 30 min, 20 min, 15 min, 10 min, 5 min, 4 min, 3 min, 1 min</p> | Determines reporting rates for Grace devices over a satellite bearer.                                                                                                                 |


# Managing Alert Feeds

{% hint style="info" icon="lock-keyhole" %}
This feature requires the **Manage Itineraries** permission.
{% endhint %}

{% hint style="info" %}
Alert Feeds can only be configured for top-level tenants.
{% endhint %}

To turn alert feeds on or off:

1. From the GAP Admin home page, click "Alert Feeds" under the "Intel" section.
2. Check or uncheck the check box next to each alert feed as required.
3. Click the "Submit" button.


# Managing Facilities

{% hint style="info" icon="user-lock" %}
These actions require the **Manage Facilities** permission.
{% endhint %}

## Adding Facilities

1. From the GAP Admin home page, click "Facilities" under the "Intel" section.
2. Click "+ Add".
3. Enter a facility name in the "Name" field.
4. Enter a description in the "Description" field.
5. Enter an address in the "Address", "City", "Country", "State" and "Postal Code" fields and click "Lookup" to obtain a precise location.
6. If you wish, change the icon and colour via the "Marker Icon" and "Icon Color" drop-down lists underneath the map.
7. Enter contact telephone numbers for the facility in the "Primary Phone" and "Secondary Phone" text boxes.  Note this should be in international format (e.g +4412345678999).
8. Select the key contact(s) for the facility using the "Key Contacts" drop-down list.  Note that these must be existing GAP users.
9. Click the "Submit" button.

{% embed url="<https://vimeo.com/1177180082?fe=ci&fl=sv&share=copy>" %}

### Adding Multiple Facilities via Spreadsheet Upload

Facilities can be managed at scale via spreadsheet (CSV or Excel) download / upload.

The following fields should be specified:

* Id
* Name \*
* Description
* Latitude \*
* Longitude \*
* Address
* City
* State
* Country \*
* Postal Code
* Primary Phone
* Secondary Phone
* [Map Icon](/administration/facilities-map-icon-reference#map-icon-ids)
* [Marker Color](/administration/facilities-map-icon-reference#colours)
* Key Contacts
* Delete

1. From the GAP Admin home page, click "Facilities" under the "Intel" section.
2. Click the "Upload" button
3. Drag and drop the spreadsheet file onto the screen or use the "Select Files" button.
4. Assign columns from the spreadsheet to facility properties using the "Facility property" drop-down lists.  If the spreadsheet uses the correct column names, these will be automatically assigned.
5. Click the "Next" button.
6. The data will be validated.  If there are no errors, click the "Next" button to import the facilities.
7. Click the "Close" button.

## Editing Facilities

### Editing Facilities

1. From the GAP Admin home page, click "Facilities" under the "Intel" section.
2. Click on the name of the facility you want to edit.
3. Click the "+ Edit" button.
4. To rename the facility, update the facility name in the "Name" field.
5. To change the description, update the description in the "Description" field.
6. To change the address, enter a new address in the "Address", "City", "Country", "State" and "Postal Code" fields and click "Lookup" to obtain a precise location.
7. To change the icon and colour, change the icon and colour via the "Marker Icon" and "Icon Color" drop-down lists underneath the map.
8. To change the facility telephoe numbers, update the values in the "Primary Phone" and "Secondary Phone" text boxes.  Note that phone numbers must be in international format (e.g +4412345678999).
9. To amend the key contact(s) for the facility, use the "Key Contacts" drop-down list.  Note that these must be existing GAP users.
10. Click the "Submit" button.

### Edit Facilities via Spreadsheet Upload

1. From the GAP Admin home page, click "Facilities" under the "Intel" section.
2. Click the "Download" button.
3. Click the "Download as Excel" option.
4. Save the file locally and edit the facilities contained therein as required.
5. Click the "Upload" button.
6. Drag and drop the spreadsheet file you just edited onto the screen or use the "Select Files" button.
7. Assign columns from the spreadsheet to facility properties using the "Facility property" drop-down lists.  If the spreadsheet uses the correct column names, these will be automatically assigned.
8. Click the "Next" button.
9. The data will be validated.  If there are no errors, click the "Next" button to import the facilities.
10. Click the "Close" button.

## Deleting Facilities

1. From the GAP Admin home page, click "Facilities" under the "Intel" section.
2. Click the <i class="fa-trash">:trash:</i> (trash can) icon next to the facility you want to delete.
3. At the confirmation prompt, click the "Delete" button to delete the facility.


# Managing KML Overlays

{% hint style="info" icon="user-lock" %}
These activities require the **View KML Files**, **Manage User KML Files** and **Manage Global KML Files** permissions.
{% endhint %}

## Adding KML Overlays

1. From the GAP Admin home page, click "KML Overlays" under the "Intel" section.
2. Click the "+ New KML Overlay" button.
3. Upload the KML file by dragging it onto the "Drop files here to upload" section or clicking the "Select File" button.
4. Enter an overlay name into the "Overlay Name" text box.
5. Select a minimum map zoom level at which the overlay will be displayed using the "Min zoom" text box.
6. If you want the KML overlay visible to all users, select the "Overlay visible to all users" radio button.  Otherwise, to have the overlay visible only to yourself, select "Overlay visible only to me".  Note that this option cannot be changed later.
7. Select the tenant in which the overlay will reside using the "Select Tenant" drop-down list.
8. If you want the KML overlay accessible to sub-tenant users, check the "Visible to subtenants" check box.  Note this option is only available if "Overlay visible to all users" is selected.
9. Click the "Save KML Overlay" button.

{% embed url="<https://vimeo.com/1178701892?fe=ci&fl=sv&share=copy>" %}

## Editing KML Overlays

1. From the GAP Admin home page, click "KML Overlays" under the "Intel" section.
2. Click on the KML Overlay you want to edit.
3. To change the overlay name, enter a new name into the "Overlay Name" text box.
4. To change the minimum map zoom level at which the overlay will be displayed, use the "Min zoom" text box.
5. If you want the KML overlay accessible to sub-tenant users, check the "Visible to subtenants" check box.  Note this option is only available if "Overlay visible to all users" is selected.
6. Click the "Save Changes" button.

## Deleting KML Overlays

1. From the GAP Admin home page, click "KML Overlays" under the "Intel" section.
2. Click on the KML Overlay you want to delete.
3. Click the "Delete KML Overlay" button.
4. At the confirmation dialog, click the "Delete KML Overlay" button.


# Managing Geofences

{% hint style="info" icon="user-lock" %}
These actions require the **View Geofences**, **Manage Geofences** and **Tag Geofences** permissions.
{% endhint %}

## Adding Geofences

1. From the GAP Admin home page, click "Geofences" under the "Intel" section.
2. Click the "+ New Geofence" button.
3. Enter a geofence name in the "Geofence name" text box.
4. Select a tenant in which the geofence will reside from the "Tenant" drop-down list.
5. If you want the geofence to be accessible to users in sub-tenants, check the "Available to subtenants" check box.
6. Use the "+ Add Tags" button to tag the geofence.  To create a tag, enter a name in the "Tag name" text box and a value in the "Tag value" text box.  Repeat this step as required, the click the "Done" button.
7. Enter a geofence width in metres into the "Geofence width (metres)" text box.
8. Choose a geofence type but clicking on either the "Polygon", "Circle" or "Line" buttons under "Geofence Shape".
9. Draw the relevant shape on the map, following the on-screen instructions.  The map type can be changed using the layer tool under the zoom buttons at the top right-hand side of the map.
10. Set the colour for the geofence using the "Geofence colour" picker.
11. Set the transparency for the geofence using the "Geofence transparency" slider.
12. Select the minimum and maximum zoom levels at which the geofence will be visible on the GAP Portal map using the "Min zoom" and "Max zoom" text boxes respectively.
13. Click the "Save Changes" button.

{% embed url="<https://vimeo.com/1177170573?fe=ci&fl=sv&share=copy>" %}

## Editing Geofences

1. From the GAP Admin home page, click "Geofences" under the "Intel" section.
2. Click on the name of the geofence you want to edit.
3. To change the name, enter a new name into the "Geofence name" text box.
4. If you want the geofence to be accessible to users in sub-tenants, check the "Available to subtenants" check box.
5. Use the "+ Add Tags" button to tag the geofence.  To create a tag, enter a name in the "Tag name" text box and a value in the "Tag value" text box.  Repeat this step as required, the click the "Done" button.
6. To change the geofence width, enter a new value in metres into the "Geofence width (metres)" text box.
7. To edit the shape, click the "Edit" button.  To change the shape type and redraw, click the "Redraw" button.
8. Draw the relevant shape on the map, following the on-screen instructions.  The map type can be changed using the layer tool under the zoom buttons at the top right-hand side of the map.
9. To change the geofence colour, select a new colour using the "Geofence colour" picker.
10. To change the transparency for the geofence, use the "Geofence transparency" slider.
11. To change the minimum and maximum zoom levels at which the geofence will be visible on the GAP Portal map, use the "Min zoom" and "Max zoom" text boxes respectively.
12. Click the "Save Changes" button.

## Deleting Geofences

1. From the GAP Admin home page, click "Geofences" under the "Intel" section.
2. Click on the name of the geofence you want to delete.
3. Click the "Delete Geofence" button.
4. At the confirmation prompt, click the "Delete Geofence" button.


# Managing Points of Interest

A point of interest (PoI) is a static point on a map detailing an item of importance to a user (such as a basecamp, meeting point, hospital, etc.).

A point of interest can be visible to a single user (the creator) or to the entire tenant.  It can optionally be visible to sub-tenants.

{% hint style="info" %}
Points of Interest (PoIs) are distinct from Points in GAP for Travel.
{% endhint %}

{% hint style="info" icon="user-lock" %}
These actions require the **View Points of Interest**, **Manage Points of Interest** and **Manage Global Points of Interest** permissions.
{% endhint %}

## Adding Points of Interest

1. From the GAP Portal home screen, click "Options".
2. Click "Points of Interest".
3. Click "+".
4. Enter a name for the point of interest in the "Name" text box.
5. Enter a description for the point of interest in the "Description" text box.
6. Select an icon for the point of interest from the "Icon" drop-down list.
7. Select a colour from the icon from the "Color" picker.
8. Click on the map to place the point of interest in the correct location.  Click and drag to adjust as required.
9. Set a zoom level at which the point of interest will appear from the "Min Zoom" drop down list.
10. To make the point of interest visible to all users in a tenant with the "View Points of Interest" permission, select the "Point of Interest visible to all users" check box.  Note this setting cannot be changed later.
11. Select a tenant in which the point of interest will reside from the "Tenant" drop-down list.
12. If you want the point of interest to be visible in sub-tenants of the selected tenant, check the "Point of Interest visible to all users in sub-tenants" option.
13. Click the "OK" button.

{% embed url="<https://vimeo.com/1179049625?fe=ci&fl=sv&share=copy>" %}

## Editing Points of Interest

1. From the GAP Portal home screen, click "Options".
2. Click "Points of Interest".
3. Click on the point of interest you want to edit.
4. To change the name for the point of interest, amend the value in the "Name" text box.
5. To change the description for the point of interest, amend the value in the "Description" text box.
6. To change the icon for the point of interest, select a different icon from the "Icon" drop-down list.
7. To change the colour for the point of interest icon, select a new colour from the "Color" picker.
8. Click and drag on the icon on the map to adjust the location as required.
9. To change the zoom level at which the point of interest will appear, amend the value in the "Min Zoom" drop down list.
10. If the point of interest is visible to all users in a tenant, and you want it to be visible in sub-tenants of the selected tenant, check the "Point of Interest visible to all users in sub-tenants" option.
11. Click the "OK" button.

## Deleting Points of Interest

1. From the GAP Portal home screen, click "Options".
2. Click "Points of Interest".
3. Click on the point of interest you want to delete.
4. Click "Delete".
5. Click the "Yes, Delete" button.


# Managing Links

{% hint style="info" icon="user-lock" %}
These actions require the **Edit Tenant** permission.
{% endhint %}

## Adding Links

1. From the GAP Admin home page, click "Links" under the "Data" section.
2. Click the "+ Add Link" button.
3. Enter the link name in the "Enter name" text box.
4. Enter the URL in the "Enter URL" text box.
5. Click the "Submit" button.

{% embed url="<https://vimeo.com/1177181601?fe=ci&fl=sv&share=copy>" %}

## Editing Links

1. From the GAP Admin home page, click "Links" under the "Data" section.
2. To change the link name, change the text in the left-hand side ("Enter name") text box.
3. To change the link URL, change the text in the right-hand side ("Enter URL") text box.
4. Click the "Submit" button.

## Re-ordering Links

1. From the GAP Admin home page, click "Links" under the "Data" section.
2. Click and hold the <i class="fa-grip-vertical">:grip-vertical:</i> (grip) icon on the left-hand side of the "Enter name" text box and drag the entry to the required position in the list.
3. Click the "Submit" button.

## Deleting Links

1. From the GAP Admin home page, click "Links" under the "Data" section.
2. Click the <i class="fa-trash-can">:trash-can:</i> (trash can) icon on the left-hand side of the "Enter name" text box.
3. Click the "Submit" button.


# Managing Check-In Schedules

{% hint style="info" icon="user-lock" %}
These actions require the **Manage Schedules**, **Assign Schedules To Devices** and **Enable & Disable Schedules** permissions.
{% endhint %}

## Adding Check-In Schedules

1. From the GAP Admin home page, click "Check-In Schedules" under the "Notifications" section.
2. Click the "+ New Check-In Schedule" button.
3. Enter a name for the schedule in the "Schedule Name" text box.
4. Select a tenant in which the schedule will reside from the "Tenant" drop-down list.
5. Select the days of the week that the schedule will apply to using the "Days of Week" selector buttons.
6. Select the time zone used to calculate the check-in times using the "Time Zone" drop-down list.
7. Select whether the user(s) will be required to check in at specific times or on an interval using the "Selected Times" or "Interval" buttons.
8. For "Selected Times", click on one or more of the times in the grid below.
9. For "Interval", select the time period from the "Interval" drop-down list.  In addition, select a start time and end time from the "Start Time" and "End Time" pickers respectively.
10. Enter a buffer (in minutes) into the "Buffer" text box.
11. Click the "Save Check-In Schedule" button.

{% embed url="<https://vimeo.com/1177178177?fe=ec&fl=tl>" %}

## Assigning Check-In Schedules

1. From the GAP Admin home page, click "Check-In Schedules" under the "Notifications" section.
2. Click on the schedule you want to assign.
3. Click the "Assigned Devices & Groups" tab.
4. Click the "Manage Devices" button.
5. Select the devices and groups you want to assign in the bottom list and use the "+ Add Selected" or "+ Add All" buttons as required.
6. Click the "Save Changes" button.

## Enable / Disable Check-In Schedules

1. From the GAP Admin home page, click "Check-In Schedules" under the "Notifications" section.
2. Click on the schedule you want to enable or disable.
3. Click the "Enable For All" or "Disable For All" buttons.  To enable and disable Check-In Schedules on a per-device or per-group basis, use the GAP Portal.

## Editing Check-In Schedules

1. From the GAP Admin home page, click "Check-In Schedules" under the "Notifications" section.
2. Click on the schedule you want to edit.
3. To rename the schedule, click the "Rename" button, enter a new name in the text box and click the "Save" button.
4. To edit the schedule times, click the "Edit Schedule Times" button and amend as required.
5. Click the "Save Changes" button.

## Deleting Check-In Schedules

1. From the GAP Admin home page, click "Check-In Schedules" under the "Notifications" section.
2. Click on the schedule you want to delete.
3. Click the "Delete Check-In Schedule" button.
4. At the confirmation dialog, click the "Delete Check-In Schedule" button.


# Managing Global Address Books

{% hint style="info" %}
These actions require the **View Global Address Book** and **Manage Global Address Book** permissions.
{% endhint %}

## Contacts

### Adding Contacts

1. From the GAP Admin home page, click "Global Address Book" under the "Notifications" section.
2. Click the "+ New Contact" button.
3. Enter the contact's name in the "Contact name" text box.
4. Select the tenant in which the contact will reside from the "Tenant" drop-down list.
5. If you want the contact to be available to sub-tenants, check the "Available to subtenants" check box.
6. Click the "+ Add Contact Method" button.
7. Select a contact method from the left-hand side drop-down list.  This can either be an e-mail address, phone number (for SMS), GAP device ID or phone number (for a call).
8. Enter the e-mail address, phone number or GAP device ID into the next text box.
9. Repeat steps 6 and 7 as required.
10. If you want to be able to synchronise the contact to a supported device, check the "Sync contact to device" check box.
11. If you want to include the contact details on emergency event notification e-mails, check the "Use as escalation contact" check box.
12. Click the "Save Contact" button.

{% embed url="<https://vimeo.com/1177179437?fe=ci&fl=sv&share=copy>" %}

### Editing Contacts

1. From the GAP Admin home page, click "Global Address Book" under the "Notifications" section.
2. Click on the contact you want to edit.
3. If you want the contact to be available to sub-tenants, check the "Available to subtenants" check box.
4. To add new contact methods, click the "+ Add Contact Method" button.
5. Select a contact method from the left-hand side drop-down list.  This can either be an e-mail address, phone number (for SMS), GAP device ID or phone number (for a call).
6. Enter the e-mail address, phone number or GAP device ID into the next text box.
7. Repeat steps 6 and 7 as required.
8. To delete existing contact methods, click the "Delete Contact Method" button.
9. If you want to be able to synchronise the contact to a supported device, check the "Sync contact to device" check box.
10. If you want to include the contact details on emergency event notification e-mails, check the "Use as escalation contact" check box.
11. Click the "Save Contact" button.

### Deleting Contacts

1. From the GAP Admin home page, click "Global Address Book" under the "Notifications" section.
2. Click on the contact you want to delete.
3. Click the "Delete Contact" button.
4. At the confirmation dialog, click the "Delete Contact" button.

## Distribution Lists

### Adding Distribution Lists

1. From the GAP Admin home page, click "Global Address Book" under the "Notifications" section.
2. Click the "Distribution Lists" tab.
3. Click the "+ New Distribution List" button.
4. Enter the list name in the "List name" text box.
5. Select the tenant in which the list will reside from the "Tenant" drop-down list.
6. If you want the list to be available to sub-tenants, check the "Available to subtenants" check box.
7. Click the "+ Add Entry" button.
8. Select a contact method from the left-hand side drop-down list.  This can either be an e-mail address, phone number (for SMS), GAP device ID or phone number (for a call).
9. Enter the e-mail address, phone number or GAP device ID into the next text box.
10. Repeat steps 7 - 9 as required.
11. If you want to be able to synchronise the list to a supported device, check the "Sync contact to device" check box.
12. Click the "Save Distribution List" button.

{% embed url="<https://vimeo.com/1177182550?fe=ci&fl=sv&share=copy>" %}

### Editing Distribution Lists

1. From the GAP Admin home page, click "Global Address Book" under the "Notifications" section.
2. Click on the list you want to edit.
3. If you want the list to be available to sub-tenants, check the "Available to subtenants" check box.
4. To add new entries, click the "+ Add Entry" button.
5. Select a contact method from the left-hand side drop-down list.  This can either be an e-mail address, phone number (for SMS), GAP device ID or phone number (for a call).
6. Enter the e-mail address, phone number or GAP device ID into the next text box.
7. Repeat steps 4 - 6 as required.
8. To delete existing contact methods, click the "Delete Entry" button.
9. If you want to be able to synchronise the list to a supported device, check the "Sync distribution list to device" check box.
10. Click the "Save Distribution List" button.

### Deleting Distribution Lists

1. From the GAP Admin home page, click "Global Address Book" under the "Notifications" section.
2. Click the "Distribution Lists" tab.
3. Click on the list you want to delete.
4. Click the "Delete Distribution List" button.
5. At the confirmation dialog, click the "Delete Distribution List" button.


# Managing Event Notifications

There are two types of Event Notifications:

* Event Notifications (which apply to individual devices)
* Global Event Notifications (which apply to more than one device in the same tenant)

Event Notifications are used to raise alerts when certain events occur such as:

* Geofences being crossed
* Emergency button being pressed
* Low battery
* Missed check-in

## Adding Event Notifications for Devices

1. From the GAP Portal home screen, click "Devices".
2. Click on the device for which you want to create the notification.
3. Under the "Device Actions" section, click "Configure Device"
4. Click "Event Notifications".
5. Click "+".
6. Select the conditions in which the notification will fire from the "Match the following event" drop-down list.  See [Event Notifications Reference](/administration/notifications/event-notifications-reference#conditions) for a list of possible conditions.
7. Click "+ Add Event" to add more conditions.
8. Repeat steps 6 and 7 as required.
9. If you want the notification to trigger only if all the conditions are met, ensure that "all" is selected in the "Match ... of the following events" drop-down list.  If you want the notification to trigger if one or more of the conditions are met, change this value to "any".
10. Click the "Next >" button.
11. Select the severity from the "Event Severity" drop-down list. This will determine the colour of the notifications that are emailed to recipients and alerts that appear in the GAP Portal.
12. If you want an alert to appear on the GAP Portal dashboard when the event notification is triggered, check the "Raise an Alert on Dashboard" check box.
13. Select what actions you want to occur when the event notification is triggered from the "Actions" drop-down list.
14. Click "+Add Action" to add more actions.
15. Repeat steps 13 and 14 as required.  You can add up to 10 actions per event notification.
16. Click the "Next >" button.
17. Enter a name for the notification in the "Notification name" text box.
18. Enter any text you want to include in the event notification message in the "Text to include in the notification message" text box.
19. If you want the event notification to be disabled upon creation, uncheck the "Notification Enabled" check box.
20. Click the "Next >" button.
21. Review the details for the notification and click the "OK" button.

{% embed url="<https://vimeo.com/1179062863?fe=ci&fl=sv&share=copy>" %}

## Adding Global Event Notifications

1. From the GAP Portal home screen, click "Options".
2. Click "Global Event Notifications"
3. Click "+".
4. Select the conditions in which the notification will fire from the "Match the following event" drop-down list.  See [Event Notifications Reference](/administration/notifications/event-notifications-reference#conditions) for a list of possible conditions.
5. Click "+ Add Event" to add more conditions.
6. Repeat steps 4 and 5 as required.
7. If you want the notification to trigger only if all the conditions are met, ensure that "all" is selected in the "Match ... of the following events" drop-down list.  If you want the notification to trigger if one or more of the conditions are met, change this value to "any".
8. Click the "Next >" button.
9. Select a tenant or group to which the event notification applies from the "Tenant or Group" drop-down list.
10. Optionally, select whether the device applies to all devices ("All devices"), specific individual devices ("Selected devices") or specific device types from the "Devices" drop-down list.
11. Click the "Next >" button.
12. Select the severity from the "Event Severity" drop-down list. This will determine the colour of the notifications that are emailed to recipients and alerts that appear in the GAP Portal.
13. If you want an alert to appear on the GAP Portal dashboard when the event notification is triggered, check the "Raise an Alert on Dashboard" check box.
14. Select what actions you want to occur when the event notification is triggered from the "Actions" drop-down list.
15. Click "+Add Action" to add more actions.
16. Repeat steps 14 and 15 as required.  You can add up to 10 actions per event notification.
17. Click the "Next >" button.
18. Enter a name for the notification in the "Notification name" text box.
19. Enter any text you want to include in the event notification message in the "Text to include in the notification message" text box.
20. If you want the event notification to be disabled upon creation, uncheck the "Notification Enabled" check box.
21. Click the "Next >" button.
22. Review the details for the notification and click the "OK" button.

{% embed url="<https://vimeo.com/1179063816?fe=ci&fl=sv&share=copy>" %}

## Deleting Event Notifications for Devices

1. From the GAP Portal home screen, click "Devices".
2. Click on the device for which you want to create the notification.
3. Under the "Device Actions" section, click "Configure Device"
4. Click "Event Notifications".
5. Select the Event Notification you wish to delete.
6. Click the "Delete" button.
7. Click the "Yes, Delete" button.

## Deleting Global Event Notifications

1. From the GAP Portal home screen, click "Options".
2. Click "Global Event Notifications".
3. Select the event notification you wish to delete.
4. Click the "Delete" button.
5. Click the "Yes, Delete" button.


# Event Notifications Reference

{% hint style="info" %}
Not all event notification conditions and actions apply to all device types.
{% endhint %}

## Conditions

### Emergency

| Condition                                         | Description                                                                                                                       | Notes                                                                                                                                                                                                                                                                             |
| ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| When the device emergency state changes           | Triggers when the device enters an emergency state or when an emergency is cancelled.                                             | Receiving a man-down alert will also cause a device to enter an emergency state.                                                                                                                                                                                                  |
| When the device sends an emergency message        | Triggers every time an emergency message is received.                                                                             | As many devices send repeated emergency messages, event notifications set up using this condition will result in multiple e-mails being sent.                                                                                                                                     |
| When the device sends an emergency cancel message | Triggers every time an emergency cancel message is received.                                                                      |                                                                                                                                                                                                                                                                                   |
| When the device is in emergency mode              | Typically used in conjunction with another criteria, to form a notification that only fires when the device is in emergency mode. |                                                                                                                                                                                                                                                                                   |
| When an emergency is unacknowledged               | Triggers when an emergency hasn't been acknowledged for the specified period.                                                     |                                                                                                                                                                                                                                                                                   |
| When the device activates man down mode           | Triggers when the user turns on man down detection.                                                                               | <p>Only available for devices with man-down support (i.e. the GAP Guardian app).</p><p></p><p>To raise a notification when a man-down alert occurs, use the "When the device emergency state changes" or "When the device sends an emergency message" conditions.</p>             |
| When the device deactivates man down mode         | Triggers when the user turns off man down detection.                                                                              | <p>Only available for devices with man-down support (i.e. the GAP Guardian app)</p><p></p><p>To raise a notification when a man-down alert is cancelled, use the "When the device emergency state changes" or "When the device sends an emergency cancel message" conditions.</p> |

### Check-In

| Condition                                             | Description                                                                                                             | Notes                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| When the device checks-in                             | Triggers every time a message deemed to constitute a check-in is received.                                              | <p>Every message that requires user interaction on a device is considered to be a check-in.</p><p></p><p>For example, a text message is considered a check-in.</p><p></p><p>A position report that required the device user to send via an interaction of their own making would also be considered a check-in.</p><p></p><p>An automated position report that did not require the user to interact with the device would not be considered a check-in.</p><p></p><p>Capabilities vary by device.</p> |
| When the device becomes overdue                       | Triggers when a device enters an overdue state having previously not been overdue.                                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| When the device becomes not overdue                   | Triggers when a device enters a not overdue state having previously been overdue.                                       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| When the device is overdue                            | Typically used in conjunction with another criteria, to form a notification that only fires when the device is overdue. |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| When the device starts monitoring mode                | Triggers when a device enters the monitored state (having previously been not monitored).                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| When the device stops monitoring or checks out        | Triggers when leaves the monitored state (having previously been monitored).                                            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| When the check-in schedule is disabled for the device | Triggers when monitoring (a.k.a. Monitor Me) ends (based on a check-in schedule defined via the Portal).                |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| When a check-in request is sent to the device         | Triggers when a check-in is requested via the GAP Portal.                                                               |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

### Message

| Condition                                        | Description                                                                                                            | Notes                                                                                                                                                                                                        |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| When the message text                            | Performs a text match on the message text.                                                                             |                                                                                                                                                                                                              |
| When the message type                            | Performs a text match on the message type.                                                                             |                                                                                                                                                                                                              |
| When the message recipients                      | Performs a text match on the message recipients.                                                                       |                                                                                                                                                                                                              |
| When the message property                        | Performs a text match or numeric comparison on a specific message property.                                            |                                                                                                                                                                                                              |
| When address                                     | Performs a text match on the reverse geocoded address.                                                                 | Requires reverse geocoding to be turned on for the tenant in question.                                                                                                                                       |
| When speed                                       | Performs a numeric comparison on the speed property.                                                                   |                                                                                                                                                                                                              |
| When position accuracy                           | Triggers when the accuracy of the position supplied in the message is either high, medium or low                       |                                                                                                                                                                                                              |
| When altitude                                    | Triggers when the altitude (derived from the location data) matches certain criteria (i.e. "When altitude < 50M")      |                                                                                                                                                                                                              |
| When the device sends a position message         | Triggers when a position report message is received.                                                                   |                                                                                                                                                                                                              |
| When the device sends a message with no position | Triggers when a message is received which does not contain position data.                                              |                                                                                                                                                                                                              |
| When the device starts moving                    | Triggers when a "started moving" message is received from a device.                                                    | <p>Requires device support for sending a message when motion is detected.</p><p></p><p>This capability is currently limited to the Queclink GL300, GV500, Prime AT, PT and SPOT Trace devices.</p>           |
| When the device stops moving                     | Triggers when a "stopped moving" message is received from a device.                                                    | <p>Requires device support for sending a message when motion is no longer detected.</p><p></p><p>This capability is currently limited to the Queclink GL300, GV500, Prime AT, PT and SPOT Trace devices.</p> |
| When the device battery becomes low              | Triggers when the device battery level drops below 20%.                                                                | Requires that battery data be included in the message data sent from the device.                                                                                                                             |
| When the device hasn't sent any message          | Triggers when the device has not sent any messages within the configured period (i.e. 1 hour, 24 hours, 1 week, etc.). |                                                                                                                                                                                                              |

### Geofence

| Condition                                | Description                                                                                                                              | Notes                                                                                                                                                                                                                                                                               |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| When the device enters a geofence        | Triggers when a device's position indicates that it has entered a geofence (i.e. gone from outside it to inside it).                     |                                                                                                                                                                                                                                                                                     |
| When the device leaves a geofence        | Triggers when the device's position indicates that it has left a geofence (i.e. gone from inside it to outside it).                      |                                                                                                                                                                                                                                                                                     |
| When the device crosses a geofence       | Triggers when the device's position indicates that it has crossed a geofence (i.e. gone from inside it to outside it or vice versa).     | Checking the "Including Possible Pass-Through" option will cause the event notification to be raised if a geofence may have been crossed based on a straight line drawn between the current and previous positions (even if no report was received within or without the geofence). |
| When the device is inside geofence       | Typically used in conjunction with another criteria, to form a notification that only fires when the device is inside a given geofence.  |                                                                                                                                                                                                                                                                                     |
| When the device is outside geofence      | Typically used in conjunction with another criteria, to form a notification that only fires when the device is outside a given geofence. |                                                                                                                                                                                                                                                                                     |
| When the distance from point of interest | Triggers when the device is within a specific distance of a point of interest.                                                           | In the context of this rule, a point of interest is set up under Options > Points of Interest in the GAP Portal.                                                                                                                                                                    |
| When the device crosses country border   | Triggers when a message arrives with a different "country" value in its address data (requires reverse geocoding to be enabled).         |                                                                                                                                                                                                                                                                                     |

### Time

| Condition                       | Description                                                                                                                                            | Notes                                                                                                      |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
| When the day is                 | Used in conjunction with other criteria (i.e. "When the device crosses any geofence *and the day is a Saturday or Sunday*...")                         | Ensure you set the appropriate time zone to base this calculation upon via the "Time Zone" drop-down list. |
| When the date is                | Used in conjunction with other criteria (i.e. "When the device enters any geofence *and the date is 01 September 2026*...")                            | Ensure you set the appropriate time zone to base this calculation upon via the "Time Zone" drop-down list. |
| When the date is between        | Used in conjunction with other criteria (i.e. "When the device is overdue *and the date is between 01 January 2027 and 31 January 2027*...")           | Ensure you set the appropriate time zone to base this calculation upon via the "Time Zone" drop-down list. |
| When the time of day is         | Used in conjunction with other criteria to perform a check at a set time (i.e. *"When the time of day is 18:00* and the device is in any geofence...") | Ensure you set the appropriate time zone to base this calculation upon via the "Time Zone" drop-down list. |
| When the time of day is between | Used in conjunction with other criteria (i.e. "When the devices enters any geofence *and the time of day is between 06:00 and 21:00*...")              | Ensure you set the appropriate time zone to base this calculation upon via the "Time Zone" drop-down list. |


# Configuring Data Exports

{% hint style="info" icon="user-lock" %}
This feature requires the **Data Logs** permission.
{% endhint %}

Data Exports are a way for you to obtain a regular export of your GAP data in a format that can manipulated in Excel or imported into your preferred reporting tool.  This might be useful for reporting or backup purposes.

You can export information about:

* Devices
* Messages
* Users
* Alerts
* Itineraries

Exports run on a regular basis via a "Job Schedule" (one per tenant).

When a job runs, a copy of the files will be stored on the server for you to download at your convenience.

You can optionally choose to receive e-mail notifications when data is made available for download.

1. From the GAP Admin home page, click "Data Export" under the "Integrations" section.
2. Click the "Configure" button.
3. Select which data types you wantot export from the "Schedule Export" section.
4. Select a frequency from the "Frequency" drop-down list.
5. To receive an e-mail notification when the export job has completed, check the "Send notification when export finishes" check box and enter an e-mail address in the "Email Addresses" text box.
6. To include sub-tenant data in the export, check the "Include Sub-Tenants" check box.
7. Configure how long export files are kept on the server via the "Retention Policy" drop-down list.
8. Click the "Submit" button.

{% embed url="<https://vimeo.com/1177183080?fe=ci&fl=sv&share=copy>" %}


# Configuring Webhooks

{% hint style="info" icon="user-lock" %}
These actions require the **Configure Webhooks** permission.
{% endhint %}

A webhook is a mechanism that allows one system to automatically notify another when a specific event occurs, rather than requiring the receiving system to repeatedly query for updates.

When a defined event takes place in the source system - such as a completed transaction, a status change, or a new record being created - it immediately dispatches an HTTP request to a pre-configured URL in the destination system, known as an endpoint.

That request carries a payload containing the relevant event data, which the receiving system can then process and act upon in near real time.

This event-driven approach eliminates the need for constant polling, resulting in faster integrations, reduced unnecessary network traffic, and a more responsive flow of information between systems.

GAP supports webhooks for the following data types:

* Devices
* Users
* MO Messages
* MT Messages
* Tenants

For more information on working with Webhooks programmatically, see [Webhooks](/web-api/webhooks).

## Adding Webhooks

1. From the GAP Admin home page, click "Webhooks" under the "Integrations" section.
2. Select an authentication mechanism for the webhook using the "Authentication" drop-down list.
3. If using basic authentication, enter the user name and password for the endpoint in the "Username" and "Password" text boxes respectively.
4. Enter the endpoint URL in the "Webhook URL" text box.
5. Select the data types for which you want to receive notifications using the checkboxes.
6. Click the "Submit" button.

{% embed url="<https://vimeo.com/1177184276?fe=ci&fl=sv&share=copy>" %}

## Editing Webhooks

1. From the GAP Admin home page, click "Webhooks" under the "Integrations" section.
2. To change the authentication mechanism. select from the "Authentication" drop-down list.
3. If using basic authentication, enter the user name and password for the endpoint in the "Username" and "Password" text boxes respectively.
4. To change the endpoint URL, update the value in the "Webhook URL" text box.
5. To change the data types for which you want to receive notifications, amend the checkboxes below.
6. Click the "Submit" button.

## Deleting Webhooks

1. From the GAP Admin home page, click "Webhooks" under the "Integrations" section.
2. Click the "Delete Webhook" button next to the webhook you want to delete.
3. Click the "Submit" button.


# Configuring GAP for Travel Settings

{% hint style="info" icon="user-lock" %}
These actions require the **Manage Settings** permission.
{% endhint %}

## Itinerary Settings

These settings are available on the "Itineraries" screen under the "Travel" section on GAP Admin:

| Setting                                                     | Parameters                     | Notes                                                                                                                                                                          |
| ----------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Create itinerary and user when matching traveller not found | <p>Enabled<br><br>Disabled</p> | If disabled, itineraries will be discarded if a matching user record is not found for the traveller.                                                                           |
| User account role                                           | GAP User Role name             | <p>e.g. "User"<br><br>If "Create itinerary and user when matching traveller not found" is enabled, the role specified here is assigned to any users created automatically.</p> |
| Create user account as disabled                             | <p>Enabled<br><br>Disabled</p> | If "Create itinerary and user when matching traveller not found" is enabled, this setting determines whether any such users are created in an enabled or disabled state.       |
| Update user account details based on itinerary data         | <p>Enabled<br><br>Disabled</p> | Determines whether traveller details (name, etc.) from itineraries update GAP user account details, if they differ.                                                            |

## Rules Engine Settings

| Setting                                                              | Parameters                     | Notes                                                                                                                             |
| -------------------------------------------------------------------- | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| Allow incomplete itineraries to be auto-approved by the Rules Engine | <p>Enabled<br><br>Disabled</p> | If enabled, the Rules Engine will be able to automatically approve itineraries, even if traveller contact information is missing. |
| Ignore segment gaps in itinerary risk calculations                   | <p>Enabled<br><br>Disabled</p> | If enabled, gaps of over 500KM in itinerary segments will not itinerary risk level calculations.                                  |
| Country brief read receipts                                          | <p>Enabled<br><br>Disabled</p> | If enabled, country briefs sent via the Rules Engine will be sent as links (not attachments).                                     |

## Traveller Portal Settings

These settings are available on the "Traveller Portal" screen under the "Travel" section on GAP Admin:

| Setting                                                                | Parameters                     | Notes                                                                                                                                                        |
| ---------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Sub-title text                                                         | Text                           | Sub-title to display on the Traveller Portal banner.                                                                                                         |
| Hide links to Country Briefs                                           | <p>Enabled<br><br>Disabled</p> | If enabled, country briefs are not accessible via the Traveller Portal's Travel Advice section.                                                              |
| Enable self-service sign-up                                            | <p>Enabled<br><br>Disabled</p> | Enables or disables the ability of users to sign themselves up for access to GAP via the Traveller Portal.                                                   |
| Show link for self-service sign-up on login screen                     | <p>Enabled<br><br>Disabled</p> | If "Enable self-service sign-up" is enabled, this setting determines whether the link to the sign-up page is visible on the login screen or not.             |
| New user state                                                         | <p>Enabled<br><br>Disabled</p> | If "Enable self-service sign-up" is enabled, this setting determines whether user accounts created via this mechanism are enabled or disabled upon creation. |
| Send e-mail notification to administrators when a user signs up        | <p>Enabled<br><br>Disabled</p> | If "Enable self-service sign-up" is enabled, this setting determines whether administrators receive notifications of new user sign-ups.                      |
| Welcome e-mail includes link to Traveller Portal instead of GAP Portal | <p>Enabled<br><br>Disabled</p> | If enabled, new user verification e-mails will link to the Traveller Portal, not the GAP Portal.                                                             |
| Read-only Fields                                                       | <p>Enabled<br><br>Disabled</p> | Determines which fields can be edited by users via the My Profile section of the Traveller Portal.                                                           |


# Configuring Itinerary Integrations

## GDS Integrations

### Adding GDS Integrations

1. From the GAP Admin home page, click "GDS Integrations" under the "Travel" section.
2. Click the name of the GDS you want to integrate with.
3. Select the tenant from the "Tenant" drop-down list.
4. Enter the details provided by your TMC.
5. Click the "Submit" button.


# Managing Flight Alerts

{% hint style="info" icon="plane-up" %}
These actions require the **View Itineraries** permission.
{% endhint %}

## Subscribing to Flight Alerts

1. From the GAP Admin home page, click "Flight Alerts" under the "Travel" section.
2. Click the "+ New Subscription" button.
3. Enter your e-mail address in the "Subscriber email" text box.
4. Select which events you want to be notified about via the "Flight Events" check boxes.
5. Click the "Create Subscription" button.

{% embed url="<https://vimeo.com/1177184719?fe=ci&fl=sv&share=copy>" %}

## Editing Flight Alert Subscriptions

1. From the GAP Admin home page, click "Flight Alerts" under the "Travel" section.
2. Click the e-mail address of the alert subscription you want to edit.
3. Update the e-mail address using the "Subscriber email" text box.
4. Amend which events you want to be notified about via the "Flight Events" check boxes.
5. Click the "Update Subscription" button.

## Deleting Flight Alert Subscriptions

1. From the GAP Admin home page, click "Flight Alerts" under the "Travel" section.
2. Click the e-mail address of the alert subscription you want to edit.
3. Click the "Remove Subscription" button.
4. At the confirmation dialog, click the "Remove Subscription" button.


# Managing Documents

{% hint style="info" icon="user-lock" %}
Actions described in this article require the **View Documents** and **Manage Documents** permissions.
{% endhint %}

## Adding Folders

1. From the GAP Admin home page, click "Documents" under the "Travel" section.
2. Navigate to the location in the folder hierarchy where you want to create a new folder and click "+ New Folder".
3. Enter a name for the new folder and click "Create Folder".

{% embed url="<https://vimeo.com/1179435634?fe=ci&fl=sv&share=copy>" %}

## Uploading Files

1. Navigate to the location in the folder hierarchy where you want to upload the file and click " Upload File".&#x20;
2. Browse to the location on your computer where the file is located and select it.

{% embed url="<https://vimeo.com/1179436252?fe=ci&fl=sv&share=copy>" %}

## Downloading Files

1. Navigate to the location in the folder hierarchy where the file in question resides.
2. Click the <i class="fa-download">:download:</i> (download) icon next to the file.

## Deleting Folders or Files

{% hint style="warning" icon="triangle-exclamation" %}
Deleting folders and file is permanent and cannot be undone.

Deleting a folder deletes all files contained therein.
{% endhint %}

1. Navigate to the location in the folder hierarchy of the folder or file in question.
2. Click the <i class="fa-trash">:trash:</i> (trash can) icon next to the folder or file in question.
3. At the confirmation prompt, click "Delete Folder" or "Delete File" as applicable.

## Sharing Folders

{% hint style="info" %}
Sharing a folder makes it contents available to users in sub-tenants.  The folder will appear in the "SHARED" folder for the sub-tenant users.
{% endhint %}

1. Navigate to the location in the folder hierarchy of the folder or file in question.
2. Click the <i class="fa-user-group">:user-group:</i> (share) icon next to the folder in question.  If a folder is already shared, clicking this button will turn off sharing.


# Itinerary Parsing Overview

GAP has the ability to capture itineraries sent via e-mail.

## Finding Your E-Mail Address

Each tenant has a unique e-mail address to which itineraries should be sent.

1. From the GAP Admin home page, click "Itineraries" under the "Travel" section.
2. The e-mail address for the tenant in scope can be found under the "Itinerary Email Parsing" section at the top of the screen.

## Required Information

### Flight Segments

* Airline name
* Flight number
* Departure location
* Arrival location
* Departure time
* Arrival time

### Hotel Segments

* Hotel name
* Address
* City
* Check-in date
* Check-out date

### Car Hire Segments

* Car company
* Pick-up address
* Pick-up city
* Pick-up date
* Pick-up time
* Drop-off address
* Drop-off city
* Drop-off date
* Drop-off time

### Rail Segments

* Rail line
* Train number
* Departure station
* Departure date
* Departure time
* Arrival station
* Arrival date
* Arrival time

## Best Practices

* E-mail content should be the original booking confirmation e-mail provided by the point of sale.
* Do not write out your travel itinerary manually. Instead, send the original booking itinerary from the supplier that is e-mailed to you after booking.
* Refrain from sending e-mails with a lot of forwards or e-mail conversations in the message body as this may cause the parse operation to fail.
* Photos or scans of bookings / itineraries will not be parsed.
* Do not send in scans or screenshots of your e-mail account.  Instead, forward the original booking e-mail or PDF attachment from the supplier.
* Boarding passes will likely not be parsed.
* Include only one itinerary per e-mail.  Multiple bookings are not supported on a single e-mail.
* Booking format can be an HTML e-mail or a PDF attachment (if that is what the point of sale provided).  Please note that PDF files must be able to be copied and pasted.  Encrypted PDF files and scans / images will not be parsed.
* Booking e-mails must contain all required information in order to parse. If an e-mail is missing a [required piece of information](#required-information), the parse operation will fail.
* Only information provided in the e-mail can be parsed.  Additional lookups are not generally undertaken except in the case of airport codes (for example, if the e-mail contains “London Heathrow” as a departure airport, “LHR” will be added to the finalized data).


# Rules Engine Introduction

The Rules Engine is a powerful and flexible tool for performing actions based on itineraries and intelligence items (such as alerts) automatically. It runs constantly in the background, monitoring your data and alerting you based on rules you set up.

There are two types of rules:

* Itinerary Rules (that fire based on itinerary data)
* Alert Rules (that fire based on alerts)

Each rule includes conditions (what causes it to fire) and actions (what should happen as a result).

Rules apply to the tenant in which they reside. If you have multiple sub-tenants, you'll need to set up appropriate rules for each. The only exception is rules to approve or decline alerts - these should only be set up in the top-level tenant.

Rules can be either enabled or disabled.  Optionally, rules can also have effective dates, determining when they do and do not run.

## Itinerary Rules

An Itinerary Rule fires based on updates to itinerary data.  Common usage scenarios include:

* Send an email to an administrator if an itinerary is added with a risk level of high
* Send a document to the travellers if their itinerary includes car hire
* Send an SMS to the administrator if an itinerary includes travel to Egypt or Sudan
* Approve an itinerary automatically if an itinerary's risk level is insignificant
* Decline an itinerary if an itinerary duration is longer than 14 days and notify an administrator by e-mail
* Send a travel briefing for the countries included in an itinerary to the travellers if the risk level is medium, high or extreme
* Send an email to the administrator if an itinerary includes a flight departing from Dubai

## Alert Rules

An Alert Rule fires based on receipt of alerts from approved providers (e.g. Riskline).  Common usage scenarios include:

* Notify all travellers within 100KM of a high priority alert by SMS
* Notify an administrator by e-mail of all alerts for Indonesia, East Timor and Papua New Guinea
* Notify all travellers in the same country via a phone call
* Request a check-in from all travellers currently in the country upon receipt of a high priority alert and mark them as overdue after 30 minutes if no response is received

<br>


# Managing Rules

{% hint style="info" icon="user-lock" %}
This action requires the **Manage Rules Engine** permission
{% endhint %}

## Adding Rules

1. From the GAP Admin home page, click "Rules Engine" under the "Travel" section.
2. Click the "+ New Rule" button.
3. Enter a rule name in the "Rule name" text box.
4. Select a rule type from the "Rule type" drop-down list.  Note that once you have saved a rule, the rule type cannot be changed.
5. If you want the rule to operate only during a specific date range, enter this using the "Effective dates" date pickers.
6. Configure the rule conditions under the "Conditions" section.  Click "+ Add Condition" and build the rule conditions as required.  More complex logic can be supported using the "+ Add Group" button.
7. Add actions using the "+ Add Action" button under the "Actions" section.
8. If you want to create the rule in a disabled state, uncheck the "Enable rule" checkbox.

{% embed url="<https://vimeo.com/1177181117?fe=ci&fl=sv&share=copy>" %}

## Disabling Rules

1. From the GAP Admin home page, click "Rules Engine" under the "Travel" section.
2. Toggle the slider in the "Status" column next to the rule you want to delete to the off position.

## Deleting Rules

{% hint style="warning" icon="triangle-exclamation" %}
Deleting a rule is irreversible.  Consdering disabling it instead.
{% endhint %}

1. From the GAP Admin home page, click "Rules Engine" under the "Travel" section.
2. Click the <i class="fa-trash">:trash:</i> (trash can) icon next to the rule you want to delete.
3. Click the "Delete Rule" button to delete the rule.


# Alert Rules Reference

## Conditions

### Alert Property

| Property                                        | Operators                                                                                                                                                            | Notes                                                                                                 |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| Of Any Name                                     | <p>Contains                                                                                                                                                          |                                                                                                       |
| <br>Does Not Contain                            |                                                                                                                                                                      |                                                                                                       |
| <br>Is Equal To<br>Is Empty<br>Is Not Empty</p> | Performs a text match against all property values for an alert.                                                                                                      |                                                                                                       |
| Title                                           | <p>Contains                                                                                                                                                          |                                                                                                       |
| <br>Does Not Contain                            |                                                                                                                                                                      |                                                                                                       |
| <br>Is Equal To<br>Is Empty<br>Is Not Empty</p> | Performs a text match against the alert title.                                                                                                                       |                                                                                                       |
| Text                                            | <p>Contains                                                                                                                                                          |                                                                                                       |
| <br>Does Not Contain                            |                                                                                                                                                                      |                                                                                                       |
| <br>Is Equal To<br>Is Empty<br>Is Not Empty</p> | Performs a text match against the alert text (body).                                                                                                                 |                                                                                                       |
| Description                                     | <p>Contains                                                                                                                                                          |                                                                                                       |
| <br>Does Not Contain                            |                                                                                                                                                                      |                                                                                                       |
| <br>Is Equal To<br>Is Empty<br>Is Not Empty</p> | Performs a text match against the alert description.                                                                                                                 |                                                                                                       |
| Approved                                        | <p>Is Equal To<br>Is Not<br>Is Empty</p>                                                                                                                             | Checks the approval state of the alert.  Possible values are "approved", "declined" or "no decision". |
| Source                                          | <p>Contains                                                                                                                                                          |                                                                                                       |
| <br>Does Not Contain                            |                                                                                                                                                                      |                                                                                                       |
| <br>Is Equal To<br>Is Empty<br>Is Not Empty</p> | Performs a text match against the alert source.                                                                                                                      |                                                                                                       |
| Risk Level                                      | <p>Is<br>Is Not<br>Is Greater Than<br>Is Greater Than Or Equal To<br>Is Less Than<br>Is Less Than Or Equal To</p>                                                    | Checks the risk level of an alert.                                                                    |
| Region                                          | <p>Contains                                                                                                                                                          |                                                                                                       |
| <br>Does Not Contain                            |                                                                                                                                                                      |                                                                                                       |
| <br>Is Equal To<br>Is Empty<br>Is Not Empty</p> | Performs a text match against the [name of the country](/administration/gap-for-travel-country-reference#full-country-names-list) in which the alert occurred.       |                                                                                                       |
| Country Code                                    | <p>Contains                                                                                                                                                          |                                                                                                       |
| <br>Does Not Contain                            |                                                                                                                                                                      |                                                                                                       |
| <br>Is Equal To<br>Is Empty<br>Is Not Empty</p> | Performs a text match against the [ISO-3166 country code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) for the country in which the alert occurred. |                                                                                                       |
| Countrywide                                     | -                                                                                                                                                                    | Checks if the alert applies to an entire country (applies to Riskline alerts only).                   |

### Alert Location

| Property                  | Operators                           | Notes                                                                                  |
| ------------------------- | ----------------------------------- | -------------------------------------------------------------------------------------- |
| Address                   | <p>Contains<br>Does Not Contain</p> | Checks the reverse geocoded address (as provided by Google) and performs a text match. |
| Inside Any Geofence       | -                                   | Checks if the alert falls within any geofence in the same tenant as the rule.          |
| Inside Selected Geofences | GAP Geofence(s)                     | Checks if the alert falls within a specific geofence.                                  |

### Assets In The Event Location

| Property                     | Operators                                                                                                                                    | Notes |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
| Assets In The Event Location | <p>Travellers, Devices or Facilities Within:</p><p></p><p>10KM<br>20KM<br>50KM<br>100KM<br><br>Travellers Or Devices In The Same Country</p> |       |

## Actions

| Action                            | Parameters                                                                                                   | Notes                                                                                                                                                         |
| --------------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Approve Alert                     | -                                                                                                            | Sets the alert status to approved.                                                                                                                            |
| Set Alert Icon                    | Icon ID                                                                                                      | Sets the alert icon to icon specified in the text box. Please contact the Support Desk for more information.                                                  |
| Notify Of Assets In Area          | E-Mail Addresses                                                                                             |                                                                                                                                                               |
| Send Email                        | <p>All Users<br>To Specified Recipients<br>To Travellers<br>To Travellers' Managers<br>To Facility Users</p> | Sends an e-mail to the specified recipients.                                                                                                                  |
| Send SMS                          | <p>All Users<br>To Specified Recipients<br>To Travellers<br>To Travellers' Managers<br>To Facility Users</p> | Sends an SMS to the specified recipients.                                                                                                                     |
| Call                              | <p>All Users<br>To Specified Recipients<br>To Travellers<br>To Travellers' Managers<br>To Facility Users</p> | Calls the specified recipients.                                                                                                                               |
| Notify Devices                    | Send Notification                                                                                            | Sends a text message to all devices within the specified radius or same country as the alert.                                                                 |
|                                   | Request Check-In                                                                                             | Sends a check-in request to all devices within the specified radius or same country as the alert, with the specified behaviour if the user does not check-in. |
| Send Message To Distribution List | GAP Distribution List                                                                                        | Sends message to all e-mail recipients in the distribution list.                                                                                              |
| Send Actions Summary              | E-Mail Address                                                                                               | Send an e-mail to the specified address detailing the actions taken by the rule. This e-mail is sent every time the rule is run and its conditions are met.   |


# Itinerary Rules Reference

## Conditions

### Itinerary

| Property                 | Operators                                                                                                                                              | Notes                                                                                                    |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------- |
| Overall Risk             | <p>Is<br>Is Not<br>Is Greater Than<br>Is Greater Than Or Equal To<br>Is Less Than<br>Is Less Than Or Equal To</p>                                      | Checks the risk level of itineraries.                                                                    |
| Approval State           | <p>Is<br>Is Not</p>                                                                                                                                    | Checks the approval state of the itinerary. Possible values are "approved", "declined" or "no decision". |
| Approval State Changed   | <p>To Approved<br>To Declined<br>To Cancelled</p>                                                                                                      | Triggers when the approval state of an itinerary changes.                                                |
| Duration Days            | <p>Is Equal To<br>Is Greater Than<br>Is Greater Than Or Equal To<br>Is Less Than<br>Is Less Than Or Equal To</p>                                       | Checks the duration of the itinerary.                                                                    |
| Days To Start            | <p>Is Equal To<br>Is Greater Than<br>Is Greater Than Or Equal To<br>Is Less Than<br>Is Less Than Or Equal To</p>                                       | Triggers at the specified number of days prior to the start date of the itinerary.                       |
| Days To End              | <p>Is Equal To<br>Is Greater Than<br>Is Greater Than Or Equal To<br>Is Less Than<br>Is Less Than Or Equal To</p>                                       | Triggers at the specified number of days prior to the end date of the itinerary.                         |
| Address                  | <p>Contains                                                                                                                                            |                                                                                                          |
| <br>Does Not Contain     |                                                                                                                                                        |                                                                                                          |
| <br>Is Equal To</p>      | Performs a text match against the address field of all itinerary segments.                                                                             |                                                                                                          |
| Region                   | <p>Contains                                                                                                                                            |                                                                                                          |
| <br>Does Not Contain</p> | Performs a text match against the [names of all countries](/administration/gap-for-travel-country-reference#full-country-names-list) on the itinerary. |                                                                                                          |
| Segment Gap              | <p>Detected<br>Not Detected</p>                                                                                                                        | Checks if the itinerary does or does not have gaps between segments of more than 500KM.                  |

### Traveller

| Property                       | Operators                                                                                                              | Notes                                                                                                                                                                                                                                                         |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Name                           | <p>Contains                                                                                                            |                                                                                                                                                                                                                                                               |
| <br>Does Not Contain</p>       | Performs a text match against the names of all travellers on the itinerary.                                            |                                                                                                                                                                                                                                                               |
| Email Address                  | <p>Contains                                                                                                            |                                                                                                                                                                                                                                                               |
| <br>Does Not Contain</p>       | Performs a text match against the e-mail addresses of all travellers on the itinerary.                                 |                                                                                                                                                                                                                                                               |
| Number Of Travellers           | <p>Is Equal To<br>Is Greater Than<br>Is Greater Than Or Equal To<br>Is Less Than<br>Is Less Than Or Equal To</p>       | Checks the number of travellers listed in the itinerary.                                                                                                                                                                                                      |
| Itinerary Has No Travellers    | -                                                                                                                      | Checks if the itinerary has any travellers.                                                                                                                                                                                                                   |
| Has Not Accessed Country Brief | <p>7 Days Prior To Departure<br>5 Days Prior To Departure<br>3 Days Prior To Departure<br>1 Day Prior To Departure</p> | <p>Triggers if a traveller has not accessed the country brief the specified number of days prior to travel.<br><br>Requires <a href="/administration/travel/configuring-gap-for-travel-settings">"Country brief read receipts" setting</a> to be enabled.</p> |
| Has Complete Info              | -                                                                                                                      | Checks if any of the travellers have complete contact information (e-mail address and telephone number).                                                                                                                                                      |
| Has Incomplete Info            | -                                                                                                                      | Checks if any of the travellers do not have complete contact information (e-mail address and telephone number).                                                                                                                                               |
| Account Is Disabled            | -                                                                                                                      | Checks if the traveller's GAP user account is disabled.                                                                                                                                                                                                       |
| Account Is Enabled             | -                                                                                                                      | Checks if the traveller's GAP user account is enabled.                                                                                                                                                                                                        |

### Hotel

| Property                    | Operators                                                                                                        | Notes                                                     |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| Name                        | <p>Contains                                                                                                      |                                                           |
| <br>Does Not Contain</p>    | Performs a text match against the names of all hotels in the itinerary.                                          |                                                           |
| Address                     | <p>Contains                                                                                                      |                                                           |
| <br>Does Not Contain</p>    | Performs a text match against the addresses of all hotels in the itinerary.                                      |                                                           |
| Duration Days               | <p>Is Equal To<br>Is Greater Than<br>Is Greater Than Or Equal To<br>Is Less Than<br>Is Less Than Or Equal To</p> | Checks the duration of each hotel stay in the itinerary.  |
| Itinerary Has No Hotel Stay | -                                                                                                                | Checks if the itinerary does not have any hotel segments. |

### Flight

| Property                                | Operators                                                                                    | Notes                                                      |
| --------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Number                                  | <p>Contains                                                                                  |                                                            |
| <br>Does Not Contain<br>Is Equal To</p> | Performs a text match against the number of all flights in an itinerary.                     |                                                            |
| Origin Airport Code                     | <p>Contains                                                                                  |                                                            |
| <br>Does Not Contain<br>Is Equal To</p> | Performs a text match against the departure airport codes for all flights in an itinerary.   |                                                            |
| Origin Airport Name                     | <p>Contains                                                                                  |                                                            |
| <br>Does Not Contain<br>Is Equal To</p> | Performs a text match against the departure airport name for all flights in an itinerary.    |                                                            |
| Destination Airport Code                | <p>Contains                                                                                  |                                                            |
| <br>Does Not Contain<br>Is Equal To</p> | Performs a text match against the destination airport codes for all flights in an itinerary. |                                                            |
| Destination Airport Name                | <p>Contains                                                                                  |                                                            |
| <br>Does Not Contain<br>Is Equal To</p> | Performs a text match against the destination airport name for all flights in an itinerary.  |                                                            |
| Itinerary Has Flights                   | -                                                                                            | Checks if the itinerary has any flight segments.           |
| Itinerary Has No Flights                | -                                                                                            | Checks if the itinerary does not have any flight segments. |

### Route

| Property                 | Operators                                                                               | Notes                                                                           |
| ------------------------ | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| Type                     | <p>Walk<br>Drive<br>Transit<br>Cycle<br>Ship</p>                                        | Checks if any of the route segments in the itinerary are of the specified type. |
| Origin Address           | <p>Contains                                                                             |                                                                                 |
| <br>Does Not Contain</p> | Performs a text match against the origin addresses of all routes in the itinerary.      |                                                                                 |
| Destination Address      | <p>Contains                                                                             |                                                                                 |
| <br>Does Not Contain</p> | Performs a text match against the destination addresses of all routes in the itinerary. |                                                                                 |
| Itinerary Has No Routes  | -                                                                                       | Checks if the itinerary does not have any route segments.                       |

## Actions

| Action                             | Parameters                                                                 | Notes                                                                                                                                                       |
| ---------------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Approve Itinerary                  | -                                                                          | Sets the itinerary status to approved.                                                                                                                      |
| Ask Travellers To Check Itinerary  | -                                                                          | Sends an e-mail to all travellers in the itinerary containing a link to the itinerary.                                                                      |
| Send Travel Briefing To Travellers | -                                                                          | E-mails country briefs for all countries included in the itinerary to all travellers specified in the itinerary.                                            |
| Check-In Schedule                  | <p>Start<br>Stop</p>                                                       | Starts or stops the Check-In Schedule assigned to any of the travellers' devices.                                                                           |
| Send Email                         | <p>To Specified Recipients<br>To Travellers<br>To Travellers' Managers</p> | Sends an e-mail to the specified recipients.                                                                                                                |
| Send SMS                           | <p>To Specified Recipients<br>To Travellers<br>To Travellers' Managers</p> | Sends an SMS to the specified recipients.                                                                                                                   |
| Send Message To Distribution List  | GAP Distribution List                                                      | Sends message to all e-mail recipients in the distribution list.                                                                                            |
| Send Actions Summary               | E-Mail Address                                                             | Send an e-mail to the specified address detailing the actions taken by the rule. This e-mail is sent every time the rule is run and its conditions are met. |


# Managing Comms Templates

## Adding Templates

1. From the GAP Admin home page, click "Templates" under the "Comms" section.
2. Click the "+ Add Comms Template" button.
3. Enter a name for the template in the "Name" text box.
4. Select a message bearer the template will be used for using the "Bearer" picker.
5. If e-mail is selected as a bearer, select a default priority for the messages from the "Priority" picker.
6. Enter a subject in the "Subject" text box.
7. Enter the template text into the text box and format it as desired.  You can use the parentheses button (<i class="fa-brackets-curly">:brackets-curly:</i>) to insert placeholders (such as recipient name, e-mail address and phone number) into the body of the resulting message.
8. Select whether the messages should require an acknowledgement of receipt, the selection of a response, or no action, using the "Request Response" picker.
9. If "Responses" is selected, add a response option (e.g. "Yes", "No", "Maybe") into the "Response Options" text box.
10. Click the "+ Add Response" button to add more.
11. Repeat steps 9 and 10 as required.
12. If you want to make the message template available to sub-tenants, check the "Applies to this tenant and sub-tenants" check box.
13. Click the "Submit" button.

{% embed url="<https://vimeo.com/1179419964?fe=ci&fl=sv&share=copy>" %}

## Editing Templates

1. From the GAP Admin home page, click "Templates" under the "Comms" section.
2. Click the <i class="fa-pencil">:pencil:</i> (edit) icon next to the name of the template you want to edit.
3. Click the "Edit Template" button.
4. To amend the template name, enter a new name for the template in the "Name" text box.
5. To change the bearer, select a new message bearer using the "Bearer" picker.
6. If e-mail is selected as a bearer, you can amend the default priority for the messages from the "Priority" picker.
7. To amend the subject, enter a new value in the "Subject" text box.
8. Amend the template text into the text box and format it as desired.  You can use the parentheses button (<i class="fa-brackets-curly">:brackets-curly:</i>) to insert placeholders (such as recipient name, e-mail address and phone number) into the body of the resulting message.
9. Select whether the messages should require an acknowledgement of receipt, the selection of a response, or no action, using the "Request Response" picker.
10. If "Responses" is selected, add a response option (e.g. "Yes", "No", "Maybe") into the "Response Options" text box.
11. Click the "+ Add Response" button to add more.
12. Repeat steps 9 and 10 as required.
13. If you want to make the message template available to sub-tenants, check the "Applies to this tenant and sub-tenants" check box.
14. Click the "Submit" button.


# Configuring Web App Styling

{% hint style="info" icon="user-lock" %}
This action requires the **Change Tenant Logo & Styling** permission.
{% endhint %}

## Customising the Login Screen

You can configure the login screen look and feel via the "Web App Styling" page in GAP Admin.

1. From the GAP Admin home screen, click "Web App Styling" under the "Styling" section.
2. Upload logos for the login screen using the "Select Image" buttons under the "Login Screen Logo" and "Header Logo" sections.
3. Upload a favicon for the login screen using the "Select Image" button under the "Favicon" section.
4. Select a background and accent colour from the "Background Color" and "Accent Color" pickers respectively.
5. Upload an image using the "Select File" button under the "Login Background Image (Desktop Only)" section.  A PNG file of size 1920 x 2160 pixels is recommended.
6. Click the "Save Changes" button.

## Customising GAP Web Apps

You can configure the GAP Portal look and feel via the "Web App Styling" page in GAP Admin.  You can also use this screen to configure the styling for notification e-mails.

1. From the GAP Portal home screen, click "Options".
2. Click "Change Portal Appearance".
3. Select the tenant to customise from the "Tenant" drop-down list.
4. Check the "Use Custom Appearance" check box.
5. Configure the web application titles via the text boxes in the "Application Titles" section.  This determines the title shown in the browser and in the GAP App Switcher.
6. Set the logo shown in the header for each application using the "Select Image" button under the "Applications" section.  Logos should be 46 pixels in height.
7. Set the colours for each user interface element using the colour pickers under the "Applications" section.
8. Upload a favicon using the "Select Icon" button under the "Favicon File" section.
9. Upload a logo to use for e-mail notifications using the "Select Image" button under the "Notification Emails" section.
10. Click the "OK" button.


# GAP for Travel Country Reference

## Introduction

This document details the countries that are loaded by default with new instances of GAP for Travel.

There is no single, formally accepted definition of a country and, as such, there is no single, universally agreed-upon list of countries.  Therefore, for the purposes of GAP for Travel, it has been necessary to define such a list.

{% hint style="warning" icon="triangle-exclamation" %}
Note that this document does not provide political commentary / endorsement of any kind.  It is for reference purposes only.
{% endhint %}

## Definition

For the purposes of GAP for Travel, a country is defined as being:

* A geographical state that is a full or partial member of the United Nations (UN) **and**
* Included in the ISO-3166 Part 1 standard ("Codes for the representation of names of countries and their subdivisions")

## Country List

The names specified below are the "English Short Name" as described in ISO-3166 Part 1:

### Full UN Member States (193)

* Afghanistan
* Albania
* Algeria
* Andorra
* Angola
* Antigua and Barbuda
* Argentina
* Armenia
* Australia
* Austria
* Azerbaijan
* Bahamas (the)
* Bahrain
* Bangladesh
* Barbados
* Belarus
* Belgium
* Belize
* Benin
* Bhutan
* Bolivia (Plurinational State of)
* Bosnia and Herzegovina
* Botswana
* Brazil
* Brunei Darussalam
* Bulgaria
* Burkina Faso
* Burundi
* Cabo Verde
* Cambodia
* Cameroon
* Canada
* Central African Republic (the)
* Chad
* Chile
* China
* Colombia
* Comoros (the)
* Congo (the Democratic Republic of the)
* Congo (the)
* Costa Rica
* Côte d'Ivoire
* Croatia
* Cuba
* Cyprus
* Czechia
* Denmark
* Djibouti
* Dominica
* Dominican Republic (the)
* Ecuador
* Egypt
* El Salvador
* Equatorial Guinea
* Eritrea
* Estonia
* Ethiopia
* Fiji
* Finland
* France
* Gabon
* Gambia (the)
* Georgia
* Germany
* Ghana
* Greece
* Grenada
* Guatemala
* Guinea
* Guinea-Bissau
* Guyana
* Haiti
* Honduras
* Hungary
* Iceland
* India
* Indonesia
* Iran (Islamic Republic of)
* Iraq
* Ireland
* Israel
* Italy
* Jamaica
* Japan
* Jordan
* Kazakhstan
* Kenya
* Kiribati
* Korea (the Democratic People's Republic of)
* Korea (the Republic of)
* Kuwait
* Kyrgyzstan
* Lao People's Democratic Republic (the)
* Latvia
* Lebanon
* Lesotho
* Liberia
* Libya
* Liechtenstein
* Lithuania
* Luxembourg
* Macedonia (the former Yugoslav Republic of)
* Madagascar
* Malawi
* Malaysia
* Maldives
* Mali
* Malta
* Marshall Islands (the)
* Mauritania
* Mauritius
* Mexico
* Micronesia (Federated States of)
* Moldova (the Republic of)
* Monaco
* Mongolia
* Montenegro
* Morocco
* Mozambique
* Myanmar
* Namibia
* Nauru
* Nepal
* Netherlands (the)
* New Zealand
* Nicaragua
* Niger (the)
* Nigeria
* Norway
* Oman
* Pakistan
* Palau
* Panama
* Papua New Guinea
* Paraguay
* Peru
* Philippines (the)
* Poland
* Portugal
* Qatar
* Romania
* Russian Federation (the)
* Rwanda
* Saint Kitts and Nevis
* Saint Lucia
* Saint Vincent and the Grenadines
* Samoa
* San Marino
* Sao Tome and Principe
* Saudi Arabia
* Senegal
* Serbia
* Seychelles
* Sierra Leone
* Singapore
* Slovakia
* Slovenia
* Solomon Islands
* Somalia
* South Africa
* South Sudan
* Spain
* Sri Lanka
* Sudan (the)
* Suriname
* Swaziland
* Sweden
* Switzerland
* Syrian Arab Republic
* Tajikistan
* Tanzania, United Republic of
* Thailand
* Timor-Leste
* Togo
* Tonga
* Trinidad and Tobago
* Tunisia
* Turkey
* Turkmenistan
* Tuvalu
* Uganda
* Ukraine
* United Arab Emirates (the)
* United Kingdom of Great Britain and Northern Ireland (the)
* United States of America (the)
* Uruguay
* Uzbekistan
* Vanuatu
* Venezuela (Bolivarian Republic of)
* Viet Nam
* Yemen
* Zambia
* Zimbabwe

### Partial UN Member States (5)

* Cook Islands (the)
* Holy See (the)
* Niue
* Palestine, State of
* Taiwan (Province of China)

### Overseas Territories / Disputed Regions

The following entities (most of which are dependent overseas territories of other nations), whilst included in ISO-3166 Part 1, are not considered countries in GAP Insights due to them not being full or partial members of the UN in their own right. Where appropriate, they are included in other country borders as listed below.

| Territory / Region                                | Notes                                            |
| ------------------------------------------------- | ------------------------------------------------ |
| Åland Islands                                     | Included as part of Finland                      |
| American Samoa                                    | Included as part of the United States of America |
| Anguilla                                          | Included as part of the United Kingdom           |
| Antarctica                                        | Omitted entirely.                                |
| Aruba                                             | Included as part of The Netherlands              |
| Bermuda                                           | Included as part of the United Kingdom           |
| Bonaire, Sint Eustatius and Saba                  | Included as part of The Netherlands              |
| Bouvet Island                                     | Included as part of Norway                       |
| British Indian Ocean Territory (the)              | Included as part of the United Kingdom           |
| Cayman Islands (the)                              | Included as part of the United Kingdom           |
| Christmas Island                                  | Included as part of Australia                    |
| Cocos (Keeling) Islands (the)                     | Included as part of Australia                    |
| Curaçao                                           | Included as part of The Netherlands              |
| Falkland Islands (the) \[Malvinas]                | Included as part of the United Kingdom           |
| Faroe Islands (the)                               | Included as part of Denmark                      |
| French Guiana                                     | Included as part of France                       |
| French Polynesia                                  | Included as part of France                       |
| French Southern Territories (the)                 | Included as part of France                       |
| Gibraltar                                         | Included as part of the United Kingdom           |
| Greenland                                         | Included as part of Denmark                      |
| Guadeloupe                                        | Included as part of France                       |
| Guam                                              | Included as part of the United States of America |
| Guernsey                                          | Included as part of the United Kingdom           |
| Heard Island and McDonald Islands                 | Included as part of Australia                    |
| Hong Kong                                         | Included as part of China                        |
| Isle of Man                                       | Included as part of the United Kingdom           |
| Jersey                                            | Included as part of the United Kingdom           |
| Kosovo                                            | Included as part of Serbia                       |
| Macao                                             | Included as part of China                        |
| Martinique                                        | Included as part of France                       |
| Mayotte                                           | Included as part of France                       |
| Montserrat                                        | Included as part of the United Kingdom           |
| New Caledonia                                     | Included as part of France                       |
| Norfolk Island                                    | Included as part of Australia                    |
| Northern Mariana Islands (the)                    | Included as part of the United States of America |
| Pitcairn                                          | Included as part of the United Kingdom           |
| Puerto RIco                                       | Included as part of the United States of America |
| Réunion                                           | Included as part of France                       |
| Saint Barthélemy                                  | Included as part of France                       |
| Saint Helena, Ascension and Tristan da Cunha      | Included as part of the United Kingdom           |
| Saint Martin                                      | Included as part of France                       |
| Saint Pierre and Miquelon                         | Included as part of France                       |
| Sint Maarten                                      | Included as part of The Netherlands              |
| South Georgia and the South Sandwich Islands      | Included as part of the United Kingdom           |
| Svalbard and Jan Mayen                            | Included as part of Norway                       |
| Tokelau                                           | Included as part of New Zealand                  |
| Turks and Caicos Islands (the)                    | Included as part of the United Kingdom           |
| United States Minor Outlying Islands (the)        | Included as part of the United States of America |
| Virgin Islands (British)                          | Included as part of the United Kingdom           |
| Virgin Islands (U.S.)                             | Included as part of the United States of America |
| Wallis and Fortuna                                | Included as part of France                       |
| Western Sahara / Sahrawi Arab Democratic Republic | Included as part of Morocco                      |

### Common Names

The display names of some countries have been amended for clarity, consistency, brevity and / or convenience, specifically:

| ISO-3166 English Short Name                                | GAP for Travel Name      |
| ---------------------------------------------------------- | ------------------------ |
| Bahamas (the)                                              | Bahamas                  |
| Bolivia (Plurinational State of)                           | Bolivia                  |
| Central African Republic (the)                             | Central African Republic |
| Comoros (the)                                              | Comoros                  |
| Congo (the Democratic Republic of the)                     | Congo-Kisasha            |
| Congo (the)                                                | Congo-Brazzaville        |
| Cook Islands (the)                                         | Cook Islands             |
| Côte d'Ivoire                                              | Ivory Coast              |
| Czechia                                                    | Czech Republic           |
| Dominican Republic (the)                                   | Dominican Republic       |
| Gambia (the)                                               | Gambia                   |
| Holy See (the)                                             | Vatican                  |
| Iran (Islamic Republic of)                                 | Iran                     |
| Korea (the Democratic People's Republic of)                | North Korea              |
| Korea (the Republic of)                                    | South Korea              |
| Lao People's Democratic Republic (the)                     | Laos                     |
| Macedonia (the former Yugoslav Republic of)                | Macedonia                |
| Marshall Islands (the)                                     | Marshall Islands         |
| Micronesia (Federated States of)                           | Micronesia               |
| Moldova (the Republic of)                                  | Moldova                  |
| Netherlands (the)                                          | Netherlands              |
| Niger (the)                                                | Niger                    |
| Palestine, State of                                        | Palestine                |
| Philippines (the)                                          | Philippines              |
| Russian Federation (the)                                   | Russia                   |
| Sudan (the)                                                | Sudan                    |
| Taiwan (Province of China)                                 | Taiwan                   |
| Tanzania, United Republic of                               | Tanzania                 |
| United Arab Emirates (the)                                 | United Arab Emirates     |
| United Kingdom of Great Britain and Northern Ireland (the) | United Kingdom           |
| United States of America (the)                             | United States of America |
| Venezuela (Bolivarian Republic of)                         | Venezuela                |
| Viet Nam                                                   | Vietnam                  |

### Full Country Names List

* Afghanistan
* Albania
* Algeria
* Andorra
* Angola
* Antigua and Barbuda
* Argentina
* Armenia
* Australia
* Austria
* Azerbaijan
* Bahamas
* Bahrain
* Bangladesh
* Barbados
* Belarus
* Belgium
* Belize
* Benin
* Bhutan
* Bolivia
* Bosnia and Herzegovina
* Botswana
* Brazil
* Brunei Darussalam
* Bulgaria
* Burkina Faso
* Burundi
* Cabo Verde
* Cambodia
* Cameroon
* Canada
* Central African Republic
* Chad
* Chile
* China
* Colombia
* Comoros
* Congo-Kinsasha
* Congo-Brazzaville
* Costa Rica
* Ivory Coast
* Croatia
* Cuba
* Cyprus
* Czech Republic
* Denmark
* Djibouti
* Dominica
* Dominican Republic
* Ecuador
* Egypt
* El Salvador
* Equatorial Guinea
* Eritrea
* Estonia
* Ethiopia
* Fiji
* Finland
* France
* Gabon
* Gambia
* Georgia
* Germany
* Ghana
* Greece
* Grenada
* Guatemala
* Guinea
* Guinea-Bissau
* Guyana
* Haiti
* Honduras
* Hungary
* Iceland
* India
* Indonesia
* Iran
* Iraq
* Ireland
* Israel
* Italy
* Jamaica
* Japan
* Jordan
* Kazakhstan
* Kenya
* Kiribati
* North Korea
* South Korea
* Kuwait
* Kyrgyzstan
* Laos
* Latvia
* Lebanon
* Lesotho
* Liberia
* Libya
* Liechtenstein
* Lithuania
* Luxembourg
* Macedonia
* Madagascar
* Malawi
* Malaysia
* Maldives
* Mali
* Malta
* Marshall Islands
* Mauritania
* Mauritius
* Mexico
* Micronesia
* Moldova
* Monaco
* Mongolia
* Montenegro
* Morocco
* Mozambique
* Myanmar
* Namibia
* Nauru
* Nepal
* Netherlands
* New Zealand
* Nicaragua
* Niger
* Nigeria
* Norway
* Oman
* Pakistan
* Palau
* Panama
* Papua New Guinea
* Paraguay
* Peru
* Philippines
* Poland
* Portugal
* Qatar
* Romania
* Russia
* Rwanda
* Saint Kitts and Nevis
* Saint Lucia
* Saint Vincent and the Grenadines
* Samoa
* San Marino
* Sao Tome and Principe
* Saudi Arabia
* Senegal
* Serbia
* Seychelles
* Sierra Leone
* Singapore
* Slovakia
* Slovenia
* Solomon Islands
* Somalia
* South Africa
* South Sudan
* Spain
* Sri Lanka
* Sudan
* Suriname
* Swaziland
* Sweden
* Switzerland
* Syrian Arab Republic
* Tajikistan
* Tanzania
* Thailand
* Timor-Leste
* Togo
* Tonga
* Trinidad and Tobago
* Tunisia
* Turkey
* Turkmenistan
* Tuvalu
* Uganda
* Ukraine
* United Arab Emirates
* United Kingdom
* United States of America
* Uruguay
* Uzbekistan
* Vanuatu
* Venezuela
* Vietnam
* Yemen
* Zambia
* Zimbabwe
* Cook Islands
* Vatican
* Niue
* Palestine
* Taiwan


# Facilities Map Icon Reference

## Map Icon IDs

* building
* building-wheat
* building-user
* building-shield
* building-lock
* building-flag
* building-columns
* car-building
* house-building
* house
* city
* shop
* store
* school
* hotel
* place-of-worship
* hospital
* warehouse
* industry
* warehouse-full
* tree-city
* apartment
* fort
* container-storage
* tower-observation
* tent
* oil-well
* garage
* farm
* castle
* cabin

## Colours

* blue
* purple
* dark-purple
* dark-blue
* dark-green
* light-orange
* yellow
* light-green
* light-blue
* pink
* gray
* dark-gray


# Device Guides

## Introduction

This section details device-specific instructions for [supported device types](/monitoring-and-response/working-with-devices/supported-devices), including setup and user guides.


# GAP Guardian v3 User Guide

## Getting Started

GAP Guardian can be installed from the [Apple](https://apps.apple.com/us/app/gap-guardian/id1274453909) or [Google](https://play.google.com/store/apps/details?id=com.globalalerting.gapguardian) app stores.

To run the app on iOS, your device needs to be running a minimum of iOS 12.0.0.

To run the app on Android, your device needs to be running a minimum of Android 11.

### App Permissions

The app requires access to certain device functionality in order to function correctly.  Please follow the instructions below depending on your device's operating system.

{% tabs %}
{% tab title="iOS" icon="apple" %}
You will be prompted to allow the app access to use Bluetooth.  Tap the "Allow" button.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FEyHKxOEAC3KRnATIXjLA%2FIMG_0002.PNG?alt=media&amp;token=f204e08b-3e61-4cd6-84a4-64da2c4e12bd" alt="iOS Bluetooth prompt" width="375"><figcaption></figcaption></figure>

You will also be prompted to allow the app to use location services.

Tap "Allow While Using App". Later you may be prompted to permit the app to use your location when it runs in the background. If this happens, tap "Always Allow". You may also be prompted to allow the app to send you notifications. Tap "Allow".

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FYLeXcEOKF9v4bMOtbee1%2FIMG_0036.PNG?alt=media&amp;token=88fc6f75-b44d-47b9-8476-545faba7b234" alt="iOS Location Services prompt" width="375"><figcaption></figcaption></figure>

After logging in, you will also be prompted to allow notifications and access to motion data.  Tap "Allow" to both prompts.

<div><figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FjFWtTo3C159Xdmfht91k%2FIMG_0006.PNG?alt=media&amp;token=cb8691ce-f0dc-468b-9072-b222bb284dca" alt="iOS notifications prompt"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2Fol5XBWV1UHXk538ACmuc%2FIMG_0005.PNG?alt=media&amp;token=079c1399-bc9b-420b-a5f7-5967d96b3373" alt="iOS motion / fitness prompt"><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Android" icon="android" %}
You will be prompted to allow the app to use location services.

<div><figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FrDnhBUXOLAwSHbF0d7Is%2FScreenshot_20260327_102702.jpg?alt=media&amp;token=1b71f138-f6bd-4ac8-bd76-2398152158f0" alt="" width="375"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FWppHPlvVSp6t0RnzQq20%2FScreenshot_20260327_102717_Permission%20controller.jpg?alt=media&amp;token=f99baadf-4975-40e4-8a80-9a4466c643fb" alt="" width="375"><figcaption></figcaption></figure></div>

Tap "OK" at the "About location data" prompt.

At the next prompt, select "Precise" and "While using the app".

When prompted to grant permissions for alarms and reminders, toggle the "Allow permission" slider.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2Fl6evOLk3FO0StQBviWWr%2FScreenshot_20260327_102346_Settings.jpg?alt=media&amp;token=2ec11d8c-50ab-492a-bfd5-1162eb2a8961" alt="" width="375"><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

### Logging In

Enter your user name in the "Username" text box then tap "Next".

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FCPL0yiwgwBVVvtsQFQDC%2FIMG_0004.PNG?alt=media&amp;token=d880f658-f5ac-4291-b5fa-7fd5d1b8efdc" alt="GAP Guardian login screen" width="375"><figcaption></figcaption></figure>

When prompted for a password, enter it and tap "Password" text box and tap "Login".

If you only have one device assigned to you on the Portal, your credentials will be validated, and the Dashboard will load.&#x20;

If you have more than one device assigned to you, you will be asked to select which device you are using.

Finally, you may be prompted to accept your service provider's terms and conditions before proceeding to the Dashboard.

## Navigation

The Dashboard screen shows all the app functions available to you.

{% hint style="info" %}
Some functions may not be available to you.  Contact your GAP administrator for further information.
{% endhint %}

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FVOHiWeULpolDKAJ13Puy%2FIMG_0007.PNG?alt=media&amp;token=181137fd-669a-43bd-9c82-0bb742d7d784" alt="GAP Guardian home screen" width="375"><figcaption></figcaption></figure>

### Language

You can change the display language used by the app.

The following languages are currently supported:

* English
* French
* Spanish
* Italian
* German
* Polish
* Bulgarian
* Portuguese
* Ukrainian
* Turkish
* Russian
* Japanese
* Korean
* Simplified Chinese
* Arabic

To change the display language:

1. Tap "Settings".
2. Tap "App Language".
3. Tap the language you want to use.

## SOS

SOS mode raises an emergency alert on the GAP Portal. It is used to indicate that you are in danger and require assistance.

### Activating SOS Mode

To activate SOS mode, press and hold the "SOS" button until the animation around the edge of the icon completes a full circle. When complete, a red banner will display, and the "SOS" button will pulsate. An SOS message will be sent at regular intervals to the Portal.

<div><figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FCzrowY8OcYhxoa28VQrT%2FIMG_0009.PNG?alt=media&amp;token=dc0929bf-14c5-43d6-863a-db2587019a15" alt="GAP Guardian home screen"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FvbU0LimPBge7hB1YrlsI%2FIMG_0010.PNG?alt=media&amp;token=be475a59-07a6-4184-9aa6-96d164d85fb8" alt="GAP Guardian home screen when SOS is activated"><figcaption></figcaption></figure></div>

### Cancelling SOS Mode

To cancel SOS mode, tap "SOS" and tap "Yes" at the warning prompt.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FBpSQKLuhyjXp0RKl7E9Z%2FIMG_0011.PNG?alt=media&amp;token=4646fdba-806d-4d93-9fa8-2642a7556f13" alt="GAP Guardian SOS cancel confirmation prompt" width="375"><figcaption></figcaption></figure>

### Changing SOS Settings

#### SOS Message Interval:

To configure the SOS message interval:

1. Tap "Settings"
2. Tap "SOS"
3. Tap "SOS Message Frequency"
4. Select your chosen interval from the list.

#### Phone Call

To trigger a phone call when SOS mode is started:

1. Tap "Settings".
2. Tap "SOS".
3. Tap toggle the "Call ... " option.

#### Haptic Feedback

To enable haptic feedback when an SOS is acknowledged:

1. Tap "Settings".
2. Tap "SOS".
3. Toggle the "Vibrate" option.

## Monitor Me

Monitor Me is a customisable, user-initiated monitoring mode which allows you to decide what aspects of monitoring you would like to activate when Monitor Me is switched on. These include:

* How often you should be required to check in
* How often your position should be reported
* If man-down detection should be enabled
* If a call should be initiated so that a remote operator can listen in

### Configuring Monitor Me

{% hint style="info" %}
Monitor Me settings cannot be changed when Monitor Me is active.  Stop Monitor Me prior to making changes to Monitor Me settings.
{% endhint %}

To configure your Monitor Me settings, tap the "Settings" button then "Monitor Me". You can configure the following values:

* Whether you should be prompted to add a note when starting Monitor Me ("Annotation on start")
* Whether you should be prompted to add a note when stopping Monitor Me ("Annotation on stop")
* How often you should check in ("Check-In Frequency")
* How late you can check-in ("Check-in Buffer")
* How often your location should be reported ("Position Reporting Frequency")
* How long your device can be motionless before an alert is sent to the Portal ("Man-Down")
* How long until an alert is sent to the Portal if you've been motionless ("Cancel Man-Down Alarm")
* How sensitive the motion detection is ("Movement Sensitivity")
* Whether man-down alerts should be supressed when the device is charging ("Charging Mode")
* Whether a phone call should be triggered when Monitor Me is started ("Call ... ")

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2F6RPiLwxjMisDM7NoHrMy%2FIMG_0012.PNG?alt=media&amp;token=35c99c64-26f4-466d-95b2-2a26616361c7" alt="GAP Guardian Monitor Me settings" width="375"><figcaption></figcaption></figure>

### Starting Monitor Me

To start Monitor Me, tap "Monitor Me".  The edge of the button will rotate whilst Monitor Me is activating, after which point, the button will pulsate to indicate it is active.  The banner will also temporarily display a notification to that effect.

The "Check In" button will change to show a countdown timer, indicating when you are next required to check in.  If you do not check in when required, a banner will be shown reminding you to check in.

<div><figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2Fv10JxVnMW6PiqGzxfL9M%2FIMG_0015.PNG?alt=media&amp;token=cfb86fad-4c76-4806-a2ff-be08b2a49f61" alt="GAP Guardian home screen when starting Monitor Me"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2F9G3KUdBYq0j03HXLMEDf%2FIMG_0013.PNG?alt=media&amp;token=2038868a-71a3-4630-b9f3-4e7aec24c890" alt="GAP Guardian home screen Monitor Me started banner"><figcaption></figcaption></figure></div>

### Checking In

To check in, tap "Check In".  The edge of the button will rotate whilst the check in is performed.  The banner will also temporarily display a notification to that effect.

<div><figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FQGf2hxCRQWIdIvCgnfA8%2FIMG_0018.PNG?alt=media&amp;token=31e65442-8c58-4087-93fa-59a7b6a83cc6" alt="GAP Guardian home screen when checking in"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FE6YzT85KzUb8jsOLhkfB%2FIMG_0017.PNG?alt=media&amp;token=1df6376d-a4b0-4ea2-944a-3001aa6410b8" alt="GAP Guardian home screen check-in complete banner"><figcaption></figcaption></figure></div>

If you don't have data connectivity, you may be prompted to attempt a check-in via an SMS message.

If your app is configured to request an annotation when performing a check-in, you will be prompted to enter some text before completing the check-in.  When complete, tap the "Check In" button.  You need not enter any text if you do not want to.  You can turn check-in annotations on or off via the "Settings" screen.

If your app is configured to require a photo when performing a check-in, you will be prompted to take a photo before completing the check-in.  When complete, tap the "Use Photo" button.  You can turn Photo Check-In on or off via the "Settings" screen.

#### Stopping Monitor Me

To stop Monitor Me, tap the "Monitor Me" button and then tap "Yes" at the warning prompt.  The edge of the button will rotate whilst Monitor Me is stopping, after which point the button stop pulsating.  The banner will also temporarily display a notification to that effect.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2Fkn4jdft87gOud7uy5ljN%2FIMG_0016.PNG?alt=media&amp;token=b03b5365-467b-4b99-bec5-b54039e7fd62" alt="GAP Guardian stop Monitor Me confirmation prompt" width="375"><figcaption></figcaption></figure>

## Check-In Schedules <a href="#checkinschedules" id="checkinschedules"></a>

In addition to Monitor Me, your administrator can create Check-In Schedules, requiring you to check in at predefined intervals or certain times of the day.  These are assigned remotely to your device via the GAP Portal or GAP Admin, by your administrator.

### Enabling the Check-In Schedule

To enable your assigned Check-In Schedule, tap "Settings" then "Check-In Schedule" and then toggle the "Enable Check-In Schedule" option.  The details of your assigned schedule will be displayed.

If there is no Check-In Schedule assigned to your device, an error message will be displayed.

If Monitor Me is active, your next check-in will be calculated based on the chosen Monitor Me interval and your assigned Check-In Schedule.

### Disabling the Check-In Schedule

To disable your assigned Check-In Schedule, tap "Settings" then "Check-In Schedule" and then flick the "Enable Check-In Schedule" option to "off".

### Configuring Notification Sounds

iOS users can change their notification sound by tapping "Settings" then "Notification Sounds". Android users should use the functionality built into the Android operating system (where supported).

## Tracking

When tracking mode is active, your location information will be sent to the Portal on a set interval or when you move more than approx. 200M.

### Starting Tracking Mode

To start tracking, tap "Tracking".

When tracking mode is enabled, the "Tracking" button on the Dashboard will pulsate.

<div><figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FEXzHAw7mkY12bVsBOVvs%2FIMG_0019.PNG?alt=media&amp;token=1f83289c-2682-4894-a786-d5fbef746ff2" alt="GAP Guardian home screen when tracking starting"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2Fj1qBZx3H4CjPCriJBJsJ%2FIMG_0020.PNG?alt=media&amp;token=bf8b3fb4-3181-470d-a953-b1a7aa17a72a" alt="GAP Guardian tracking started banner"><figcaption></figcaption></figure></div>

### Configuring Tracking Mode

To configure tracking based on a particular interval, tap "Settings" then "Tracking". Set the "Location Change Mode" toggle to off then tap the "Position Report Frequency" option and select your chosen frequency.

In this mode, you can also configure whether position reports should only be sent when you have moved more than a set distance using the "Movement Buffer" option.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FsbspZtaKosri5WZ2qF6H%2FIMG_0023.PNG?alt=media&amp;token=310818c4-cd8f-4e1e-9438-eb31c1423ad1" alt="GAP Guardian Tracking settings" width="375"><figcaption></figcaption></figure>

To configure the tracking based on a significant movement (approx. 200M), tap "Settings" then "Tracking". Set the "Location Change Mode" toggle to on.

In this mode, you can also configure the maximum frequency position reports will be sent using the "Minimum Report Interval" option.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FBpN9hj8DdxiwU7ErHaoA%2FIMG_0024.PNG?alt=media&amp;token=fee45f91-d75d-48f6-8e56-939455540108" alt="GAP Guardian Tracking settings" width="375"><figcaption></figcaption></figure>

### Stopping Tracking Mode

To deactivate tracking, tap the "Tracking" button and then tap "Yes" at the warning prompt.

<div><figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2F9UFQPqrrrxdsNCg4uPqx%2FIMG_0021.PNG?alt=media&amp;token=13bfe45d-0654-4557-90ea-0282c3d91429" alt="GAP Guardian tracking stopped confirmation prompt"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FaBc2NssoKHsc1h4PCFez%2FIMG_0022.PNG?alt=media&amp;token=ee10780e-3026-4a44-83e6-3d64c05880f6" alt="GAP Guardian tracking stopped banner"><figcaption></figcaption></figure></div>

## Messages <a href="#messages" id="messages"></a>

The Messages screen allows you to converse via text messages with a GAP Portal operator.

When you receive a message, a notification will be displayed and a red badge indicating the number of unread messages will be shown on the Dashboard screen and on your device's app launcher screen (on supported Apple, Samsung and Sony devices only).

### Sending Messages

To send a message to a recipient with whom you've not conversed previously, tap "Messages" then the "+" at the top-left hand side of the screen.  Select a recipient from the "Choose Recipient" screen.  Enter your message in the text box at the bottom of the screen and tap "Send".

### Replying to Messages

To reply to a message, tap "Messages" then the name of the sender.  Enter your message in the text box at the bottom of the screen and tap Send.

## Maps <a href="#maps" id="maps"></a>

The Maps screen allows you to view your current location, recent track. nearby devices, geofences, travel alerts and points of interest on a map.

### Configuring Maps

To view items on the map, tap the "Maps" screen then tap the "hamburger" icon at the top right-hand side of the screen. Toggle items on or off using the sliders.

To change the map type, tap the "hamburger" icon at the top right-hand side of the screen.  Tap the "Map Type" option and select either "Street", "Satellite" or "Hybrid" as required.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FmByxlR4DVysavHztq5NC%2FIMG_0025.PNG?alt=media&amp;token=6e618ecd-e639-4a72-a2f3-015ccc5e5497" alt="GAP Guardian Map screen settings" width="375"><figcaption></figcaption></figure>

### Contacting Other Users

Tap the "Maps" screen then tap the "hamburger" icon at the top right-hand side of the screen.  Toggle the "Show nearby devices" on using the slider.  You can optionally set the distance within which you can view nearby devices via the "Only show devices nearer than" click-through menu.  If you would like to see the emergency state for devices shown on the map, toggle the "Show emergency state" option to on.

Devices will be shown on the map using the same icons as the GAP Portal.  Tap on a pushpin for more information.  You can call, e-mail or message the user via the relevant buttons on the right-hand side of the pop-up menu.

## Travel Alerts

To view travel alerts, tap "Travel Alerts".  Tap on an alert to view further details.

You can sort travel alerts by distance, country name, risk level and date using the sort icon on the top right-hand side of the screen.

<div><figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FcxxwEKMB0Yi3pdwoVAO9%2FIMG_0026.PNG?alt=media&amp;token=ad5df956-79bb-46fb-962e-bae315229e8b" alt="GAP Guardian Travel Alerts list view"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FRZ1mKyapUM9NLMZJJnrF%2FIMG_0028.PNG?alt=media&amp;token=fed6e239-3750-479e-837b-8ac2d762189c" alt="GAP Guardian Travel Alerts list view sort options"><figcaption></figcaption></figure> <figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2Fmbb4J5sCM7iJcWCw9Tec%2FIMG_0027.PNG?alt=media&amp;token=60b2a92b-f888-4051-b3f0-348bdfe312a9" alt="GAP Guardian Travel Alerts detail view"><figcaption></figcaption></figure></div>

## Itineraries

To view itineraries, tap "Itineraries". Tapping on an individual itinerary will open the detail view.

## Documents

To view documents, tap "Documents".

Tapping on a folder will open that folder.

Tapping on a document will open the document (if the file format is supported by your device).

To navigate back up the folder structure, tap the back icon on the banner.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FFPmx6waejB4ovIBdRYvM%2FIMG_0030.PNG?alt=media&amp;token=91006fce-2398-46b9-afe3-c3e00f187c83" alt="GAP Guardian Documents screen" width="375"><figcaption></figcaption></figure>

## Quick Call

The Quick Call function presents you with two buttons to initiate phone calls to numbers configured by your administrator.

To initiate a quick call, tap "Quick Call" then tap the button representing the number you wish to dial.

## Photos

The "Take Photo" function allows you to take a photo and upload it to GAP (where it can be viewed in the device's inbox).

To take a photo, tap "Take Photo" on the Dashboard.

If prompted to grant the app access to your camera, tap "Allow".

Tap the white button at the bottom of the screen.

If you are happy with the photo, tap "Use Photo", otherwise, tap "Retake".  If you want to enter some accompanying text, do so in the "Notes" box then tap "Upload Photo".

## Notes

To take a note, tap "Notes". Enter your text in the text box and tap "Upload".

## My Info <a href="#myinfo" id="myinfo"></a>

The My Info function allows you to update information stored in your user profile.

To amend your info, tap "My Info".  Complete the form as required and tap "Update".

## Location Service Settings <a href="#locationservicesettings" id="locationservicesettings"></a>

You can configure how the app obtains a location from the device's operating system using the Location Service settings screen.  On this screen you can configure:

* How long the app will remember its last position ("Remember Location")
* How long the app will spend trying to obtain a new position ("Location Timeout")
* How accurate you would ideally like the position data to be ("Location Accuracy")
* If you'd like to use the position of the nearest beacon if the position returned by the device's operating system is inaccurate ("iBeacon Fallback Threshold")

To configure location service settings, tap "Settings" then tap "Location Service".

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2F4RgYXPtfsOzNPIM4CcAH%2FIMG_0032.PNG?alt=media&amp;token=4dbf79ec-5452-46dd-b197-9a5e44b998e6" alt="GAP Guardian Location Service settings" width="375"><figcaption></figcaption></figure>

## Privacy Settings <a href="#privacysettings" id="privacysettings"></a>

You can configure whether your location is provided along with certain message types via the "Privacy" screen under "Settings".

To configure privacy settings, tap "Settings" then tap "Privacy".  Toggle each option as required.

{% hint style="info" %}
Location information is always provided in SOS messages.
{% endhint %}

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FkWBr4ySs9POy26JIn48E%2FIMG_0033.PNG?alt=media&amp;token=8d06784f-e9d6-4824-8393-5fc5236b7652" alt="GAP Guardian Privacy settings screen" width="375"><figcaption></figcaption></figure>

## Analytics Settings <a href="#analyticssettings" id="analyticssettings"></a>

You can opt in to provide usage information to help us improve the app.

To turn app analytics on or off, tap "Settings" then tap "Analytics".  Toggle the "Allow analytics" option as required.

## Log <a href="#log" id="log"></a>

The Log screen contains information on the app's activities, including any warnings and errors.

### Viewing the Log

To view the log, tap "Settings" then tap "Log".

You can filter and re-order the log using the "Display Options" icon at the top right-hand corner of the Log screen.

### Uploading the Log

To send a copy of the log to the GAP Portal, tap "Upload".

## App Tester

To perform basic testing to verify the functionality of the app, tap "Settings" then "App Tester".

To begin a test, tap the Start button.

<figure><img src="https://2027548636-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfPo3Oq4jwehNskRreYx2%2Fuploads%2FX53Cjw5Q5D3Wn8W6tB0i%2FIMG_0035.PNG?alt=media&amp;token=8654e35a-e860-45ac-9da7-d8cb8aaed720" alt="GAP Guardian App Tester screen" width="375"><figcaption></figcaption></figure>

## Deactivation <a href="#deactivation" id="deactivation"></a>

Deactivating the app will delete your settings and return the app to the Login screen.  You will need to login again before the app will function.

To deactivate the app, tap "Settings" then tap the "Deactivate" link at the bottom of the screen.


# GAP Guardian v3 Administration Guide

This article explains how to administer GAP Guardian devices via the GAP Portal.

## Configuring Tenant-Level Default Settings

You can set up default settings that apply to new devices on a per-tenant basis via the GAP Portal.

When a new app is activated, the tenant-level default settings will be applied.

{% hint style="warning" icon="triangle-exclamation" %}
Changing these settings does not impact existing apps.
{% endhint %}

To configure tenant-level default app settings:

1. In the GAP Portal, click "Options".
2. Click "Tenants".
3. Click on the name of the tenant whose settings you wish to change.
4. Click "Default App Feature Settings".
5. Click on the device type whose defaults you wish to change (either "GAP Guardian for Android" or "GAP Guardian for iOS").
6. Select which app screens should be available by checking / unchecking options under the "App Features" section.
7. Select which actions should be performed upon app start-up by checking / unchecking options under the "Start-Up Options" section.
8. Set the default setting values for each app feature using the drop-down lists under the "Monitor Me", "Location Service Settings", "Tracking Mode" and "SOS Mode" sections.
9. Click "OK".

{% embed url="<https://vimeo.com/1177540519?fe=ci&fl=sv&share=copy>" %}

### Configure Quick Call <a href="#creatinganewdevice" id="creatinganewdevice"></a>

To configure the app's Quick Call function:

1. In the GAP Portal, click "Options".
2. Click "Tenants".
3. Click on the name of the tenant whose settings you wish to change.
4. Click "App Call Buttons".
5. Enter up to 2 numbers, labels and descriptions into the relevant text boxes.
6. Enter up to 2 numbers, one for SOS calls and one for Monitor Me calls into the "SOS Call Number" and "Monitor Me Call Number" text boxes respectively.
7. Click "OK".

## Creating App Devices <a href="#creatinganewdevice" id="creatinganewdevice"></a>

{% hint style="info" %}
If the [option to automatically create app device records upon login](/administration/access-control/managing-tenants#editing-tenants) is not enabled at the tenant-level, device records must be created manually prior to login.
{% endhint %}

1. In the GAP Portal click "Devices"
2. Click "+".
3. Enter a device ID into the "Device Id" text box.  The device ID must be unique (e.g. IMEI or GUID).
4. Select a tenant in which the device will reside from the "Tenant" drop-down list.
5. Enter a device ID in the "Device Id" text box.  This value must be unique (e.g. an IMEI or GUID).
6. Enter a friendly name in the "Friendly Name" field.
7. Select a user to assign the device to via the "Assigned User" drop-down list.  Note the user must in the same tenant as the device.
8. Enter a description into the "Description" text box.
9. Enter the device's phone number into the "Phone Number (MSISDN)" text box.
10. Select a map icon and colour from the pickers.
11. Click the "OK" button.

## Remote Operation & Administration

### Requesting Location <a href="#howtosendalocationrequest" id="howtosendalocationrequest"></a>

To request the current location of the device:

1. In the GAP Portal, click "Devices".
2. Click the name of the device to which you wish to send the command.
3. Under the "Context" section, click "Request Location".

It may take a few minutes for the current location to be returned via a message in the Inbox.

### Requesting Check-In <a href="#howtorequestacheckin" id="howtorequestacheckin"></a>

To request that the user checks in:

1. In the GAP Portal, click "Devices".
2. Click the name of the device to which you wish to send the command.
3. Under the "Check-In Actions" section, click "Request Check-In".
4. Select how long the user should have to check in before they their device enters an overdue state using the "Check-In Period" drop-down list.
5. Click the "Send" button.

### Manually Checking In <a href="#howtoperformamanualcheckin" id="howtoperformamanualcheckin"></a>

You can manually check in a user (for example, if their device is not working) via the "Manual Check-In" button.

See [Monitoring & Check-Ins](/monitoring-and-response/working-with-devices/monitoring-and-check-ins#howtoperformamanualcheckin) for more information.

### Declaring an Emergency <a href="#howtodeclareanemergency" id="howtodeclareanemergency"></a>

You can declare an emergency on behalf of the device user. This will send a command to their device to activate SOS mode.

1. In the GAP Portal, click "Devices".
2. Click the name of the device to which you wish to send the command.
3. Under the "Emergency Actions" section, click "Declare Emergency".
4. Click the "Yes, Declare Emergency" button.

### Acknowledging an Emergency <a href="#howtoacknowledgeanemergency" id="howtoacknowledgeanemergency"></a>

When a device is in an emergency state, you can acknowledge an emergency.  This will send a message to the device to that effect.

1. In the GAP Portal, click "Devices".
2. Click the name of the device to which you wish to send the command.
3. Under the "Emergency Actions" section, click "Acknowledge Emergency".
4. Click the "Yes, Acknowledge Emergency" button.

### Cancelling an Emergency <a href="#howtocancelanemergency" id="howtocancelanemergency"></a>

When a device is in an emergency state, you can cancel an emergency from the Portal. This will send a message to the device to deactivate SOS mode.

1. In the GAP Portal, click "Devices".
2. Click the name of the device to which you wish to send the command.
3. Click "Cancel Emergency".
4. Click the "Yes, Cancel Emergency" button.

### Sending Text Messages <a href="#howtosendatextmessage" id="howtosendatextmessage"></a>

To send the device a text message:

1. In the GAP Portal, click "Devices".
2. Click the name of the device to which you wish to send the message.
3. Click "Send Text Message".
4. Enter the message in the text box.
5. Optionally, check the "Force SMS" check box to send the message as an SMS rather than a push notification (note: this will incur a charge and the message will appear in the device's default messaging app, rather than the app's Messages feature).
6. Click the "Send" button.

### Configure App Features <a href="#howtochangeappfeatures" id="howtochangeappfeatures"></a>

To change which app features are enabled for an individual app instance:

1. In the GAP Portal, click "Devices".
2. Click the name of the device whose features you wish to change.
3. Under the "Device Actions" section, click "Configure Device".
4. Click "Feature Settings"
5. Select which app screens should be available by checking / unchecking the options listed
6. Click the "Send" button.

### Configuring App Settings <a href="#howtochangeappsettings" id="howtochangeappsettings"></a>

To change the app's settings:

1. In the GAP Portal, click "Devices".
2. Click the name of the device whose features you wish to change.
3. Under the "Device Actions" section, click "Configure Device".
4. Click "Application Settings"
5. Select which actions should be performed upon app start-up by selecting "Update start-up options" from the "Start-Up Options" drop-down list and then checking / unchecking the options that appear.
6. Set the default setting values for each app feature using the drop-down lists under the "Monitor Me", "Location Service Settings", "Tracking Mode" and "SOS Mode" sections.
7. Click the "Send" button.

### Requesting Logs <a href="#howtodeactivatetheapp" id="howtodeactivatetheapp"></a>

The app's log can assist with troubleshooting app operation.  The user can upload it to the GAP Portal themselves (see [GAP Guardian v3 User Guide](/devices/gap-guardian-app/gap-guardian-v3-user-guide#log) for more information), or a GAP Portal operator can request it.  The app log will then appear as a message in the device's inbox.

1. In the GAP Portal, click "Devices".
2. Click the name of the device whose log you want to request.
3. Under the "Device Actions" section, click "Configure Device".
4. Click "Advanced".
5. Click "Request Log".

### Deactivating <a href="#howtodeactivatetheapp" id="howtodeactivatetheapp"></a>

You can deactivate an app so that the user's configuration is deleted from the device and they are returned to the Login screen.

1. In the GAP Portal, click "Devices".
2. Click the name of the device you wish to deactivate.
3. Under the "Device Actions" section, click "Configure Device".
4. Click "Force Log Out".
5. Click the "Yes, Deactivate" button.


# App Privacy Policy

### Introduction

We are committed to protecting your privacy, and we take the responsibilities regarding the security of customer information very seriously.

This policy explains how we use customer information and how we protect your privacy.

### What We Collect

To use the app in conjunction with our service, you or your administrator will first need to set up your device on the platform.  At a minimum, this requires entry of the following information:

* A unique identifier (this can sometimes be your device's IMEI number but only if this has been explicitly supplied to the administrator, we do not collect this electronically)
* Your name
* Your e-mail address
* Your device's phone number

Please contact your administrator for further information.

During the course of normal use, the app may collect and transmit to us the following information:

* Your location (as provided by your device's Location Service or, for v3 only, nearby pre-registered iBeacons)
* Your device's battery state and level
* Your device's signal strength (v3 and above, Android only)
* The SSID of the Wi-Fi network you are connected to (v3 only)
* The version of the app you are running
* Your device's operating system version
* Motion information such as whether you are stationary, walking, cycling or travelling in a motor vehicle at the time a message is sent (v3.4.0 and above only)
* Device ID, make and model, device operating system version, mobile network, app version, session length, language and error information (v3.5.0 and above, in the event of a crash)
* Which app functions you access (v3.7.0 - v3.12.x, anonymously and on an opt-in basis)

If you use the app's "man down" feature, we will use your device's accelerometer sensor to detect whether your device has moved within a configurable period.

### Use Of Customer Information

We require certain information to allow you to use our services.  We collect the details provided by you and / or your administrator, together with information we learn about you from your use of our services.

We may use your information to provide and personalise our service.  We may also use your contact details to communicate with you.  We may use your information to send you news about our products and services. We may contact you by e-mail and / or telephone (including SMS) for these purposes.

Your data may be used for the following purposes: accounting, billing and audit, security, administrative and legal purposes, statistical and marketing analysis, systems testing, maintenance and development, customer surveys, customer relations and to help us in any future dealings with you, for example by identifying your requirements and preferences.

If you do not want to receive commercial communications from us, you may opt out by following the unsubscribe link in any of our e-mail communications.

We like to receive feedback from our customers to help us improve our service. We may contact you by e-mail or telephone to ask your opinions.

Please note there may be instances where it may be necessary for us to communicate with you for administrative or operational reasons relating, for example, to advise you of alterations to our services.

We may also use and analyse the information that we collect so that we can administer, support, improve and develop our business.

The information that you provide to us will be held securely in our systems, which are located on our premises or those of an appointed third party.  We may also allow access to your information by other third parties who act for us for the purposes set out in this policy or for other purposes approved by you.  It is possible that your data may be processed outside of Europe.

### Site Tracking

We use tracking software to monitor customer traffic patterns and site usage to help us develop the design and layout of our applications and online services to better meet the needs of customers.  This software does not enable us to capture any personally identifying information.

### Security & Data Retention

When you enter personally identifying information, your details are transmitted across the internet in encrypted form.

Furthermore, as required by the UK Data Protection Acts of 1984 and 1998, we follow strict security procedures in the storage and disclosure of information which you have given us, to prevent unauthorised access.  Our security procedures mean that we may request proof of identity before we can disclose sensitive information to you.

In the circumstances set out in this policy where we pass your information to a third party, we will ensure that the security measures that such party has in place in relation to the processing of your data are at least as stringent as those employed by us.  This does not apply where we are required by law to pass your information to a third party.

We will retain your information for a reasonable period or as long as the law requires.

### Cookies

Cookies are small pieces of information that are stored by your browser on your computer's hard drive.  Cookies can be deleted from your hard drive if you wish.  Most web browsers automatically accept cookies, but you can change your browser settings to prevent that.  Even without a cookie you can use most of the features on the web site.  Our cookies do not contain any personally identifying information.

Cookies may also be used in e-mail messages you have agreed to receive and on our website to help us measure the effectiveness of our advertising and how visitors use our site.  If you do not want to help us learn how to improve our offers and marketing strategy, you can opt out of this e-mail cookie.  If you click on a link in the e-mail, we may set a cookie on your browser.

If you visit any of our web sites as a result of clicking on a link, we are able to understand how you interact with the pages of our website through the combination of the cookie and pixels set on the pages of our website.  This enables us to understand what interested you in our e-mails and what did not, and what interests you about our website and what does not.  We can then try to send you more interesting information in the future.  Please note that this information is for our use only - we do not disclose or share this information with any third parties.  If you do not wish this to happen, you can change the cookie settings in your browser.

### Use Of Pixels

In order to understand how our customers interact with the e-mails and the content that we send, we may use pixels in the e-mail in order to understand who has opened the message.  In order to provide our content in the most interesting way, we may also use pixels to learn whether you can receive e-mails in text or HTML form.

### Your Consent

In using our services, you consent to the collection and use of this information by us in the ways described above.

If you have any further questions about our Privacy Policy or its implementation, please contact us. If we decide to change our Privacy Policy, we will post those changes on this page so that you are always aware of what information we collect, how we use it and in what circumstances we disclose it.


# Cell Phone

The Cell Phone device type is a lightweight duty-of-care offering that works on any phone that can send and receive SMS.

The Cell Phone device type supports Monitor Me and Check-In Schedules (with reminders being sent by SMS) and doesn't require any software to be installed on the device.

If you have a smartphone, you can check in via the link provided in the message.  If your phone supports it, your check-in can even include your current location via browser geo-location.  If you have a older style phone without a web browser, you can reply to the message to check in.

{% hint style="info" %}
Note that inbound SMS charges apply.

This function will only be supported for domestic use in the UK (+44) and USA / Canada (+1) although other countries can be added upon request.
{% endhint %}

## Adding Devices

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click "+".
3. Select a tenant from the "Tenant" drop-down list.
4. Select "Cell Phone" from the "Device Type" drop-down list.
5. Enter a unique ID in the "Device Id" text box.
6. Enter a display name for the device in the "Friendly Name" text box.
7. Assign a user to the device using the "Assigned User" drop-down list.
8. Enter the device's phone number in the "Phone Number" text box.
9. Click the "OK" button.

## Monitoring

### Checking In

Check-in reminders are sent via SMS.

Each message contains a link to a web page where you can check in.

If your web browser is allowed to access your device's location, this information will be provided with your check-in.  If not, an IP address geolocation will be used.

If your device does not have a web browser, you can reply to the reminder SMS with:

```
CHECK IN
```

### Starting Monitoring

To start monitoring, send:

```
MONITOR ME x
```

Where x is the check-in frequency in minutes (e.g. to check in every hour, send "MONITOR ME 60").

### Stopping Monitoring

{% hint style="danger" icon="circle-exclamation" %}
Do not send "STOP MONITOR ME" as this will prevent you from receiving further SMS from GAP.
{% endhint %}

To stop monitoring, send:

```
CANCEL MONITOR ME
```


# Dumb Phone

{% hint style="info" %}
Note that Phone number and call charges apply for the use of this service.
{% endhint %}

The IVR Check-in service allows a user to check-in from a traditional landline or mobile telephone via a phone call.

## Adding a Device

The phone number you will be calling from must be registered on GAP as a device of type "Dumb Phone".

{% hint style="info" %}
If the "Dumb Phone" device type is not available for your tenant, please contact your administrator.
{% endhint %}

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click "+".
3. Select a tenant from the "Tenant" drop-down list.
4. Select "Dumb Phone" from the "Device Type" drop-down list.
5. Enter a unique the phone number in international format in the "Device Id" text box.
6. Enter a display name for the device in the "Friendly Name" text box.
7. Assign a user to the device using the "Assigned User" drop-down list.
8. Click the "OK" button.

## Options

When the call is answered, you will be prompted to enter your PIN number.

Once authorised, you will be greeted by your first name and then presented with the following options:

* Press 1 to check in
* Press 2 to check out
* Press 3 to leave a message
* Press 4 to hear the options again
* Press 0 to speak to the operator

#### Option 1

Choosing this option will cause a check-in message to be logged against the phone from which you are calling.

#### Option 2

Choosing this option will cause a check-out message to be registered for the phone you are dialling in from.  This is for informational purposes only.

#### Option 3

You may leave a voice message with this option.  On the GAP portal, a message will appear in the phone Inbox.  Clicking on the message will cause the recording to be played back to the user.

#### Option 4

This option repeats the menu options.

#### Option 0

Choosing this option will cause your call to be connected to an operator, if this option has been enabled by your administrator.


# Provisioning Iridium Devices

## Iridium Extreme

{% hint style="info" %}
Before you set up an Iridium Extreme device for use with GAP, you must ensure that you have provisioned the handset on Iridium SPNet for SBD or LBS.

If you are not familiar with SPNet, please contact your airtime provider.
{% endhint %}

Obtain the registration PIN code from the GAP Portal:

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click the device you want to register.
3. Click "Configure Device" under the "Device Actions" section.
4. Click "Advanced".
5. Note the value in the "PIN Code" text box.

On the Iridium Extreme device:

1. Using the keypad, enter \*#575# to put the phone in registration mode.  The phone should display a 5-digit registration number.
2. Enter the PIN number from the GAP Portal you obtained in the previous steps.

You will need to configure the device in SPNet to send messages to GAP.

Please contact the GAP Support Desk for the relevant information to enter into SPNet.

## Iridium GO!

{% hint style="info" %}
When creating a device of type Iridium GO! on GAP, use the device's IMEI as the device ID and ensure that the device's phone number is entered into the "Phone Number" field.
{% endhint %}

### Configuring Tracking

{% hint style="info" %}
Contact the Support Desk to obtain the e-mail address to enter at step 3.
{% endhint %}

1. Log on to the device’s administrative web interface.
2. Click "Location Options" from the banner menu.
3. Enter the e-mail address into the "Tracking Recipient" and "Quick GPS Recipients" text boxes.
4. Select the desired tracking frequency from the “Tracking Frequency” drop-down list.
5. Click the "Save" button.

### Configure SOS

{% hint style="info" %}
Contact the Support Desk to obtain the e-mail address to enter at step 4.
{% endhint %}

1. Log on to the device’s administrative web interface.
2. Click "Location Options" from the banner menu.
3. Click "SOS Settings" from the left-hand side menu.
4. Enter the e-mail address into the "Message Recipients" text box.
5. Click the "Save" button.

## Iridium Edge Solar

{% hint style="info" %}
You will require access to the Iridium Edge Solar Administration Portal.  If you do not have access, please contact your service provider.

Before you set up an Iridium Edge Solar device for use with GAP, you must ensure that you have provisioned the device on Iridium SPNet.  Please contact the Support Desk for more information.
{% endhint %}

1. Go to the [Iridium Edge Solar Administration Portal](https://iesadminportal.com/login) and log in.
2. Click "Users" from the left-hand side navigation menu.
3. Select you user account.
4. Click the <i class="fa-eye">:eye:</i> (eye) icon next to the "API key" text box to copy your API key to the clipboard.
5. Go to the [Geoforce API](https://api.geoforce.com/altair/).
6. Click the <i class="fa-loader">:loader:</i> (Set Headers) icon on the left-hand side navigation menu.
7. In the "Header Key" text box, enter "Authorization" (without the double quotes).
8. In the " YOUR API KEY HERE" text box, paste the value in your clipboard.
9. Click the "Save" button.
10. Enter the following JSON in the left-hand pane, replacing the "\<ESN>" placeholder with your device's ESN.\
    \
    `query Devices`    \
    `{ devices(filter: {esn: ["INSERT ESN HERE"]}`    \
    `) {`    \
    `nodes {`    \
    `esn`    \
    `encryptionKeys{`    \
    `cipher`    \
    `value`    \
    `}`    \
    `}`    \
    `}`    \
    `}`
11. Click the "Send Request" button.
12. Locate the second "value" property in the "encryptionKeys" array in the JSON result that corresponds to the tdes cipher and copy this to the clipboard (without the double quotes).
13. Log in to the GAP Portal and create a new device of type "Iridium Edge Solar".  See [Managing Devices](/administration/devices/managing-devices#adding-devices) for more information on creating devices.
14. Once you have created the device, click "Configure Device" under the "Devices Actions" section.
15. Click "Advanced".
16. Click "Manage Encryption Key".
17. Paste the value you copied in step 11 into the "Encryption Key" text box and click the "OK" button.


# Provisioning Garmin inReach Devices

All messages sent to and received from Garmin inReach devices are first routed via Garmin’s systems prior to&#x20;the Iridium satellite network. As such, Garmin’s systems and GAP need to be configured to route messages accordingly.

{% hint style="info" %}
Please contact the Support Desk for the URL to enter in step 5 below.
{% endhint %}

1. Log in to the Garmin Portal.
2. Click "Settings".
3. Click "Portal Connect".
4. Toggle the "Outbound Settings" option.
5. Click "Edit" under the "Authentication" section and enter the applicable URL in the "Outbound URL" text box.
6. Click "Test" and ensure that "Success" appears under the button.
7. Toggle in "Inbound Settings" option.
8. Enter a user name and password of your choosing in the “IPC User Name” and “IPC Password” text boxes   &#x20;respectively.  Ensure the password you choose is strong.
9. Supply the Inbound URL shown and the credentials you created in step 8 to the Support Desk.


# Provisioning IsatPhone Devices

## IsatPhone 2

### Adding a Device

{% hint style="info" %}
If the "IsatPhone 2" device type is not available for your tenant, please contact your administrator.
{% endhint %}

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click "+".
3. Select a tenant from the "Tenant" drop-down list.
4. Select "IsatPhone 2" from the "Device Type" drop-down list.
5. Enter the phone number for the device in international format in the "Device Id" text box.
6. Enter a display name for the device in the "Friendly Name" text box.
7. Assign a user to the device using the "Assigned User" drop-down list.
8. Click the "OK" button.

### Configuring the Device

{% hint style="info" %}
Contact the Support Desk to obtain the e-mail address to enter in step 9.
{% endhint %}

The phone supports three core message types:

* Personal Alert
* Assistance Alert
* Tracking Report

{% hint style="info" %}
The Assistance Alert message type will raise an emergency on GAP.  The Personal Alert message type does not.
{% endhint %}

See the [IsatPhone 2 User Guide](https://www.viasat.com/content/dam/us-site/support/downloads/isatphone2/original/IsatPhone_2_UG_V2_March_2014_EN.pdf) for more information.

#### Add a Contact

1. On the device, select "Menu".
2. Select "Contacts".
3. Highlight the location where you wish to save the contact and press "Select",
4. Select "Options".
5. Select "New Contact".
6. Enter a name (e.g. "GAP").
7. Select "Options".
8. Select "Add".
9. Add the e-mail address supplied by the Support Desk.
10. Press the centre selection key to save the contact.

#### Enable the Assistance Feature

1. From   &#x20;the device's main menu, select "Location services".
2. Select "Assistance button".
3. Select "Configure".
4. Select "Assistance feature".
5. Press the centre selection key to enable the feature.

#### Configure the Assistance Feature

1. From   &#x20;the device's main menu, select "Location services".
2. Select "Assistance button".
3. Select "Configure".
4. Select "Alert type".
5. Highlight "Message only".
6. Press the centre selection key.
7. Choose the "GAP" recipient you created earlier by selecting "Location services", then "Assistance button", then "Configure Message config." then "Edit recipient".
8. Selecting "Email message".

#### Configuring Tracking

1. From   &#x20;the device's main menu, select "Location services".
2. Select "Tracking".
3. Select "Configure tracking".
4. Select "Edit recipient".
5. Select the "GAP" contact you created earlier.

#### Configure the Personal Alert Feature

1. Select "Extras".
2. Select "Personal alert".
3. Select "Edit personal alert".
4. Select "Configure personal alert".
5. Select the "GAP" contact you created earlier.

## IsatPhone Pro

{% hint style="warning" icon="triangle-exclamation" %}
The IsatPhone Pro does not support tracking or emergency alerting.  Your GPS location can be sent manually and recorded for display only.
{% endhint %}

See the [IsatPhone Pro User Guide](https://www.viasat.com/content/dam/us-site/support/downloads/isatphonepro/IsatPhone_Pro_UG_Oct_2011_EN.pdf) for more information.

### Adding a Device

{% hint style="info" %}
If the "IsatPhone Pro" device type is not available for your tenant, please contact your administrator.
{% endhint %}

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click "+".
3. Select a tenant from the "Tenant" drop-down list.
4. Select "IsatPhone Pro" from the "Device Type" drop-down list.
5. Enter the phone number for the device in international format in the "Device Id" text box.
6. Enter a display name for the device in the "Friendly Name" text box.
7. Assign a user to the device using the "Assigned User" drop-down list.
8. Click the "OK" button.

### Configuring the Device

{% hint style="info" %}
Contact the Support Desk to obtain the e-mail address to enter in step 9.
{% endhint %}

#### Add a Contact

1. On the device, select "Menu".
2. Select "Contacts".
3. Highlight the location where you wish to save the contact and press "Select",
4. Select "Options".
5. Select "New Contact".
6. Enter a name (e.g. "GAP").
7. Select "Options".
8. Select "Add detail".
9. Add the e-mail address supplied by the Support Desk.
10. Press the centre selection key to save the contact.

#### Sending Position Reports

1. On the device, select "Menu"
2. Select "GPS position".
3. Select "Options".
4. Select "Send GPS location".
5. Select "New" to acquire a new GPS fix.  This may take some time.
6. When the GPS fix to be used has been acquired, select   &#x20;"Text message".
7. Select "Options"
8. Select "Add recipient" and select the "GAP" contact you created earier.&#x20;


# Provisioning Thuraya XT Pro Devices

## Adding a Device

{% hint style="info" %}
If the "Thuraya XT Pro" device type is not available for your tenant, please contact your administrator.
{% endhint %}

1. In the GAP Portal, click "Devices" from the banner menu.
2. Click "+".
3. Select a tenant from the "Tenant" drop-down list.
4. Select "Thuraya XT Pro" from the "Device Type" drop-down list.
5. Enter the IMEI for the device in international format in the "Device Id" text box.  The IMEI number cna be found under the battery on the device.
6. Enter a display name for the device in the "Friendly Name" text box.
7. Assign a user to the device using the "Assigned User" drop-down list.
8. Click the "OK" button.

## Configure Device

{% hint style="info" %}
Contact the Support Desk to obtain the e-mail address to enter in step 4.
{% endhint %}

### Add a Contact

1. Select "Menu".
2. Select "Contacts".
3. Select "Add Contact".
4. Create a new contact with name "GAP" and the e-mail address supplied by the Support Desk.
5. Select "Save".

### Configure SOS

1. Select "Menu".
2. Select "SOS".
3. In the "Message Recipient" box, select the contact you created earlier.
4. Select "Save".

### Configure Tracking

1. Select "Menu".
2. Select "Tracking".
3. In the "Recipients" box, select the contact you created earlier.
4. In the "Output format" box, select "DD.dddd".
5. Select "Save".


# GAP Web API

Learn more about the GAP Web API

## Introduction

GAP exposes an API to facilitate integrations with third-party systems.

A REST API (Representational State Transfer) exposes application functionality over HTTP using a set of well-defined conventions.  Resources are addressed via URLs, and standard HTTP verbs - GET, POST, PUT, PATCH, and DELETE - determine the operation being performed.  Requests and responses are typically formatted as JSON, and the API is stateless, meaning each request must contain all the information needed to process it independently.

## Authentication

There are two ways to authenticate to the API, Basic Authentication or using your API Key.

### Basic Authentication

Using basic authentication is as simple as adding the basic authorization header in each API request.

### API Key

The GAP API also supports authentication via an API key.  To use your API key with the API, the key should be added to the request header.  The key name is "X-GAPAPIKEY".

{% hint style="info" %}
If an API key is used, it takes precedence over basic authentication.
{% endhint %}

#### Obtaining an API Key

{% hint style="info" icon="user-lock" %}
This action requires the **Manage Own API Key** and / or **Manage Other Users' API Key** permissions.
{% endhint %}

1. From the GAP Portal home screen, click "Options".
2. Click "Users".
3. Click the name of the user whose API key you wish to view.
4. Click "User Account".
5. The API key is shown at the bottom of this screen.  Click "Copy to Clipboard" to copy the API key to the clipboard.

#### Regenerating an API Key

{% hint style="danger" icon="circle-exclamation" %}
Regenerating an API key will immediately revoke access for the original key.  Once you have regenerated the API key, please update any applications to use the new key.

If the user account is associated with a GAP Guardian app, the app will immediately cease to function.  The user will need to [deactivate the app](/devices/gap-guardian-app/gap-guardian-v3-user-guide#deactivation) and log in again.
{% endhint %}

{% hint style="info" icon="user-lock" %}
This action requires the **Manage Own API Key** and / or **Manage Other Users' API Key** permissions.
{% endhint %}

1. From the GAP Portal home screen, click "Options".
2. Click "Users".
3. Click the name of the user whose API key you wish to regenerate
4. Click "User Account".
5. Click "Generate New API Key".
6. Click the "Generate New API Key" button.

## Limits

* Clients may access a maximum of 1,000 results from a single request.  This limit is increased to 10,000 in some cases.
* Requests for more than the limit will result in a reply with a status code of 200 and a body containing 1,000 records in the format requested.
* There are limits to how many calls and changes you can make in a one-hour period.  Exceeding these limits will result in HTTP 429 status codes being returned.
* The API uses a continuation token to allow the user to request the next page of results.

### Continuation Tokens

Some endpoints implement pagination for record retrieval.  When additional records are available, a continuation token (*X-CONTINUATIONTOKEN*) is provided in the response header. Including this token in the header of the subsequent request will return the next set of records.

The following endpoints are paged by 1,000 records per request:

* Alerts
* Device Log
* MO Messages
* MT Messages

The following endpoints are paged by 10,000 records per request:

* Devices
* Users

## eTags

Some objects such as Devices and Users support eTags.

An object's eTag can be retrieved via a GET request.

When performing a PUT request, the eTag can be optionally included.  When the eTag is included, the underlying object will only be updated if the eTag matches. The object will always be updated if the eTag is not included.

## OData Filters

The GAP API provides built-in support for a subset of the [Open Data Protocol (OData) query string parameters](http://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html) that a client can use to sort or filter the results.

<table><thead><tr><th width="138">Parameter</th><th width="226">Description</th><th>Example</th></tr></thead><tbody><tr><td>$filter</td><td>Selects entries that match a Boolean expression.</td><td>/V2/1234/devices?$filter=contains(FriendlyName, 'MyDevice')<br><br>/V2/1234/devices?$filter=EmergencyState eq 'Emergency'</td></tr><tr><td>$orderby</td><td>Orders the results by the specified property.</td><td>/V2/1234/devices?$orderby=Name</td></tr><tr><td>$skip</td><td>Skips the first n elements.</td><td>/V2/1234/devices?$skip=2</td></tr><tr><td>$top</td><td>Returns the first n elements in the list. If combined with $orderby, the list is sorted first, and the first n elements of the sorted list are returned (max 1000).</td><td>/V2/1234/devices?$top=10</td></tr></tbody></table>

## Webhooks

See [Webhooks](/web-api/webhooks) and [Configuring Webhooks](/administration/integrations/configuring-webhooks) for more information.


# Code Samples

## C# Samples

### Get Messages for Device

This sample loads the last 1,000 messages for a specified device using a user name and password to authenticate.

{% code lineNumbers="true" %}

```csharp
using System;
using System.Collections.Generic;
using System.Net;
// use NuGET to add Json.NET library
using Newtonsoft.Json;

namespace ApiDemo
{
    class Program
    {
        private const string serverUri = "<API_URL>";
        private const string username = "user@domain.com";
        private const string password = "mypassword";
        private const string tenantCode = "1234";
        private const string deviceId = "<DEVICE_ID>";

        static void Main(string[] args)
        {
            string resourceUrl = String.Format("/V2/{0}/devices/{1}/momessages", tenantCode, deviceId);
            List<MoMessage> moMessages = Get<List<MoMessage>>(resourceUrl);

            foreach (var moMessage in moMessages)
                Console.WriteLine("{0} {1}", moMessage.SentFromDevice, moMessage.Message);
        }

        private static T Get<T>(string resourceUrl)
        {
            WebClient webClient = new WebClient();
            // pass username and password
            webClient.Credentials = new NetworkCredential(username, password);
            webClient.BaseAddress = serverUri;

            string json = webClient.DownloadString(resourceUrl);

            T data = JsonConvert.DeserializeObject<T>(json);

            return data;
        }

        #region Models

        public class MoMessage
        {
            public EmergencyState EmergencyState { get; set; }
            public string Message { get; set; }
            public string MessageId { get; set; }
            public string MessageType { get; set; }
            public Position Position { get; set; }
            public DateTime ReceivedAtServer { get; set; }
            public string Recipients { get; set; }
            public DateTime SentFromDevice { get; set; }
            public int SequenceNumber { get; set; }
            public Dictionary<string, string> Properties { get; set; }
            public List<ContainingGeofence> ContainingGeofences { get; set; }
            public string MimeType { get; set; }
            public string Filename { get; set; }
            public string ETag { get; set; }
        }

        public class Position
        {
            public double? Latitude { get; set; }
            public double? Longitude { get; set; }
            public DateTime? GpsTimestamp { get; set; }
            public double? Speed { get; set; }
            public double? Heading { get; set; }
            public double? Altitude { get; set; }
            public LocationSourceType LocationSource { get; set; }
            public string Accuracy { get; set; }
        }

        public class ContainingGeofence
        {
            public string GeofenceId { get; set; }
            public string GeofenceName { get; set; }
        }

        public enum LocationSourceType
        {
            Gps, Glonass, Doppler, Unknown, DGpsLt10m, GnssGt10m, AndroidLocationService, 
            iOSLocationService, Beacon, BDAS, Beidou, Galileo, UserProvided
        }

        public enum EmergencyState
        {
            None, Emergency, EmergencyCancel, NotSpecified
        }

        #endregion
    }
}
```

{% endcode %}

### Get Device Information

This sample loads device information using an API key to authenticate.

{% code lineNumbers="true" %}

```csharp
using System;
using System.Collections.Generic;
using System.Net;
// use NuGET to add Json.NET library
using Newtonsoft.Json;

namespace ApiDemo
{
    class Program
    {
        private const string serverUri = "<API_URL>";
        private const string apiKey = "<API_KEY>";
        private const string tenantCode = "1234";
        private const string deviceId = "<DEVICE_ID>";

        static void Main(string[] args)
        {
            string resourceUrl = String.Format("/V2/{0}/devices/{1}", tenantCode, deviceId);
            Device device = Get<Device>(resourceUrl);

            Console.WriteLine("{0} {1}", device.FriendlyName, device.DeviceId);
        }

        private static T Get<T>(string resourceUrl)
        {
            WebClient webClient = new WebClient();
            // pass API key
            webClient.Headers.Add("X-GAPAPIKEY", apiKey);
            webClient.BaseAddress = serverUri;

            string json = webClient.DownloadString(resourceUrl);

            T data = JsonConvert.DeserializeObject<T>(json);

            return data;
        }

        #region Models

        public class Device
        {
            public string TenantCode { get; set; }
            public string DeviceId { get; set; }
            public string DeviceType { get; set; }
            public string FriendlyName { get; set; }
            public string Description { get; set; }
            public string Username { get; set; }
            public string UserId { get; set; }
            public string DeviceStatus { get; set; }
            public ProvisioningStatus? ProvisioningStatus { get; set; }
            public DateTime? DateAdded { get; set; }
            public string GroupId { get; set; }
            public bool? CheckInScheduleEnabled { get; set; }
            public OverdueState CheckInScheduleOverdue { get; set; }
            public bool EnableEmailDelivery { get; set; }
            public bool? EnableSmsReplies { get; set; }
            public bool IsMonitored { get; set; }
            public int? MonitoringIntervalMinutes { get; set; }
            public int? MonitoringBufferMinutes { get; set; }
            public OverdueState MonitoringOverdue { get; set; }
            public EmergencyState EmergencyState { get; set; }
            public string PhoneNumber { get; set; }
            public string ImageId { get; set; }
            public double? LastLatitude { get; set; }
            public double? LastLongitude { get; set; }
            public DateTime? LastMessageTime { get; set; }
            public DateTime? LastLocationTime { get; set; }
            public Dictionary<string, string> Properties { get; set; }
            public DateTime? Timestamp { get; set; }
            public string ETag { get; set; }
            public string Photo { get; set; }
            public string CustomEmailAddress { get; set; }
            public string SecondaryDeviceId { get; set; }
        }

        public enum ProvisioningStatus
        {
            Provisioned, NotProvisioned, Suspended
        }

        public enum OverdueState
        {
            NotOverdue, Warning, Overdue
        }

        public enum EmergencyState
        {
            None, Emergency, EmergencyCancel
        }

        #endregion
    }
}
```

{% endcode %}

## PHP Sample

### Get Messages for Device

This sample loads the last 1,000 messages for a specified device using a user name and password to authenticate.

{% code lineNumbers="true" %}

```php
#!/usr/bin/php
<?php 
    $auth="user@domain.com:mypassword";
    $device="<DEVICE_ID>";
    $tenant="1234";
    $url = sprintf("https://<API_URL>/V2/%s/devices/%s/momessages", $tenant, $device);

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($curl, CURLOPT_USERPWD,$auth); 
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $response= curl_exec($curl);
    
    print $response;
?>
```

{% endcode %}

## Python Samples

### Get Device Information

This sample loads device information using an API key to authenticate.

{% code lineNumbers="true" %}

```python
# compatible with Python 3.7+
import urllib.request
import base64
import json

username = 'user@domain.com'
password = 'mypassword'

server_uri = '<API_URL>'
tenant_code = '1234'

auth = base64.b64encode(bytes('{}:{}'.format(username, password), 'ascii'))
headers = {'Authorization': 'Basic {}'.format(auth.decode('utf-8')), 'Content-Type': 'application/json'}

# download Devices
resource_url = '/V2/{}/devices'.format(tenant_code)
request = urllib.request.Request(server_uri + resource_url, headers=headers)
response = urllib.request.urlopen(request)

devices = json.loads(response.read().decode('utf-8', errors='ignore'))
print(devices)
```

{% endcode %}

### Get Messages for Device

This sample loads the last 1,000 messages for a specified device using a user name and password to authenticate.

{% code lineNumbers="true" %}

```python
# compatible with Python 3.7+
import urllib.request
import base64
import json

username = 'user@domain.com'
password = 'mypassword'

server_uri = '<API_URL>'
tenant_code = '1234'

auth = base64.b64encode(bytes('{}:{}'.format(username, password), 'ascii'))
headers = {'Authorization': 'Basic {}'.format(auth.decode('utf-8')), 'Content-Type': 'application/json'}

# download Devices
resource_url = '/V2/{}/devices'.format(tenant_code)
request = urllib.request.Request(server_uri + resource_url, headers=headers)
response = urllib.request.urlopen(request)

devices = json.loads(response.read().decode('utf-8', errors='ignore'))
print(devices)
```

{% endcode %}

This sample loads the last 1,000 messages for a specified device using an API key to authenticate.

{% code lineNumbers="true" %}

```python
# compatible with Python 3.7+
import urllib.request
import json

api_key = '<API_KEY>'

server_uri = '<API_URL>'
tenant_code = '1234'
device_id = '<DEVICE_URL>'

headers = {'X-GAPAPIKEY': api_key, 'Content-Type': 'application/json'}

# GET Devices
resource_url = '/V2/{}/devices'.format(tenant_code)
request = urllib.request.Request(server_uri + resource_url, headers=headers)
response = urllib.request.urlopen(request)

devices = json.loads(response.read().decode('utf-8', errors='ignore'))
print(devices)

# GET MoMessages
resource_url = '/V2/{}/devices/{}/momessages'.format(tenant_code, device_id)

request = urllib.request.Request(server_uri + resource_url, headers=headers)
response = urllib.request.urlopen(request)

mo_messages = json.loads(response.read().decode('utf-8', errors='ignore'))
print(mo_messages)
```

{% endcode %}


# Webhooks

The Webhooks feature allows third-party systems to be notified every time a specified action occurs. Webhooks are currently supported for Devices, Users, Tenants, MO Messages and Event Notifications.

Each data item is sent individually soon after the action occurs on GAP.  The item is serialized using JSON and includes an indicator of the item type, the action taken, and the item itself.

## Authentication

You can choose either basic authentication or no authentication.

See [Configuring Webhooks](/administration/integrations/configuring-webhooks) for information on how to set up a webhook.

## Retry

A retry mechanism is in place that will repeat the call several times until success HTTP status code is received.

## Payload

A webhook payload consists of ItemType, Action and Item properties.

ItemType specifies the entity type that triggered the webhook.  Possible values are Device, User, Tenant, MoMessage and EventNotification.

Action specifies what triggered the webhook.  Possible values are Create, Edit, Delete and Trigger.

{% code lineNumbers="true" %}

```json
{
    "ItemType": "Device",
    "Action": "Create",
    "Item": {
    …
    }
}
```

{% endcode %}

The Item property contains the record that triggered the webhook.  This property contains the same JSON as you would expect to receive had a GET request been made to the Web API for the entity type specified in the ItemType property.

For example, if you had just created a device called "Test Device #1", you would receive the following payload:

{% code lineNumbers="true" %}

```json
{
    "ItemType": "Device",
    "Action": "Create",
    "Item": {
        "TenantCode": "1234",
        "DeviceId": "123456789",
        "DeviceType": "Generic",
        "FriendlyName": "Test Device #1",
        "DeviceStatus": "Active",
        "ProvisioningStatus": "Provisioned",
        "DateAdded": "2025-02-18T05:16:05.700109Z",
        "CheckInScheduleOverdue": 0,
        "EnableEmailDelivery": false,
        "EnableSmsReplies": false,
        "IsMonitored": false,
        "MonitoringOverdue": 0,
        "EmergencyState": 0,
        "Properties": {
            "MapIcon": "fa-location-arrow",
            "MarkerColor": "blue",
            "CreatedBy": john.smith@globalalerting.com
        },
        "Timestamp": "2025-02-18T05:16:05.7116537Z",
        "ETag": "W/\"datetime'2025-02-18T05%3A16%3A05.7116537Z'\""
    }
}
```

{% endcode %}

See the following endpoints for more information on the data included in the Item property:

* [Devices](/web-api/devices#get-v2-tenantvarcode-devices-deviceid)
* [MO Messages](/web-api/mo-messages#get-v2-tenantvarcode-devices-deviceid-momessages-messageid)
* [Tenants](/web-api/tenants#get-v2-tenantvarcode)
* [Users](/web-api/users#get-v2-tenantvarcode-users-userid)

### Event Notifications

Event Notification webhook payloads differ from the response to a GET request on the Event Notifications endpoints.

Note the "Trigger" value of the Action property, indicating that the event notification referenced by the NotificationId property has fired.

An example is shown below:

{% code lineNumbers="true" %}

```json
{
    "ItemType": "EventNotification",
    "Action": "Trigger",
    "Item": {
        "DeviceId": "1234567890",
        "TenantVarCode": "1234",
        "NotificationId": "fca3aa88-934d-4d1e-a239-236af166c4ed",
        "NotificationName": "MyEventNotification",
        "NotificationText": null,
        "NotificationSeverity": "0",
        "NotificationOrigin": "Device",
        "Time": "2026-05-21 22:19:43Z",
        "Reason": "message type equals CheckIn",
        "MoMessageId": null,
        "MoMessageType": "CheckIn",
        "MoMessageText": "CheckIn",
        "MoMessageEmergencyState": "NotSpecified",
        "MoMessageSentFromDevice": "2026-05-21 22:19:42Z"
    }
}
```

{% endcode %}


# Address Book Contacts For Device

## GET /V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts

> Returns a list of contacts for specified device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts":{"get":{"tags":["Address Book Contacts for Device"],"summary":"Returns a list of contacts for specified device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}}}}}}}},"components":{"schemas":{"AddressBookContact":{"required":["ContactName"],"type":"object","properties":{"ContactId":{"type":"string","description":"Unique string that identifies the contact","nullable":true},"ContactName":{"minLength":1,"type":"string","description":"A string with contact name"},"IsEscalationContact":{"type":"boolean","description":"In the event of an emergency, escalation contact information will be provided to first responders. Applicable to Tenant contacts only."},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant contact available also for sub-tenants. Applicable to Tenant contacts only."},"SyncToDevices":{"type":"boolean","description":"Contact is synced to devices. Read only property applicable to Tenant contacts only.","nullable":true},"CultureName":{"type":"string","description":"Optionally denotes the Culture for the contact.","nullable":true},"ContactEntries":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContactEntry"},"description":"List of details for the contact","nullable":true}},"additionalProperties":false},"AddressBookContactEntry":{"required":["Address"],"type":"object","properties":{"EntryId":{"type":"string","description":"Unique string that identifies the contact entry","nullable":true},"Address":{"minLength":1,"type":"string","description":"The address of the recipient"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts

> Creates a new device contact

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts":{"post":{"tags":["Address Book Contacts for Device"],"summary":"Creates a new device contact","operationId":"PostDeviceAddressBookContact","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"AddressBookContact":{"required":["ContactName"],"type":"object","properties":{"ContactId":{"type":"string","description":"Unique string that identifies the contact","nullable":true},"ContactName":{"minLength":1,"type":"string","description":"A string with contact name"},"IsEscalationContact":{"type":"boolean","description":"In the event of an emergency, escalation contact information will be provided to first responders. Applicable to Tenant contacts only."},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant contact available also for sub-tenants. Applicable to Tenant contacts only."},"SyncToDevices":{"type":"boolean","description":"Contact is synced to devices. Read only property applicable to Tenant contacts only.","nullable":true},"CultureName":{"type":"string","description":"Optionally denotes the Culture for the contact.","nullable":true},"ContactEntries":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContactEntry"},"description":"List of details for the contact","nullable":true}},"additionalProperties":false},"AddressBookContactEntry":{"required":["Address"],"type":"object","properties":{"EntryId":{"type":"string","description":"Unique string that identifies the contact entry","nullable":true},"Address":{"minLength":1,"type":"string","description":"The address of the recipient"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts/{contactId}

> Returns a specific contact

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts/{contactId}":{"get":{"tags":["Address Book Contacts for Device"],"summary":"Returns a specific contact","operationId":"GetDeviceAddressBookContact","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","description":"Contact Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}}}}}}}},"components":{"schemas":{"AddressBookContact":{"required":["ContactName"],"type":"object","properties":{"ContactId":{"type":"string","description":"Unique string that identifies the contact","nullable":true},"ContactName":{"minLength":1,"type":"string","description":"A string with contact name"},"IsEscalationContact":{"type":"boolean","description":"In the event of an emergency, escalation contact information will be provided to first responders. Applicable to Tenant contacts only."},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant contact available also for sub-tenants. Applicable to Tenant contacts only."},"SyncToDevices":{"type":"boolean","description":"Contact is synced to devices. Read only property applicable to Tenant contacts only.","nullable":true},"CultureName":{"type":"string","description":"Optionally denotes the Culture for the contact.","nullable":true},"ContactEntries":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContactEntry"},"description":"List of details for the contact","nullable":true}},"additionalProperties":false},"AddressBookContactEntry":{"required":["Address"],"type":"object","properties":{"EntryId":{"type":"string","description":"Unique string that identifies the contact entry","nullable":true},"Address":{"minLength":1,"type":"string","description":"The address of the recipient"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts/{contactId}

> Updates an existing device contact

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts/{contactId}":{"put":{"tags":["Address Book Contacts for Device"],"summary":"Updates an existing device contact","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","description":"Contact Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Updated contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"AddressBookContact":{"required":["ContactName"],"type":"object","properties":{"ContactId":{"type":"string","description":"Unique string that identifies the contact","nullable":true},"ContactName":{"minLength":1,"type":"string","description":"A string with contact name"},"IsEscalationContact":{"type":"boolean","description":"In the event of an emergency, escalation contact information will be provided to first responders. Applicable to Tenant contacts only."},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant contact available also for sub-tenants. Applicable to Tenant contacts only."},"SyncToDevices":{"type":"boolean","description":"Contact is synced to devices. Read only property applicable to Tenant contacts only.","nullable":true},"CultureName":{"type":"string","description":"Optionally denotes the Culture for the contact.","nullable":true},"ContactEntries":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContactEntry"},"description":"List of details for the contact","nullable":true}},"additionalProperties":false},"AddressBookContactEntry":{"required":["Address"],"type":"object","properties":{"EntryId":{"type":"string","description":"Unique string that identifies the contact entry","nullable":true},"Address":{"minLength":1,"type":"string","description":"The address of the recipient"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts/{contactId}

> Deletes a specific device contact

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookcontacts/{contactId}":{"delete":{"tags":["Address Book Contacts for Device"],"summary":"Deletes a specific device contact","parameters":[{"name":"tenantVarCode","in":"path","description":"","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","description":"Contact Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Address Book Contacts For Tenant

## GET /V2/{tenantVarCode}/addressbookcontacts

> Returns a list of contacts for specified tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookcontacts":{"get":{"tags":["Address Book Contacts for Tenant"],"summary":"Returns a list of contacts for specified tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContact"}}}}}}}}},"components":{"schemas":{"AddressBookContact":{"required":["ContactName"],"type":"object","properties":{"ContactId":{"type":"string","description":"Unique string that identifies the contact","nullable":true},"ContactName":{"minLength":1,"type":"string","description":"A string with contact name"},"IsEscalationContact":{"type":"boolean","description":"In the event of an emergency, escalation contact information will be provided to first responders. Applicable to Tenant contacts only."},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant contact available also for sub-tenants. Applicable to Tenant contacts only."},"SyncToDevices":{"type":"boolean","description":"Contact is synced to devices. Read only property applicable to Tenant contacts only.","nullable":true},"CultureName":{"type":"string","description":"Optionally denotes the Culture for the contact.","nullable":true},"ContactEntries":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContactEntry"},"description":"List of details for the contact","nullable":true}},"additionalProperties":false},"AddressBookContactEntry":{"required":["Address"],"type":"object","properties":{"EntryId":{"type":"string","description":"Unique string that identifies the contact entry","nullable":true},"Address":{"minLength":1,"type":"string","description":"The address of the recipient"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/addressbookcontacts

> Creates a new global contact

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookcontacts":{"post":{"tags":["Address Book Contacts for Tenant"],"summary":"Creates a new global contact","operationId":"PostTenantAddressBookContact","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"AddressBookContact":{"required":["ContactName"],"type":"object","properties":{"ContactId":{"type":"string","description":"Unique string that identifies the contact","nullable":true},"ContactName":{"minLength":1,"type":"string","description":"A string with contact name"},"IsEscalationContact":{"type":"boolean","description":"In the event of an emergency, escalation contact information will be provided to first responders. Applicable to Tenant contacts only."},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant contact available also for sub-tenants. Applicable to Tenant contacts only."},"SyncToDevices":{"type":"boolean","description":"Contact is synced to devices. Read only property applicable to Tenant contacts only.","nullable":true},"CultureName":{"type":"string","description":"Optionally denotes the Culture for the contact.","nullable":true},"ContactEntries":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContactEntry"},"description":"List of details for the contact","nullable":true}},"additionalProperties":false},"AddressBookContactEntry":{"required":["Address"],"type":"object","properties":{"EntryId":{"type":"string","description":"Unique string that identifies the contact entry","nullable":true},"Address":{"minLength":1,"type":"string","description":"The address of the recipient"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/addressbookcontacts/{contactId}

> Returns a specific contact

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookcontacts/{contactId}":{"get":{"tags":["Address Book Contacts for Tenant"],"summary":"Returns a specific contact","operationId":"GetTenantAddressBookContact","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","description":"Contact Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}}}}}}}},"components":{"schemas":{"AddressBookContact":{"required":["ContactName"],"type":"object","properties":{"ContactId":{"type":"string","description":"Unique string that identifies the contact","nullable":true},"ContactName":{"minLength":1,"type":"string","description":"A string with contact name"},"IsEscalationContact":{"type":"boolean","description":"In the event of an emergency, escalation contact information will be provided to first responders. Applicable to Tenant contacts only."},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant contact available also for sub-tenants. Applicable to Tenant contacts only."},"SyncToDevices":{"type":"boolean","description":"Contact is synced to devices. Read only property applicable to Tenant contacts only.","nullable":true},"CultureName":{"type":"string","description":"Optionally denotes the Culture for the contact.","nullable":true},"ContactEntries":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContactEntry"},"description":"List of details for the contact","nullable":true}},"additionalProperties":false},"AddressBookContactEntry":{"required":["Address"],"type":"object","properties":{"EntryId":{"type":"string","description":"Unique string that identifies the contact entry","nullable":true},"Address":{"minLength":1,"type":"string","description":"The address of the recipient"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/addressbookcontacts/{contactId}

> Updates an existing global contact

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookcontacts/{contactId}":{"put":{"tags":["Address Book Contacts for Tenant"],"summary":"Updates an existing global contact","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","description":"Contact Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Updated Contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/AddressBookContact"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"AddressBookContact":{"required":["ContactName"],"type":"object","properties":{"ContactId":{"type":"string","description":"Unique string that identifies the contact","nullable":true},"ContactName":{"minLength":1,"type":"string","description":"A string with contact name"},"IsEscalationContact":{"type":"boolean","description":"In the event of an emergency, escalation contact information will be provided to first responders. Applicable to Tenant contacts only."},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant contact available also for sub-tenants. Applicable to Tenant contacts only."},"SyncToDevices":{"type":"boolean","description":"Contact is synced to devices. Read only property applicable to Tenant contacts only.","nullable":true},"CultureName":{"type":"string","description":"Optionally denotes the Culture for the contact.","nullable":true},"ContactEntries":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookContactEntry"},"description":"List of details for the contact","nullable":true}},"additionalProperties":false},"AddressBookContactEntry":{"required":["Address"],"type":"object","properties":{"EntryId":{"type":"string","description":"Unique string that identifies the contact entry","nullable":true},"Address":{"minLength":1,"type":"string","description":"The address of the recipient"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/addressbookcontacts/{contactId}

> Deletes a specific global contact

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Contacts for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookcontacts/{contactId}":{"delete":{"tags":["Address Book Contacts for Tenant"],"summary":"Deletes a specific global contact","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"contactId","in":"path","description":"Contact Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Address Book Distribution Lists For Device

## GET /V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists

> Returns a list of device distribution lists for specified device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists":{"get":{"tags":["Address Book Distribution Lists for Device"],"summary":"Returns a list of device distribution lists for specified device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionList"}}}}}}}}},"components":{"schemas":{"AddressBookDistributionList":{"required":["ListName","Recipients"],"type":"object","properties":{"ListId":{"type":"string","description":"A unique string that identifies the distribution list","nullable":true},"ListName":{"minLength":1,"type":"string","description":"The name of the address book distribution list"},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant list available also for sub-tenants, valid for tenant distribution lists only."},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified, read only.","format":"date-time","nullable":true},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## POST /V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists

> Creates a new distribution list for the specified device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists":{"post":{"tags":["Address Book Distribution Lists for Device"],"summary":"Creates a new distribution list for the specified device","operationId":"PostDeviceAddressBookDistributionList","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Distribution List","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"AddressBookDistributionList":{"required":["ListName","Recipients"],"type":"object","properties":{"ListId":{"type":"string","description":"A unique string that identifies the distribution list","nullable":true},"ListName":{"minLength":1,"type":"string","description":"The name of the address book distribution list"},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant list available also for sub-tenants, valid for tenant distribution lists only."},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified, read only.","format":"date-time","nullable":true},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists/{listId}

> Returns a specific device distribution list

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists/{listId}":{"get":{"tags":["Address Book Distribution Lists for Device"],"summary":"Returns a specific device distribution list","operationId":"GetDeviceAddressBookDistributionList","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"listId","in":"path","description":"List Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}}}}}}}},"components":{"schemas":{"AddressBookDistributionList":{"required":["ListName","Recipients"],"type":"object","properties":{"ListId":{"type":"string","description":"A unique string that identifies the distribution list","nullable":true},"ListName":{"minLength":1,"type":"string","description":"The name of the address book distribution list"},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant list available also for sub-tenants, valid for tenant distribution lists only."},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified, read only.","format":"date-time","nullable":true},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## PUT /V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists/{listId}

> Updates an existing device distribution list

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists/{listId}":{"put":{"tags":["Address Book Distribution Lists for Device"],"summary":"Updates an existing device distribution list","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"listId","in":"path","description":"List Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Updated list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"AddressBookDistributionList":{"required":["ListName","Recipients"],"type":"object","properties":{"ListId":{"type":"string","description":"A unique string that identifies the distribution list","nullable":true},"ListName":{"minLength":1,"type":"string","description":"The name of the address book distribution list"},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant list available also for sub-tenants, valid for tenant distribution lists only."},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified, read only.","format":"date-time","nullable":true},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## DELETE /V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists/{listId}

> Deletes a specific device distibution list

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/addressbookdistributionlists/{listId}":{"delete":{"tags":["Address Book Distribution Lists for Device"],"summary":"Deletes a specific device distibution list","parameters":[{"name":"tenantVarCode","in":"path","description":"","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"listId","in":"path","description":"List Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Address Book Distribution Lists For Tenant

## GET /V2/{tenantVarCode}/addressbookdistributionlists

> Returns a list of global distribution lists for specified tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookdistributionlists":{"get":{"tags":["Address Book Distribution Lists for Tenant"],"summary":"Returns a list of global distribution lists for specified tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}}}}}}}},"components":{"schemas":{"AddressBookDistributionListTenantGet":{"required":["ListName","Recipients"],"type":"object","properties":{"SyncToDevices":{"type":"boolean","description":"Sync the distribution list to devices. This is only applicable for tenant distribution lists and for GET endpoint."},"ListId":{"type":"string","description":"A unique string that identifies the distribution list","nullable":true},"ListName":{"minLength":1,"type":"string","description":"The name of the address book distribution list"},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant list available also for sub-tenants, valid for tenant distribution lists only."},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified, read only.","format":"date-time","nullable":true},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## POST /V2/{tenantVarCode}/addressbookdistributionlists

> Creates a new global distribution list for the specified tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookdistributionlists":{"post":{"tags":["Address Book Distribution Lists for Tenant"],"summary":"Creates a new global distribution list for the specified tenant","operationId":"PostTenantAddressBookDistributionList","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Distribution List","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"AddressBookDistributionList":{"required":["ListName","Recipients"],"type":"object","properties":{"ListId":{"type":"string","description":"A unique string that identifies the distribution list","nullable":true},"ListName":{"minLength":1,"type":"string","description":"The name of the address book distribution list"},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant list available also for sub-tenants, valid for tenant distribution lists only."},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified, read only.","format":"date-time","nullable":true},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/addressbookdistributionlists/{listId}

> Returns a specific global distribution list

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookdistributionlists/{listId}":{"get":{"tags":["Address Book Distribution Lists for Tenant"],"summary":"Returns a specific global distribution list","operationId":"GetTenantAddressBookDistributionList","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"listId","in":"path","description":"List Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionListTenantGet"}}}}}}}},"components":{"schemas":{"AddressBookDistributionListTenantGet":{"required":["ListName","Recipients"],"type":"object","properties":{"SyncToDevices":{"type":"boolean","description":"Sync the distribution list to devices. This is only applicable for tenant distribution lists and for GET endpoint."},"ListId":{"type":"string","description":"A unique string that identifies the distribution list","nullable":true},"ListName":{"minLength":1,"type":"string","description":"The name of the address book distribution list"},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant list available also for sub-tenants, valid for tenant distribution lists only."},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified, read only.","format":"date-time","nullable":true},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## PUT /V2/{tenantVarCode}/addressbookdistributionlists/{listId}

> Updates an existing global distribution list

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookdistributionlists/{listId}":{"put":{"tags":["Address Book Distribution Lists for Tenant"],"summary":"Updates an existing global distribution list","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"listId","in":"path","description":"List Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Updated List","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/plain":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"text/xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/AddressBookDistributionList"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"AddressBookDistributionList":{"required":["ListName","Recipients"],"type":"object","properties":{"ListId":{"type":"string","description":"A unique string that identifies the distribution list","nullable":true},"ListName":{"minLength":1,"type":"string","description":"The name of the address book distribution list"},"AppliesToSubtenants":{"type":"boolean","description":"Makes tenant list available also for sub-tenants, valid for tenant distribution lists only."},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified, read only.","format":"date-time","nullable":true},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## DELETE /V2/{tenantVarCode}/addressbookdistributionlists/{listId}

> Deletes a specific global distibution list

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Address Book Distribution Lists for Tenant"}],"paths":{"/V2/{tenantVarCode}/addressbookdistributionlists/{listId}":{"delete":{"tags":["Address Book Distribution Lists for Tenant"],"summary":"Deletes a specific global distibution list","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"listId","in":"path","description":"List Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Alerts

## GET /V2/{tenantVarCode}/devices/{deviceId}/alerts

> Returns a list of alerts for the device.> \
> This endpoint returns paged results of up to 1,000 records per response, using the X-CONTINUATIONTOKEN header.> \
> When the response includes this token, it indicates that additional records are available. To retrieve the next set of results,> \
> include the X-CONTINUATIONTOKEN token from the previous response header in the header of your subsequent request.> \
> This process can be repeated until no further continuation token is provided, indicating that you have reached the end of the dataset.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Alerts"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/alerts":{"get":{"tags":["Alerts"],"summary":"Returns a list of alerts for the device.\r\nThis endpoint returns paged results of up to 1,000 records per response, using the X-CONTINUATIONTOKEN header.\r\nWhen the response includes this token, it indicates that additional records are available. To retrieve the next set of results,\r\ninclude the X-CONTINUATIONTOKEN token from the previous response header in the header of your subsequent request.\r\nThis process can be repeated until no further continuation token is provided, indicating that you have reached the end of the dataset.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","description":"From Date","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","description":"To Date","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertNotification"}}}}}}}}},"components":{"schemas":{"AlertNotification":{"type":"object","properties":{"AlertState":{"$ref":"#/components/schemas/AlertNotificationState"},"EventNotificationName":{"type":"string","description":"Name of event notification that created this alert","nullable":true},"EventNotificationText":{"type":"string","description":"Text of event notification that created this alert","nullable":true},"EventNotificationReason":{"type":"string","description":"Description of events that trigerred this alert","nullable":true},"Severity":{"type":"string","description":"Severity as set in event notification","nullable":true},"Latitude":{"type":"number","description":"Latitude in case alert was triggered by MO message with valid position","format":"double","nullable":true},"Longitude":{"type":"number","description":"Longitude in case alert was triggered by MO message with valid position","format":"double","nullable":true},"GpsTimestamp":{"type":"string","description":"Position fix timestamp in case alert was triggered by MO message with valid position","format":"date-time","nullable":true},"Timestamp":{"type":"string","description":"Alert timestamp","format":"date-time"},"AlertTime":{"type":"string","description":"Alert Time","format":"date-time"}},"additionalProperties":false},"AlertNotificationState":{"enum":["New","Closed"],"type":"string"}}}}
```


# Beacons

## GET /V2/{tenantVarCode}/beacons

> Returns a list of Beacons for specified tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Beacons"}],"paths":{"/V2/{tenantVarCode}/beacons":{"get":{"tags":["Beacons"],"summary":"Returns a list of Beacons for specified tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Beacon"}}}}}}}}},"components":{"schemas":{"Beacon":{"required":["MajorRevision","MinorRevision","Name","Position","Type","Uuid"],"type":"object","properties":{"BeaconId":{"type":"string","description":"Unique string that identifies the beacon","nullable":true},"Name":{"minLength":1,"type":"string","description":"A string with name"},"Type":{"minLength":1,"type":"string","description":"A string with Type (Valid types are iBeacon and Eddystone)"},"Uuid":{"minLength":1,"type":"string","description":"A string with UUID"},"MajorRevision":{"type":"integer","description":"A integer with Major Revision","format":"int32"},"MinorRevision":{"type":"integer","description":"A integer with Minor Revision","format":"int32"},"Range":{"type":"integer","description":"Range in meters","format":"int32","nullable":true},"Color":{"type":"string","description":"Color of Beacon (Supported colors are orange, black, green, blue, red, purple)","nullable":true},"Position":{"$ref":"#/components/schemas/LatLon"},"MinZoom":{"type":"integer","description":"Minimum Zoom when Beacon is shown","format":"int32"},"VisibleInSubTenants":{"type":"boolean","description":"If true, Beacon is visible to users in sub-tenants."}},"additionalProperties":false},"LatLon":{"type":"object","properties":{"Lat":{"type":"number","format":"double"},"Lon":{"type":"number","format":"double"}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/beacons

> Creates a new Beacon

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Beacons"}],"paths":{"/V2/{tenantVarCode}/beacons":{"post":{"tags":["Beacons"],"summary":"Creates a new Beacon","operationId":"PostBeacon","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Beacon","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Beacon"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Beacon":{"required":["MajorRevision","MinorRevision","Name","Position","Type","Uuid"],"type":"object","properties":{"BeaconId":{"type":"string","description":"Unique string that identifies the beacon","nullable":true},"Name":{"minLength":1,"type":"string","description":"A string with name"},"Type":{"minLength":1,"type":"string","description":"A string with Type (Valid types are iBeacon and Eddystone)"},"Uuid":{"minLength":1,"type":"string","description":"A string with UUID"},"MajorRevision":{"type":"integer","description":"A integer with Major Revision","format":"int32"},"MinorRevision":{"type":"integer","description":"A integer with Minor Revision","format":"int32"},"Range":{"type":"integer","description":"Range in meters","format":"int32","nullable":true},"Color":{"type":"string","description":"Color of Beacon (Supported colors are orange, black, green, blue, red, purple)","nullable":true},"Position":{"$ref":"#/components/schemas/LatLon"},"MinZoom":{"type":"integer","description":"Minimum Zoom when Beacon is shown","format":"int32"},"VisibleInSubTenants":{"type":"boolean","description":"If true, Beacon is visible to users in sub-tenants."}},"additionalProperties":false},"LatLon":{"type":"object","properties":{"Lat":{"type":"number","format":"double"},"Lon":{"type":"number","format":"double"}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/beacons/{beaconId}

> Returns a specific Beacon

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Beacons"}],"paths":{"/V2/{tenantVarCode}/beacons/{beaconId}":{"get":{"tags":["Beacons"],"summary":"Returns a specific Beacon","operationId":"GetBeacon","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"beaconId","in":"path","description":"Beacon Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Beacon"}}}}}}}},"components":{"schemas":{"Beacon":{"required":["MajorRevision","MinorRevision","Name","Position","Type","Uuid"],"type":"object","properties":{"BeaconId":{"type":"string","description":"Unique string that identifies the beacon","nullable":true},"Name":{"minLength":1,"type":"string","description":"A string with name"},"Type":{"minLength":1,"type":"string","description":"A string with Type (Valid types are iBeacon and Eddystone)"},"Uuid":{"minLength":1,"type":"string","description":"A string with UUID"},"MajorRevision":{"type":"integer","description":"A integer with Major Revision","format":"int32"},"MinorRevision":{"type":"integer","description":"A integer with Minor Revision","format":"int32"},"Range":{"type":"integer","description":"Range in meters","format":"int32","nullable":true},"Color":{"type":"string","description":"Color of Beacon (Supported colors are orange, black, green, blue, red, purple)","nullable":true},"Position":{"$ref":"#/components/schemas/LatLon"},"MinZoom":{"type":"integer","description":"Minimum Zoom when Beacon is shown","format":"int32"},"VisibleInSubTenants":{"type":"boolean","description":"If true, Beacon is visible to users in sub-tenants."}},"additionalProperties":false},"LatLon":{"type":"object","properties":{"Lat":{"type":"number","format":"double"},"Lon":{"type":"number","format":"double"}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/beacons/{beaconId}

> Updates an existing Beacon

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Beacons"}],"paths":{"/V2/{tenantVarCode}/beacons/{beaconId}":{"put":{"tags":["Beacons"],"summary":"Updates an existing Beacon","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"beaconId","in":"path","description":"Beacon Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Updated Beacon","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Beacon"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Beacon"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Beacon"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Beacon":{"required":["MajorRevision","MinorRevision","Name","Position","Type","Uuid"],"type":"object","properties":{"BeaconId":{"type":"string","description":"Unique string that identifies the beacon","nullable":true},"Name":{"minLength":1,"type":"string","description":"A string with name"},"Type":{"minLength":1,"type":"string","description":"A string with Type (Valid types are iBeacon and Eddystone)"},"Uuid":{"minLength":1,"type":"string","description":"A string with UUID"},"MajorRevision":{"type":"integer","description":"A integer with Major Revision","format":"int32"},"MinorRevision":{"type":"integer","description":"A integer with Minor Revision","format":"int32"},"Range":{"type":"integer","description":"Range in meters","format":"int32","nullable":true},"Color":{"type":"string","description":"Color of Beacon (Supported colors are orange, black, green, blue, red, purple)","nullable":true},"Position":{"$ref":"#/components/schemas/LatLon"},"MinZoom":{"type":"integer","description":"Minimum Zoom when Beacon is shown","format":"int32"},"VisibleInSubTenants":{"type":"boolean","description":"If true, Beacon is visible to users in sub-tenants."}},"additionalProperties":false},"LatLon":{"type":"object","properties":{"Lat":{"type":"number","format":"double"},"Lon":{"type":"number","format":"double"}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/beacons/{beaconId}

> Deletes a specific Beacon

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Beacons"}],"paths":{"/V2/{tenantVarCode}/beacons/{beaconId}":{"delete":{"tags":["Beacons"],"summary":"Deletes a specific Beacon","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"beaconId","in":"path","description":"Beacon Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Canned Messages For Device

## GET /V2/{tenantVarCode}/devices/{deviceId}/cannedmessages

> Returns all canned messages for device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Canned Messages for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/cannedmessages":{"get":{"tags":["Canned Messages for Device"],"summary":"Returns all canned messages for device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}}}}}}}},"components":{"schemas":{"CannedMessage":{"required":["Message","Number"],"type":"object","properties":{"Number":{"type":"integer","description":"Canned message number","format":"int32"},"Message":{"minLength":1,"type":"string","description":"The text of the canned message"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time"}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/devices/{deviceId}/cannedmessages/{cannedMessageNumber}

> Returns specified canned message for device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Canned Messages for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/cannedmessages/{cannedMessageNumber}":{"get":{"tags":["Canned Messages for Device"],"summary":"Returns specified canned message for device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"cannedMessageNumber","in":"path","description":"Canned Message Number","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/plain":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}}}}}}}},"components":{"schemas":{"CannedMessage":{"required":["Message","Number"],"type":"object","properties":{"Number":{"type":"integer","description":"Canned message number","format":"int32"},"Message":{"minLength":1,"type":"string","description":"The text of the canned message"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time"}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/devices/{deviceId}/cannedmessages/{cannedMessageNumber}

> Updates canned message for device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Canned Messages for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/cannedmessages/{cannedMessageNumber}":{"put":{"tags":["Canned Messages for Device"],"summary":"Updates canned message for device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"cannedMessageNumber","in":"path","description":"Canned Message Number","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Canned Message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/plain":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"CannedMessage":{"required":["Message","Number"],"type":"object","properties":{"Number":{"type":"integer","description":"Canned message number","format":"int32"},"Message":{"minLength":1,"type":"string","description":"The text of the canned message"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time"}},"additionalProperties":false}}}}
```


# Canned Messages For Tenant

## GET /V2/{tenantVarCode}/cannedmessages

> Returns all canned messages for tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Canned Messages for Tenant"}],"paths":{"/V2/{tenantVarCode}/cannedmessages":{"get":{"tags":["Canned Messages for Tenant"],"summary":"Returns all canned messages for tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CannedMessage"}}}}}}}}},"components":{"schemas":{"CannedMessage":{"required":["Message","Number"],"type":"object","properties":{"Number":{"type":"integer","description":"Canned message number","format":"int32"},"Message":{"minLength":1,"type":"string","description":"The text of the canned message"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time"}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/cannedmessages/{cannedMessageNumber}

> Returns specified canned message for tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Canned Messages for Tenant"}],"paths":{"/V2/{tenantVarCode}/cannedmessages/{cannedMessageNumber}":{"get":{"tags":["Canned Messages for Tenant"],"summary":"Returns specified canned message for tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"cannedMessageNumber","in":"path","description":"Canned Message Number","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/plain":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}}}}}}}},"components":{"schemas":{"CannedMessage":{"required":["Message","Number"],"type":"object","properties":{"Number":{"type":"integer","description":"Canned message number","format":"int32"},"Message":{"minLength":1,"type":"string","description":"The text of the canned message"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time"}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/cannedmessages/{cannedMessageNumber}

> Updates canned message for tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Canned Messages for Tenant"}],"paths":{"/V2/{tenantVarCode}/cannedmessages/{cannedMessageNumber}":{"put":{"tags":["Canned Messages for Tenant"],"summary":"Updates canned message for tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"cannedMessageNumber","in":"path","description":"Canned Message Number","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Canned Message","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/plain":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/CannedMessage"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"CannedMessage":{"required":["Message","Number"],"type":"object","properties":{"Number":{"type":"integer","description":"Canned message number","format":"int32"},"Message":{"minLength":1,"type":"string","description":"The text of the canned message"},"LastUpdated":{"type":"string","description":"A date and time that the entry was last modified","format":"date-time"}},"additionalProperties":false}}}}
```


# Check In Schedules

## GET /V2/{tenantVarCode}/devices/{deviceId}/checkinschedule

> Returns the check in schedule active for the device. This can be either device or group check in schedule

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Check-In Schedules"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/checkinschedule":{"get":{"tags":["Check-In Schedules"],"summary":"Returns the check in schedule active for the device. This can be either device or group check in schedule","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckInSchedule"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/CheckInSchedule"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/CheckInSchedule"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CheckInSchedule"}},"text/plain":{"schema":{"$ref":"#/components/schemas/CheckInSchedule"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/CheckInSchedule"}},"text/json":{"schema":{"$ref":"#/components/schemas/CheckInSchedule"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CheckInSchedule"}}}}}}}},"components":{"schemas":{"CheckInSchedule":{"type":"object","properties":{"ScheduleId":{"type":"string","description":"A unique identifier of the schedule","nullable":true},"Name":{"type":"string","description":"A string with name of the check in schedule","nullable":true},"BufferPeriod":{"type":"integer","description":"Whole number specifying time interval for check in message in minutes","format":"int32"},"Type":{"$ref":"#/components/schemas/CheckInScheduleType"},"SelectedTimes":{"type":"array","items":{"type":"string","format":"date-span"},"description":"Array of ISO 8601 values with times","nullable":true},"Interval":{"type":"string","description":"String containing the ISO 8601 value for interval","format":"date-span","nullable":true},"StartTime":{"type":"string","description":"String containing the ISO 8601 value for start time","format":"date-span","nullable":true},"EndTime":{"type":"string","description":"String containing the ISO 8601 value for end time. For example PT22H30M represents 22:30","format":"date-span","nullable":true},"TimeZoneId":{"type":"string","description":"The name of time zone used for this schedule","nullable":true},"SelectedDaysOfWeek":{"type":"array","items":{"$ref":"#/components/schemas/DayOfWeek"},"description":"Array with days of the week","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true}},"additionalProperties":false},"CheckInScheduleType":{"enum":["Intervals","Times"],"type":"string"},"DayOfWeek":{"enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/checkinschedules

> Returns a list of check in schedules for the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Check-In Schedules"}],"paths":{"/V2/{tenantVarCode}/checkinschedules":{"get":{"tags":["Check-In Schedules"],"summary":"Returns a list of check in schedules for the tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}}}}}}}},"components":{"schemas":{"CheckInSchedule":{"type":"object","properties":{"ScheduleId":{"type":"string","description":"A unique identifier of the schedule","nullable":true},"Name":{"type":"string","description":"A string with name of the check in schedule","nullable":true},"BufferPeriod":{"type":"integer","description":"Whole number specifying time interval for check in message in minutes","format":"int32"},"Type":{"$ref":"#/components/schemas/CheckInScheduleType"},"SelectedTimes":{"type":"array","items":{"type":"string","format":"date-span"},"description":"Array of ISO 8601 values with times","nullable":true},"Interval":{"type":"string","description":"String containing the ISO 8601 value for interval","format":"date-span","nullable":true},"StartTime":{"type":"string","description":"String containing the ISO 8601 value for start time","format":"date-span","nullable":true},"EndTime":{"type":"string","description":"String containing the ISO 8601 value for end time. For example PT22H30M represents 22:30","format":"date-span","nullable":true},"TimeZoneId":{"type":"string","description":"The name of time zone used for this schedule","nullable":true},"SelectedDaysOfWeek":{"type":"array","items":{"$ref":"#/components/schemas/DayOfWeek"},"description":"Array with days of the week","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true}},"additionalProperties":false},"CheckInScheduleType":{"enum":["Intervals","Times"],"type":"string"},"DayOfWeek":{"enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/checkinschedules/{scheduleId}

> Returns check in schedule

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Check-In Schedules"}],"paths":{"/V2/{tenantVarCode}/checkinschedules/{scheduleId}":{"get":{"tags":["Check-In Schedules"],"summary":"Returns check in schedule","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"scheduleId","in":"path","description":"Schedule Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CheckInSchedule"}}}}}}}}},"components":{"schemas":{"CheckInSchedule":{"type":"object","properties":{"ScheduleId":{"type":"string","description":"A unique identifier of the schedule","nullable":true},"Name":{"type":"string","description":"A string with name of the check in schedule","nullable":true},"BufferPeriod":{"type":"integer","description":"Whole number specifying time interval for check in message in minutes","format":"int32"},"Type":{"$ref":"#/components/schemas/CheckInScheduleType"},"SelectedTimes":{"type":"array","items":{"type":"string","format":"date-span"},"description":"Array of ISO 8601 values with times","nullable":true},"Interval":{"type":"string","description":"String containing the ISO 8601 value for interval","format":"date-span","nullable":true},"StartTime":{"type":"string","description":"String containing the ISO 8601 value for start time","format":"date-span","nullable":true},"EndTime":{"type":"string","description":"String containing the ISO 8601 value for end time. For example PT22H30M represents 22:30","format":"date-span","nullable":true},"TimeZoneId":{"type":"string","description":"The name of time zone used for this schedule","nullable":true},"SelectedDaysOfWeek":{"type":"array","items":{"$ref":"#/components/schemas/DayOfWeek"},"description":"Array with days of the week","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true}},"additionalProperties":false},"CheckInScheduleType":{"enum":["Intervals","Times"],"type":"string"},"DayOfWeek":{"enum":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"type":"string"}}}}
```


# Cross Tenant Collections

## GET /V2/{tenantVarCode}/crosstenantcollections

> Returns a list of cross tenant collections

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Cross Tenant Collections"}],"paths":{"/V2/{tenantVarCode}/crosstenantcollections":{"get":{"tags":["Cross Tenant Collections"],"summary":"Returns a list of cross tenant collections","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CrossTenantCollection"}}}}}}}}},"components":{"schemas":{"CrossTenantCollection":{"required":["CollectionName"],"type":"object","properties":{"CollectionId":{"type":"string","description":"A unique identifier of the collection","nullable":true},"CollectionName":{"minLength":1,"type":"string","description":"A string with name of the collection"},"Tenants":{"type":"string","description":"Comma delimited list of tenant codes","nullable":true},"Groups":{"type":"string","description":"Comma delimited list of group ids","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device ids","nullable":true},"IncludeSubtenants":{"type":"boolean","description":"Whether all subtenants are included"}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/crosstenantcollections

> Creates a new cross tenant collection

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Cross Tenant Collections"}],"paths":{"/V2/{tenantVarCode}/crosstenantcollections":{"post":{"tags":["Cross Tenant Collections"],"summary":"Creates a new cross tenant collection","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Cross Tenant Collection","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/plain":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"CrossTenantCollection":{"required":["CollectionName"],"type":"object","properties":{"CollectionId":{"type":"string","description":"A unique identifier of the collection","nullable":true},"CollectionName":{"minLength":1,"type":"string","description":"A string with name of the collection"},"Tenants":{"type":"string","description":"Comma delimited list of tenant codes","nullable":true},"Groups":{"type":"string","description":"Comma delimited list of group ids","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device ids","nullable":true},"IncludeSubtenants":{"type":"boolean","description":"Whether all subtenants are included"}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/crosstenantcollections/{collectionId}

> Returns cross tenant collection

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Cross Tenant Collections"}],"paths":{"/V2/{tenantVarCode}/crosstenantcollections/{collectionId}":{"get":{"tags":["Cross Tenant Collections"],"summary":"Returns cross tenant collection","operationId":"GetCrossTenantCollection","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"collectionId","in":"path","description":"Cross Tenant Collection Collection Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/plain":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}}}}}}}},"components":{"schemas":{"CrossTenantCollection":{"required":["CollectionName"],"type":"object","properties":{"CollectionId":{"type":"string","description":"A unique identifier of the collection","nullable":true},"CollectionName":{"minLength":1,"type":"string","description":"A string with name of the collection"},"Tenants":{"type":"string","description":"Comma delimited list of tenant codes","nullable":true},"Groups":{"type":"string","description":"Comma delimited list of group ids","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device ids","nullable":true},"IncludeSubtenants":{"type":"boolean","description":"Whether all subtenants are included"}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/crosstenantcollections/{collectionId}

> Updates cross tenant collection

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Cross Tenant Collections"}],"paths":{"/V2/{tenantVarCode}/crosstenantcollections/{collectionId}":{"put":{"tags":["Cross Tenant Collections"],"summary":"Updates cross tenant collection","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"collectionId","in":"path","description":"Cross Tenant Collection Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Cross Tenant Collection","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/xml":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/plain":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"text/xml":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/CrossTenantCollection"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"CrossTenantCollection":{"required":["CollectionName"],"type":"object","properties":{"CollectionId":{"type":"string","description":"A unique identifier of the collection","nullable":true},"CollectionName":{"minLength":1,"type":"string","description":"A string with name of the collection"},"Tenants":{"type":"string","description":"Comma delimited list of tenant codes","nullable":true},"Groups":{"type":"string","description":"Comma delimited list of group ids","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device ids","nullable":true},"IncludeSubtenants":{"type":"boolean","description":"Whether all subtenants are included"}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/crosstenantcollections/{collectionId}

> Deletes cross tenant collection

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Cross Tenant Collections"}],"paths":{"/V2/{tenantVarCode}/crosstenantcollections/{collectionId}":{"delete":{"tags":["Cross Tenant Collections"],"summary":"Deletes cross tenant collection","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"collectionId","in":"path","description":"Cross Tenant Collection Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Data Logs

## Returns a zip file of the logs generated on that day

> GET	'tenantCode/datalogs/2015-03-01-2000'

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Data Logs"}],"paths":{"/V2/{tenantVarCode}/datalogs/{logDate}":{"get":{"tags":["Data Logs"],"summary":"Returns a zip file of the logs generated on that day","description":"GET\t'tenantCode/datalogs/2015-03-01-2000'","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"logDate","in":"path","description":"Log date in format YYYY-MM-DD-HHHH","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string","format":"byte"}},"application/json;IEEE754Compatible=false":{"schema":{"type":"string","format":"byte"}},"application/json;IEEE754Compatible=true":{"schema":{"type":"string","format":"byte"}},"application/xml":{"schema":{"type":"string","format":"byte"}},"text/plain":{"schema":{"type":"string","format":"byte"}},"application/octet-stream":{"schema":{"type":"string","format":"byte"}},"text/json":{"schema":{"type":"string","format":"byte"}},"text/xml":{"schema":{"type":"string","format":"byte"}},"text/csv":{"schema":{"type":"string","format":"byte"}}}}}}}}}
```


# Deleted Devices

## GET /V2/{tenantVarCode}/deleteddevices

> Returns deleted devices for specified tenant. Requires AccessAllDevices permission.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Deleted Devices"}],"paths":{"/V2/{tenantVarCode}/deleteddevices":{"get":{"tags":["Deleted Devices"],"summary":"Returns deleted devices for specified tenant. Requires AccessAllDevices permission.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"subtenants","in":"query","description":"When 'subtenants=true' the list contains devices for the tenant and all subtenants","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}}}}}}}},"components":{"schemas":{"DeletedDeviceRecord":{"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"TenantDescription":{"type":"string","description":"Name used to describe the tenant (max 250 characters)","nullable":true},"DeviceId":{"type":"string","description":"A string that uniquely identifies the device.","nullable":true},"DeviceType":{"type":"string","description":"A string enumeration that defines the device type.","nullable":true},"FriendlyName":{"type":"string","description":"A string used to more easily identify the device","nullable":true},"Username":{"type":"string","description":"Redacted username (email address) of the last assigned owner of the device","nullable":true},"SecondaryDeviceId":{"type":"string","description":"Secondary Device Id for devices that send messages with multiple device identifiers.","nullable":true},"IridiumImei":{"type":"string","description":"Device IMEI","nullable":true},"SimNumber":{"type":"string","description":"Device Sim Number (ICCID)","nullable":true},"PhoneNumber":{"type":"string","description":"Device phone number (can be used only if device supports phone number property)","nullable":true},"DateDeleted":{"type":"string","description":"The date (UTC) that the device was deleted from the platform","format":"date-time"},"DeletedBy":{"type":"string","description":"Redacted username (email address) of the user that deleted the device","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/deleteddevices/{deviceId}

> Returns deleted devices for specified tenant and device id. Requires AccessAllDevices permission.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Deleted Devices"}],"paths":{"/V2/{tenantVarCode}/deleteddevices/{deviceId}":{"get":{"tags":["Deleted Devices"],"summary":"Returns deleted devices for specified tenant and device id. Requires AccessAllDevices permission.","operationId":"SearchDeletedDevices","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"subtenants","in":"query","description":"When 'subtenants=true' the list contains devices for the tenant and all subtenants","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeletedDeviceRecord"}}}}}}}}},"components":{"schemas":{"DeletedDeviceRecord":{"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"TenantDescription":{"type":"string","description":"Name used to describe the tenant (max 250 characters)","nullable":true},"DeviceId":{"type":"string","description":"A string that uniquely identifies the device.","nullable":true},"DeviceType":{"type":"string","description":"A string enumeration that defines the device type.","nullable":true},"FriendlyName":{"type":"string","description":"A string used to more easily identify the device","nullable":true},"Username":{"type":"string","description":"Redacted username (email address) of the last assigned owner of the device","nullable":true},"SecondaryDeviceId":{"type":"string","description":"Secondary Device Id for devices that send messages with multiple device identifiers.","nullable":true},"IridiumImei":{"type":"string","description":"Device IMEI","nullable":true},"SimNumber":{"type":"string","description":"Device Sim Number (ICCID)","nullable":true},"PhoneNumber":{"type":"string","description":"Device phone number (can be used only if device supports phone number property)","nullable":true},"DateDeleted":{"type":"string","description":"The date (UTC) that the device was deleted from the platform","format":"date-time"},"DeletedBy":{"type":"string","description":"Redacted username (email address) of the user that deleted the device","nullable":true}},"additionalProperties":false}}}}
```


# Device Log

## GET /V2/{tenantVarCode}/devices/{deviceId}/devicelog

> Returns a list of log entries for the device> \
> This endpoint returns paged results of up to 1,000 records per response, using the X-CONTINUATIONTOKEN header.> \
> When the response includes this token, it indicates that additional records are available. To retrieve the next set of results,> \
> include the X-CONTINUATIONTOKEN token from the previous response header in the header of your subsequent request.> \
> This process can be repeated until no further continuation token is provided, indicating that you have reached the end of the dataset.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Device Log"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/devicelog":{"get":{"tags":["Device Log"],"summary":"Returns a list of log entries for the device\r\nThis endpoint returns paged results of up to 1,000 records per response, using the X-CONTINUATIONTOKEN header.\r\nWhen the response includes this token, it indicates that additional records are available. To retrieve the next set of results,\r\ninclude the X-CONTINUATIONTOKEN token from the previous response header in the header of your subsequent request.\r\nThis process can be repeated until no further continuation token is provided, indicating that you have reached the end of the dataset.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","description":"From date","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","description":"To date","schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLog"}}}}}}}}},"components":{"schemas":{"DeviceLog":{"type":"object","properties":{"Type":{"$ref":"#/components/schemas/DeviceLogEvent"},"DateTime":{"type":"string","description":"Created date","format":"date-time"},"FormatedType":{"type":"string","description":"Log item type friendly name","nullable":true},"FormatedDetails":{"type":"string","description":"Log item details","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional properties","nullable":true}},"additionalProperties":false},"DeviceLogEvent":{"enum":["DeviceCreated","UserChanged","Emergency","EmergencyCancelled","Overdue","OverdueCancelled","Unknown","DeviceIdChanged","GeosAlert","GeosRegistration","GeosRegistrationUpdate","GeosDeregistration","CheckInRequest","ClearCheckInRequest","ManualCheckIn","Note","TextMessageSentToDevice","EmergencyEscalationMessageSent","IncidentUpdatedByGeos","PollMessageSentToDevice","RebootMessageSentToDevice","ConfigurationMessageSentToDevice","CheckInScheduleEnabled","CheckInScheduleDisabled","CheckInScheduleSet","CheckInScheduleRemoved","GeosTextMessageReceived","GeosTextMessageSent","ConfigurationUpdated","FirmwareUpdated","DeviceChangedTenantId","DeviceDeleted","DeviceStatusChanged","ProvisioningStatusChanged","EmergencyAcknowledged","EventNotificationMessageSent","EventNotificationAlertRaised","ParaMessageSentToDevice","RollMessageSentToDevice","DeviceConfigurationRequested","RequestOdbSentToDevice","MonitoringStopped","MonitoringStarted","EventNotificationEmpty","FbtLogBookUpdated","ZoleoDuplicateMessage","ZoleoBearerSwitchToSbd","ZoleoBearerSwitchToInternetMo","ZoleoBearerSwitchToInternetApi","ZoleoSendingAppPushNotification","ZoleoAppPushTimedOut","ZoleoRestLogin","FirmwareValidated","ZoleoRestLoginFailure","DeviceFaultNone","DeviceFaultMoThrottle","EvacuateMessageSentToDevice","MxCommandSentToDevice","GroupChanged","AbandonMessageSentToDevice","GlobalRescueTextMessageReceived","GlobalRescueTextMessageSent","IncidentUpdatedByGlobalRescue","GlobalRescueRegistration","GlobalRescueRegistrationUpdate","GlobalRescueDeregistration","EocTextMessageSent","GlobalRescueAlert","GroupRemoved","ZoleoPhoneNumberCleared","ZoleoIosCheckInPlusTrackingNotification","ZoleoLink","CheckInStateCleared","MaintenanceModeSet","MaintenanceModeCleared","MaintenanceModeExpired"],"type":"string"}}}}
```


# Devices

## GET /V2/{tenantVarCode}/devices

> Returns devices for specified tenant> \
> This endpoint returns paged results of up to 10,000 records per response, using the X-CONTINUATIONTOKEN header.> \
> When the response includes this token, it indicates that additional records are available. To retrieve the next set of results,> \
> include the X-CONTINUATIONTOKEN token from the previous response header in the header of your subsequent request.> \
> This process can be repeated until no further continuation token is provided, indicating that you have reached the end of the dataset.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Devices"}],"paths":{"/V2/{tenantVarCode}/devices":{"get":{"tags":["Devices"],"summary":"Returns devices for specified tenant\r\nThis endpoint returns paged results of up to 10,000 records per response, using the X-CONTINUATIONTOKEN header.\r\nWhen the response includes this token, it indicates that additional records are available. To retrieve the next set of results,\r\ninclude the X-CONTINUATIONTOKEN token from the previous response header in the header of your subsequent request.\r\nThis process can be repeated until no further continuation token is provided, indicating that you have reached the end of the dataset.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"subtenants","in":"query","description":"When 'subtenants=true' the list contains devices for the tenant and all subtenants","schema":{"type":"boolean","default":false}},{"name":"photo","in":"query","description":"If true, result include Base64 encoded device photo","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Device"}}}}}}}}},"components":{"schemas":{"Device":{"required":["DeviceId","FriendlyName"],"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"DeviceId":{"minLength":1,"type":"string","description":"A string that uniquely identifies the device. It can contain only letters, digits, hyphen and can be up to 50 characters long. This is normally the IMEI number"},"DeviceType":{"type":"string","description":"A string enumeration that defines the device type. For list of avalibale device types check your tenant object","nullable":true},"FriendlyName":{"minLength":1,"type":"string","description":"A string used to more easily identify the device"},"Description":{"type":"string","description":"A text string used to describe the device","nullable":true},"Username":{"type":"string","description":"The username (email address) of the assigned owner of the device","nullable":true},"UserId":{"type":"string","description":"The userId of the assigned owner of the device","nullable":true},"DeviceStatus":{"type":"string","description":"The current status of the device. Valid values are: \"Active\" or \"Inactive\"","nullable":true},"ProvisioningStatus":{"$ref":"#/components/schemas/ProvisioningStatus"},"DateAdded":{"type":"string","description":"The date (UTC) that the device was registered on the platform","format":"date-time","nullable":true},"GroupId":{"type":"string","description":"Reference to Group or null when device is not member of any group","nullable":true},"CheckInScheduleEnabled":{"type":"boolean","description":"A boolean indicating if the schedule is checked or not","nullable":true},"CheckInScheduleOverdue":{"$ref":"#/components/schemas/OverdueState"},"EnableEmailDelivery":{"type":"boolean","description":"If set \"true\", the device can be emailed from any email client using the following address format \"imei@globalalerting.com\""},"EnableSmsReplies":{"type":"boolean","description":"If set \"true\", the sms messages from the device will include a reply link","nullable":true},"IsMonitored":{"type":"boolean","description":"A boolean indicating if the device is currently monitored"},"MonitoringIntervalMinutes":{"type":"integer","description":"A whole number that specifies number of minutes for device monitoring interval","format":"int32","nullable":true},"MonitoringBufferMinutes":{"type":"integer","description":"A whole number that specifies number of minutes buffer for device monitoring","format":"int32","nullable":true},"MonitoringOverdue":{"$ref":"#/components/schemas/OverdueState"},"EmergencyState":{"$ref":"#/components/schemas/EmergencyState"},"EmergencyStateAcknowledged":{"type":"boolean","description":"A flag indicating that the emergency state on the device has been acknowledged on the portal","nullable":true},"PhoneNumber":{"type":"string","description":"A string starting with '+' indicating device phone number (can be used only if device supports phone number property)","nullable":true},"LastLatitude":{"type":"number","description":"Last known position of the device","format":"double","nullable":true},"LastLongitude":{"type":"number","description":"Last known position of the device","format":"double","nullable":true},"LastMessageTime":{"type":"string","description":"A date and time of last MO Message (UTC)","format":"date-time","nullable":true},"LastLocationTime":{"type":"string","description":"A date and time of last MO Message with position (UTC)","format":"date-time","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional device properties","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true},"ETag":{"type":"string","description":"ETag representing record version","nullable":true},"Photo":{"type":"string","description":"Base64 encoded device photo. Included in GET request only when photo parameter is specified.","nullable":true},"CustomEmailAddress":{"type":"string","description":"Custom Email address. If supported for your account","nullable":true},"SecondaryDeviceId":{"type":"string","description":"Secondary Device Id for devices that send messages with multiple device identifiers.","nullable":true}},"additionalProperties":false},"ProvisioningStatus":{"enum":["Provisioned","NotProvisioned","Suspended"],"type":"string"},"OverdueState":{"enum":["NotOverdue","Warning","Overdue"],"type":"string"},"EmergencyState":{"enum":["None","Emergency","EmergencyCancel","NotSpecified"],"type":"string"}}}}
```

## POST /V2/{tenantVarCode}/devices

> Creates a new device> \\
>
> \
> Set GapAppSendEmail property to true when you are creating a new GapApp device and you want assigned user to receive welcome email.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Devices"}],"paths":{"/V2/{tenantVarCode}/devices":{"post":{"tags":["Devices"],"summary":"Creates a new device\r\n\r\nSet GapAppSendEmail property to true when you are creating a new GapApp device and you want assigned user to receive welcome email.","operationId":"PostDevice","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Device","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Device"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Device"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Device"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Device"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Device"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Device"}},"text/json":{"schema":{"$ref":"#/components/schemas/Device"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Device"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Device"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Device"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Device":{"required":["DeviceId","FriendlyName"],"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"DeviceId":{"minLength":1,"type":"string","description":"A string that uniquely identifies the device. It can contain only letters, digits, hyphen and can be up to 50 characters long. This is normally the IMEI number"},"DeviceType":{"type":"string","description":"A string enumeration that defines the device type. For list of avalibale device types check your tenant object","nullable":true},"FriendlyName":{"minLength":1,"type":"string","description":"A string used to more easily identify the device"},"Description":{"type":"string","description":"A text string used to describe the device","nullable":true},"Username":{"type":"string","description":"The username (email address) of the assigned owner of the device","nullable":true},"UserId":{"type":"string","description":"The userId of the assigned owner of the device","nullable":true},"DeviceStatus":{"type":"string","description":"The current status of the device. Valid values are: \"Active\" or \"Inactive\"","nullable":true},"ProvisioningStatus":{"$ref":"#/components/schemas/ProvisioningStatus"},"DateAdded":{"type":"string","description":"The date (UTC) that the device was registered on the platform","format":"date-time","nullable":true},"GroupId":{"type":"string","description":"Reference to Group or null when device is not member of any group","nullable":true},"CheckInScheduleEnabled":{"type":"boolean","description":"A boolean indicating if the schedule is checked or not","nullable":true},"CheckInScheduleOverdue":{"$ref":"#/components/schemas/OverdueState"},"EnableEmailDelivery":{"type":"boolean","description":"If set \"true\", the device can be emailed from any email client using the following address format \"imei@globalalerting.com\""},"EnableSmsReplies":{"type":"boolean","description":"If set \"true\", the sms messages from the device will include a reply link","nullable":true},"IsMonitored":{"type":"boolean","description":"A boolean indicating if the device is currently monitored"},"MonitoringIntervalMinutes":{"type":"integer","description":"A whole number that specifies number of minutes for device monitoring interval","format":"int32","nullable":true},"MonitoringBufferMinutes":{"type":"integer","description":"A whole number that specifies number of minutes buffer for device monitoring","format":"int32","nullable":true},"MonitoringOverdue":{"$ref":"#/components/schemas/OverdueState"},"EmergencyState":{"$ref":"#/components/schemas/EmergencyState"},"EmergencyStateAcknowledged":{"type":"boolean","description":"A flag indicating that the emergency state on the device has been acknowledged on the portal","nullable":true},"PhoneNumber":{"type":"string","description":"A string starting with '+' indicating device phone number (can be used only if device supports phone number property)","nullable":true},"LastLatitude":{"type":"number","description":"Last known position of the device","format":"double","nullable":true},"LastLongitude":{"type":"number","description":"Last known position of the device","format":"double","nullable":true},"LastMessageTime":{"type":"string","description":"A date and time of last MO Message (UTC)","format":"date-time","nullable":true},"LastLocationTime":{"type":"string","description":"A date and time of last MO Message with position (UTC)","format":"date-time","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional device properties","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true},"ETag":{"type":"string","description":"ETag representing record version","nullable":true},"Photo":{"type":"string","description":"Base64 encoded device photo. Included in GET request only when photo parameter is specified.","nullable":true},"CustomEmailAddress":{"type":"string","description":"Custom Email address. If supported for your account","nullable":true},"SecondaryDeviceId":{"type":"string","description":"Secondary Device Id for devices that send messages with multiple device identifiers.","nullable":true}},"additionalProperties":false},"ProvisioningStatus":{"enum":["Provisioned","NotProvisioned","Suspended"],"type":"string"},"OverdueState":{"enum":["NotOverdue","Warning","Overdue"],"type":"string"},"EmergencyState":{"enum":["None","Emergency","EmergencyCancel","NotSpecified"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/devices/{deviceId}

> Returns a specific device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Devices"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}":{"get":{"tags":["Devices"],"summary":"Returns a specific device","operationId":"GetDevice","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"photo","in":"query","description":"If true, result include Base64 encoded device photo","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Device"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Device"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Device"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Device"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Device"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Device"}},"text/json":{"schema":{"$ref":"#/components/schemas/Device"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Device"}}}}}}}},"components":{"schemas":{"Device":{"required":["DeviceId","FriendlyName"],"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"DeviceId":{"minLength":1,"type":"string","description":"A string that uniquely identifies the device. It can contain only letters, digits, hyphen and can be up to 50 characters long. This is normally the IMEI number"},"DeviceType":{"type":"string","description":"A string enumeration that defines the device type. For list of avalibale device types check your tenant object","nullable":true},"FriendlyName":{"minLength":1,"type":"string","description":"A string used to more easily identify the device"},"Description":{"type":"string","description":"A text string used to describe the device","nullable":true},"Username":{"type":"string","description":"The username (email address) of the assigned owner of the device","nullable":true},"UserId":{"type":"string","description":"The userId of the assigned owner of the device","nullable":true},"DeviceStatus":{"type":"string","description":"The current status of the device. Valid values are: \"Active\" or \"Inactive\"","nullable":true},"ProvisioningStatus":{"$ref":"#/components/schemas/ProvisioningStatus"},"DateAdded":{"type":"string","description":"The date (UTC) that the device was registered on the platform","format":"date-time","nullable":true},"GroupId":{"type":"string","description":"Reference to Group or null when device is not member of any group","nullable":true},"CheckInScheduleEnabled":{"type":"boolean","description":"A boolean indicating if the schedule is checked or not","nullable":true},"CheckInScheduleOverdue":{"$ref":"#/components/schemas/OverdueState"},"EnableEmailDelivery":{"type":"boolean","description":"If set \"true\", the device can be emailed from any email client using the following address format \"imei@globalalerting.com\""},"EnableSmsReplies":{"type":"boolean","description":"If set \"true\", the sms messages from the device will include a reply link","nullable":true},"IsMonitored":{"type":"boolean","description":"A boolean indicating if the device is currently monitored"},"MonitoringIntervalMinutes":{"type":"integer","description":"A whole number that specifies number of minutes for device monitoring interval","format":"int32","nullable":true},"MonitoringBufferMinutes":{"type":"integer","description":"A whole number that specifies number of minutes buffer for device monitoring","format":"int32","nullable":true},"MonitoringOverdue":{"$ref":"#/components/schemas/OverdueState"},"EmergencyState":{"$ref":"#/components/schemas/EmergencyState"},"EmergencyStateAcknowledged":{"type":"boolean","description":"A flag indicating that the emergency state on the device has been acknowledged on the portal","nullable":true},"PhoneNumber":{"type":"string","description":"A string starting with '+' indicating device phone number (can be used only if device supports phone number property)","nullable":true},"LastLatitude":{"type":"number","description":"Last known position of the device","format":"double","nullable":true},"LastLongitude":{"type":"number","description":"Last known position of the device","format":"double","nullable":true},"LastMessageTime":{"type":"string","description":"A date and time of last MO Message (UTC)","format":"date-time","nullable":true},"LastLocationTime":{"type":"string","description":"A date and time of last MO Message with position (UTC)","format":"date-time","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional device properties","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true},"ETag":{"type":"string","description":"ETag representing record version","nullable":true},"Photo":{"type":"string","description":"Base64 encoded device photo. Included in GET request only when photo parameter is specified.","nullable":true},"CustomEmailAddress":{"type":"string","description":"Custom Email address. If supported for your account","nullable":true},"SecondaryDeviceId":{"type":"string","description":"Secondary Device Id for devices that send messages with multiple device identifiers.","nullable":true}},"additionalProperties":false},"ProvisioningStatus":{"enum":["Provisioned","NotProvisioned","Suspended"],"type":"string"},"OverdueState":{"enum":["NotOverdue","Warning","Overdue"],"type":"string"},"EmergencyState":{"enum":["None","Emergency","EmergencyCancel","NotSpecified"],"type":"string"}}}}
```

## PUT /V2/{tenantVarCode}/devices/{deviceId}

> Updates an existing device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Devices"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}":{"put":{"tags":["Devices"],"summary":"Updates an existing device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Device","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Device"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Device"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Device"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Device"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Device"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Device"}},"text/json":{"schema":{"$ref":"#/components/schemas/Device"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Device"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Device"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Device"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Device":{"required":["DeviceId","FriendlyName"],"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"DeviceId":{"minLength":1,"type":"string","description":"A string that uniquely identifies the device. It can contain only letters, digits, hyphen and can be up to 50 characters long. This is normally the IMEI number"},"DeviceType":{"type":"string","description":"A string enumeration that defines the device type. For list of avalibale device types check your tenant object","nullable":true},"FriendlyName":{"minLength":1,"type":"string","description":"A string used to more easily identify the device"},"Description":{"type":"string","description":"A text string used to describe the device","nullable":true},"Username":{"type":"string","description":"The username (email address) of the assigned owner of the device","nullable":true},"UserId":{"type":"string","description":"The userId of the assigned owner of the device","nullable":true},"DeviceStatus":{"type":"string","description":"The current status of the device. Valid values are: \"Active\" or \"Inactive\"","nullable":true},"ProvisioningStatus":{"$ref":"#/components/schemas/ProvisioningStatus"},"DateAdded":{"type":"string","description":"The date (UTC) that the device was registered on the platform","format":"date-time","nullable":true},"GroupId":{"type":"string","description":"Reference to Group or null when device is not member of any group","nullable":true},"CheckInScheduleEnabled":{"type":"boolean","description":"A boolean indicating if the schedule is checked or not","nullable":true},"CheckInScheduleOverdue":{"$ref":"#/components/schemas/OverdueState"},"EnableEmailDelivery":{"type":"boolean","description":"If set \"true\", the device can be emailed from any email client using the following address format \"imei@globalalerting.com\""},"EnableSmsReplies":{"type":"boolean","description":"If set \"true\", the sms messages from the device will include a reply link","nullable":true},"IsMonitored":{"type":"boolean","description":"A boolean indicating if the device is currently monitored"},"MonitoringIntervalMinutes":{"type":"integer","description":"A whole number that specifies number of minutes for device monitoring interval","format":"int32","nullable":true},"MonitoringBufferMinutes":{"type":"integer","description":"A whole number that specifies number of minutes buffer for device monitoring","format":"int32","nullable":true},"MonitoringOverdue":{"$ref":"#/components/schemas/OverdueState"},"EmergencyState":{"$ref":"#/components/schemas/EmergencyState"},"EmergencyStateAcknowledged":{"type":"boolean","description":"A flag indicating that the emergency state on the device has been acknowledged on the portal","nullable":true},"PhoneNumber":{"type":"string","description":"A string starting with '+' indicating device phone number (can be used only if device supports phone number property)","nullable":true},"LastLatitude":{"type":"number","description":"Last known position of the device","format":"double","nullable":true},"LastLongitude":{"type":"number","description":"Last known position of the device","format":"double","nullable":true},"LastMessageTime":{"type":"string","description":"A date and time of last MO Message (UTC)","format":"date-time","nullable":true},"LastLocationTime":{"type":"string","description":"A date and time of last MO Message with position (UTC)","format":"date-time","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional device properties","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true},"ETag":{"type":"string","description":"ETag representing record version","nullable":true},"Photo":{"type":"string","description":"Base64 encoded device photo. Included in GET request only when photo parameter is specified.","nullable":true},"CustomEmailAddress":{"type":"string","description":"Custom Email address. If supported for your account","nullable":true},"SecondaryDeviceId":{"type":"string","description":"Secondary Device Id for devices that send messages with multiple device identifiers.","nullable":true}},"additionalProperties":false},"ProvisioningStatus":{"enum":["Provisioned","NotProvisioned","Suspended"],"type":"string"},"OverdueState":{"enum":["NotOverdue","Warning","Overdue"],"type":"string"},"EmergencyState":{"enum":["None","Emergency","EmergencyCancel","NotSpecified"],"type":"string"}}}}
```

## DELETE /V2/{tenantVarCode}/devices/{deviceId}

> Deletes a specific device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Devices"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}":{"delete":{"tags":["Devices"],"summary":"Deletes a specific device","parameters":[{"name":"tenantVarCode","in":"path","description":"","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```

## PATCH /V2/{tenantVarCode}/devices/{deviceId}

> Updates an existing device with JsonPatch document

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Devices"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}":{"patch":{"tags":["Devices"],"summary":"Updates an existing device with JsonPatch document","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Device JsonPatch document","content":{"application/json-patch+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Operation"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Operation"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Operation"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Operation"}}},"application/*+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Operation"}}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Operation":{"type":"object","properties":{"value":{"nullable":true},"path":{"type":"string","nullable":true},"op":{"type":"string","nullable":true},"from":{"type":"string","nullable":true}},"additionalProperties":false}}}}
```


# Encryption Keys

## GET /V2/{tenantVarCode}/devices/{deviceId}/encryptionkeys

> Returns device encryption key

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Encryption Keys"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/encryptionkeys":{"get":{"tags":["Encryption Keys"],"summary":"Returns device encryption key","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}},"application/json;IEEE754Compatible=false":{"schema":{"type":"string"}},"application/json;IEEE754Compatible=true":{"schema":{"type":"string"}},"application/xml":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}},"application/octet-stream":{"schema":{"type":"string"}},"text/json":{"schema":{"type":"string"}},"text/xml":{"schema":{"type":"string"}},"text/csv":{"schema":{"type":"string"}}}}}}}}}
```

## POST /V2/{tenantVarCode}/devices/{deviceId}/encryptionkeys

> Regenerates device encryption key

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Encryption Keys"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/encryptionkeys":{"post":{"tags":["Encryption Keys"],"summary":"Regenerates device encryption key","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}},"application/json;IEEE754Compatible=false":{"schema":{"type":"string"}},"application/json;IEEE754Compatible=true":{"schema":{"type":"string"}},"application/xml":{"schema":{"type":"string"}},"text/plain":{"schema":{"type":"string"}},"application/octet-stream":{"schema":{"type":"string"}},"text/json":{"schema":{"type":"string"}},"text/xml":{"schema":{"type":"string"}},"text/csv":{"schema":{"type":"string"}}}}}}}}}
```

## DELETE /V2/{tenantVarCode}/devices/{deviceId}/encryptionkeys

> Removes device encryption key

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Encryption Keys"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/encryptionkeys":{"delete":{"tags":["Encryption Keys"],"summary":"Removes device encryption key","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Event Notifications For Device

## GET /V2/{tenantVarCode}/devices/{deviceId}/eventnotifications

> Returns event notifications for the device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/eventnotifications":{"get":{"tags":["Event Notifications for Device"],"summary":"Returns event notifications for the device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}}}}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## POST /V2/{tenantVarCode}/devices/{deviceId}/eventnotifications

> Creates an event notification for the device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/eventnotifications":{"post":{"tags":["Event Notifications for Device"],"summary":"Creates an event notification for the device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Event notification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/devices/{deviceId}/eventnotifications/{notificationId}

> Returns event notification for the device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/eventnotifications/{notificationId}":{"get":{"tags":["Event Notifications for Device"],"summary":"Returns event notification for the device","operationId":"GetDeviceEventNotification","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device ID","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## PUT /V2/{tenantVarCode}/devices/{deviceId}/eventnotifications/{notificationId}

> Updates event notification for the device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/eventnotifications/{notificationId}":{"put":{"tags":["Event Notifications for Device"],"summary":"Updates event notification for the device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device ID","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification ID","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Event notification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## DELETE /V2/{tenantVarCode}/devices/{deviceId}/eventnotifications/{notificationId}

> Deletes event notification for the device

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Device"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/eventnotifications/{notificationId}":{"delete":{"tags":["Event Notifications for Device"],"summary":"Deletes event notification for the device","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device ID","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification ID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Event Notifications For Group

## GET /V2/{tenantVarCode}/groups/{groupId}/eventnotifications

> Returns event notifications for the group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Group"}],"paths":{"/V2/{tenantVarCode}/groups/{groupId}/eventnotifications":{"get":{"tags":["Event Notifications for Group"],"summary":"Returns event notifications for the group","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Group Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}}}}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## POST /V2/{tenantVarCode}/groups/{groupId}/eventnotifications

> Creates an event notification for the group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Group"}],"paths":{"/V2/{tenantVarCode}/groups/{groupId}/eventnotifications":{"post":{"tags":["Event Notifications for Group"],"summary":"Creates an event notification for the group","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Group Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Event Notification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/groups/{groupId}/eventnotifications/{notificationId}

> Returns event notification for the group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Group"}],"paths":{"/V2/{tenantVarCode}/groups/{groupId}/eventnotifications/{notificationId}":{"get":{"tags":["Event Notifications for Group"],"summary":"Returns event notification for the group","operationId":"GetGroupEventNotification","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Group Id","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## PUT /V2/{tenantVarCode}/groups/{groupId}/eventnotifications/{notificationId}

> Updates event notification for the group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Group"}],"paths":{"/V2/{tenantVarCode}/groups/{groupId}/eventnotifications/{notificationId}":{"put":{"tags":["Event Notifications for Group"],"summary":"Updates event notification for the group","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Group Id","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Event Notification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## DELETE /V2/{tenantVarCode}/groups/{groupId}/eventnotifications/{notificationId}

> Deletes event notification for the group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Group"}],"paths":{"/V2/{tenantVarCode}/groups/{groupId}/eventnotifications/{notificationId}":{"delete":{"tags":["Event Notifications for Group"],"summary":"Deletes event notification for the group","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Group Id","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Event Notifications For Tenant

## GET /V2/{tenantVarCode}/eventnotifications

> Returns event notifications for the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Tenant"}],"paths":{"/V2/{tenantVarCode}/eventnotifications":{"get":{"tags":["Event Notifications for Tenant"],"summary":"Returns event notifications for the tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/EventNotification"}}}}}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## POST /V2/{tenantVarCode}/eventnotifications

> Creates an event notification for the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Tenant"}],"paths":{"/V2/{tenantVarCode}/eventnotifications":{"post":{"tags":["Event Notifications for Tenant"],"summary":"Creates an event notification for the tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Event Notification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/eventnotifications/{notificationId}

> Returns event notification for the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Tenant"}],"paths":{"/V2/{tenantVarCode}/eventnotifications/{notificationId}":{"get":{"tags":["Event Notifications for Tenant"],"summary":"Returns event notification for the tenant","operationId":"GetTenantEventNotification","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## PUT /V2/{tenantVarCode}/eventnotifications/{notificationId}

> Updates event notification for the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Tenant"}],"paths":{"/V2/{tenantVarCode}/eventnotifications/{notificationId}":{"put":{"tags":["Event Notifications for Tenant"],"summary":"Updates event notification for the tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Event Notification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/plain":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"text/xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/EventNotification"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"EventNotification":{"required":["EventsExpression","NotificationName","Recipients"],"type":"object","properties":{"NotificationId":{"type":"string","description":"The unique identifier of the event notification","nullable":true},"NotificationName":{"minLength":1,"type":"string","description":"Free text with notification name"},"NotificationText":{"type":"string","description":"Optional free text that is used in messages sent to recipients","nullable":true},"NotificationDisabled":{"type":"boolean","description":"Used for disabling of existing notifications"},"Recipients":{"type":"array","items":{"$ref":"#/components/schemas/Recipient"},"description":"List of recipients"},"EventsExpression":{"minLength":1,"type":"string","description":"Logical expression which specifies when the notifications should be sent (for detailed info see Others tab)"},"TimeZoneId":{"type":"string","description":"Time zone that is used in case any time events are used in expression (for list of valid time zones see Others tab)","nullable":true},"RaiseAlert":{"type":"boolean","description":"Whether an alert should be raised in addition to notifying recipients"},"Severity":{"type":"string","description":"Notification severity (use \"0\" for None, \"1\" for Warning, \"2\" for High)","nullable":true},"DeviceType":{"type":"string","description":"When device type is set the notification applies to all devices of the device type.\r\nThis field is valid for tenant notification only","nullable":true},"Devices":{"type":"string","description":"Comma delimited list of device IDs the notification applies to or null for all devices.\r\nThis field is valid for tenant notification only","nullable":true}},"additionalProperties":false},"Recipient":{"required":["Type"],"type":"object","properties":{"Type":{"$ref":"#/components/schemas/RecipientType"},"TenantCode":{"type":"string","description":"Tenant Var Code (set for tenant lists and tenant contacts only)","nullable":true},"ContactId":{"type":"string","description":"Address book contact ID (set for device contacts and tenant contacts only)","nullable":true},"ContactDetailId":{"type":"string","description":"Address book contact detail ID (set for device contacts and tenant contacts only)","nullable":true},"ListId":{"type":"string","description":"Address book list id (set for device lists and tenant lists only)","nullable":true},"MessagingAddress":{"type":"string","description":"Messaging address, for example: \"mail:peter.norton@symantec.com\", \"sms:+3450546464564\" (set for messaging address recipient type only)","nullable":true},"Radius":{"type":"string","description":"Radius in kilometers (set for nearest devices recipient type only)","nullable":true},"ReportingFrequency":{"type":"string","description":"Reporting frequency in minutes (set for change reporting frequency type only)","nullable":true},"Interval":{"type":"string","description":"Check in interval in minutes (set for check in request type only)","nullable":true},"GroupId":{"type":"string","description":"Group ID (set for change group type only)","nullable":true}},"additionalProperties":false},"RecipientType":{"enum":["DeviceList","TenantList","DeviceContact","TenantContact","MessagingAddress","NearestDevices","DeviceUserEmail","DeviceUserSms","DeviceUserManagerEmail","DeviceUserManagerSms","DeviceUserEmergencyContacts","OtherDevicesInGroup","SendCheckInRequest","SendLocationRequest","ChangeReportingFrequency","SendTextMessage","StartMonitoring","StopMonitoring","ForceStopMonitoring","DeviceUserCall","DeviceUserManagerCall","DeviceCall","StartCheckInSchedule","StopCheckInSchedule","ChangeGroup","DeviceUserEmergencyContactsCall","DeviceUserEmergencyContactsEmail"],"type":"string"}}}}
```

## DELETE /V2/{tenantVarCode}/eventnotifications/{notificationId}

> Deletes event notification for the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Event Notifications for Tenant"}],"paths":{"/V2/{tenantVarCode}/eventnotifications/{notificationId}":{"delete":{"tags":["Event Notifications for Tenant"],"summary":"Deletes event notification for the tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"notificationId","in":"path","description":"Notification Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# External Links For Tenant

## GET /V2/{tenantVarCode}/tenantexternallinks

> Returns a list of External Links for the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"External Links For Tenant"}],"paths":{"/V2/{tenantVarCode}/tenantexternallinks":{"get":{"tags":["External Links For Tenant"],"summary":"Returns a list of External Links for the tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExternalLink"}}}}}}}}},"components":{"schemas":{"ExternalLink":{"required":["Link","Name","Order"],"type":"object","properties":{"LinkId":{"type":"string","description":"Unique string that identifies the external link","nullable":true},"Name":{"minLength":1,"type":"string","description":"Name for link"},"Link":{"minLength":1,"type":"string","description":"URL for link"},"Order":{"type":"integer","description":"Item order","format":"int32"}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/tenantexternallinks

> Creates a new Tenant External Link

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"External Links For Tenant"}],"paths":{"/V2/{tenantVarCode}/tenantexternallinks":{"post":{"tags":["External Links For Tenant"],"summary":"Creates a new Tenant External Link","operationId":"TenantExternalLink","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"ExternalLink","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"text/json":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"text/xml":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/ExternalLink"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"ExternalLink":{"required":["Link","Name","Order"],"type":"object","properties":{"LinkId":{"type":"string","description":"Unique string that identifies the external link","nullable":true},"Name":{"minLength":1,"type":"string","description":"Name for link"},"Link":{"minLength":1,"type":"string","description":"URL for link"},"Order":{"type":"integer","description":"Item order","format":"int32"}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/tenantexternallinks/{externalLinkId}

> Returns a specific Tenant External Link

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"External Links For Tenant"}],"paths":{"/V2/{tenantVarCode}/tenantexternallinks/{externalLinkId}":{"get":{"tags":["External Links For Tenant"],"summary":"Returns a specific Tenant External Link","operationId":"GetTenantExternalLink","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"externalLinkId","in":"path","description":"External Link Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"text/json":{"schema":{"$ref":"#/components/schemas/ExternalLink"}},"text/xml":{"schema":{"$ref":"#/components/schemas/ExternalLink"}}}}}}}},"components":{"schemas":{"ExternalLink":{"required":["Link","Name","Order"],"type":"object","properties":{"LinkId":{"type":"string","description":"Unique string that identifies the external link","nullable":true},"Name":{"minLength":1,"type":"string","description":"Name for link"},"Link":{"minLength":1,"type":"string","description":"URL for link"},"Order":{"type":"integer","description":"Item order","format":"int32"}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/tenantexternallinks/{externalLinkId}

> Deletes a specific Tenant External Link

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"External Links For Tenant"}],"paths":{"/V2/{tenantVarCode}/tenantexternallinks/{externalLinkId}":{"delete":{"tags":["External Links For Tenant"],"summary":"Deletes a specific Tenant External Link","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"externalLinkId","in":"path","description":"External Link Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Facilities

## GET /V2/{tenantVarCode}/facilities

> Returns facilities for the tenant.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Facilities"}],"paths":{"/V2/{tenantVarCode}/facilities":{"get":{"tags":["Facilities"],"summary":"Returns facilities for the tenant.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"subtenants","in":"query","description":"If true, result includes users from subtenants","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Facility"}}}}}}}}},"components":{"schemas":{"Facility":{"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"FacilityId":{"type":"string","description":"A unique identifier of the facility","nullable":true},"FriendlyName":{"type":"string","description":"Facility friendly name","nullable":true},"Description":{"type":"string","description":"Facility description","nullable":true},"KeyContacts":{"type":"array","items":{"type":"string"},"description":"Array of email addresses that have to be users from the same tenant","nullable":true},"Latitude":{"type":"number","description":"Facility latitude","format":"double","nullable":true},"Longitude":{"type":"number","description":"Facility longitude","format":"double","nullable":true},"Address":{"type":"string","description":"Facility address","nullable":true},"City":{"type":"string","description":"Facility city","nullable":true},"State":{"type":"string","description":"Faciliti state","nullable":true},"Country":{"type":"string","description":"Facility country","nullable":true},"PostalCode":{"type":"string","description":"Facility postal code","nullable":true},"PrimaryPhone":{"type":"string","description":"Primary phone number in international format (starting with '+' and country code)","nullable":true},"SecondaryPhone":{"type":"string","description":"Secondary phone number in international format (starting with '+' and country code)","nullable":true},"MapIcon":{"type":"string","description":"Map icon, one of the following values: fa-building, fa-building-wheat, fa-building-user, fa-building-shield, fa-building-lock, \r\nfa-building-flag, fa-building-columns, fa-car-building, fa-house-building, fa-house, fa-city, fa-shop, fa-store,\r\nfa-school, fa-hotel, fa-place-of-worship, fa-hospital, fa-warehouse, fa-industry, fa-warehouse-full, fa-tree-city, fa-apartment,\r\nfa-fort, fa-container-storage, fa-tower-observation, fa-tent, fa-oil-well, fa-garage, fa-farm, fa-castle, fa-cabin, fa-user, fa-location-arrow","nullable":true},"MarkerColor":{"type":"string","description":"Marker color, one of the following values: blue, purple, dark-purple, dark-blue, dark-green,\r\nlight-orange, yellow, light-green, light-blue, pink, gray, dark-gray","nullable":true}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/facilities

> Creates a new facility.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Facilities"}],"paths":{"/V2/{tenantVarCode}/facilities":{"post":{"tags":["Facilities"],"summary":"Creates a new facility.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Facility","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/json":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Facility"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Facility":{"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"FacilityId":{"type":"string","description":"A unique identifier of the facility","nullable":true},"FriendlyName":{"type":"string","description":"Facility friendly name","nullable":true},"Description":{"type":"string","description":"Facility description","nullable":true},"KeyContacts":{"type":"array","items":{"type":"string"},"description":"Array of email addresses that have to be users from the same tenant","nullable":true},"Latitude":{"type":"number","description":"Facility latitude","format":"double","nullable":true},"Longitude":{"type":"number","description":"Facility longitude","format":"double","nullable":true},"Address":{"type":"string","description":"Facility address","nullable":true},"City":{"type":"string","description":"Facility city","nullable":true},"State":{"type":"string","description":"Faciliti state","nullable":true},"Country":{"type":"string","description":"Facility country","nullable":true},"PostalCode":{"type":"string","description":"Facility postal code","nullable":true},"PrimaryPhone":{"type":"string","description":"Primary phone number in international format (starting with '+' and country code)","nullable":true},"SecondaryPhone":{"type":"string","description":"Secondary phone number in international format (starting with '+' and country code)","nullable":true},"MapIcon":{"type":"string","description":"Map icon, one of the following values: fa-building, fa-building-wheat, fa-building-user, fa-building-shield, fa-building-lock, \r\nfa-building-flag, fa-building-columns, fa-car-building, fa-house-building, fa-house, fa-city, fa-shop, fa-store,\r\nfa-school, fa-hotel, fa-place-of-worship, fa-hospital, fa-warehouse, fa-industry, fa-warehouse-full, fa-tree-city, fa-apartment,\r\nfa-fort, fa-container-storage, fa-tower-observation, fa-tent, fa-oil-well, fa-garage, fa-farm, fa-castle, fa-cabin, fa-user, fa-location-arrow","nullable":true},"MarkerColor":{"type":"string","description":"Marker color, one of the following values: blue, purple, dark-purple, dark-blue, dark-green,\r\nlight-orange, yellow, light-green, light-blue, pink, gray, dark-gray","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/facilities/{facilityId}

> Returns single facility.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Facilities"}],"paths":{"/V2/{tenantVarCode}/facilities/{facilityId}":{"get":{"tags":["Facilities"],"summary":"Returns single facility.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"facilityId","in":"path","description":"Facility Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/json":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Facility"}}}}}}}},"components":{"schemas":{"Facility":{"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"FacilityId":{"type":"string","description":"A unique identifier of the facility","nullable":true},"FriendlyName":{"type":"string","description":"Facility friendly name","nullable":true},"Description":{"type":"string","description":"Facility description","nullable":true},"KeyContacts":{"type":"array","items":{"type":"string"},"description":"Array of email addresses that have to be users from the same tenant","nullable":true},"Latitude":{"type":"number","description":"Facility latitude","format":"double","nullable":true},"Longitude":{"type":"number","description":"Facility longitude","format":"double","nullable":true},"Address":{"type":"string","description":"Facility address","nullable":true},"City":{"type":"string","description":"Facility city","nullable":true},"State":{"type":"string","description":"Faciliti state","nullable":true},"Country":{"type":"string","description":"Facility country","nullable":true},"PostalCode":{"type":"string","description":"Facility postal code","nullable":true},"PrimaryPhone":{"type":"string","description":"Primary phone number in international format (starting with '+' and country code)","nullable":true},"SecondaryPhone":{"type":"string","description":"Secondary phone number in international format (starting with '+' and country code)","nullable":true},"MapIcon":{"type":"string","description":"Map icon, one of the following values: fa-building, fa-building-wheat, fa-building-user, fa-building-shield, fa-building-lock, \r\nfa-building-flag, fa-building-columns, fa-car-building, fa-house-building, fa-house, fa-city, fa-shop, fa-store,\r\nfa-school, fa-hotel, fa-place-of-worship, fa-hospital, fa-warehouse, fa-industry, fa-warehouse-full, fa-tree-city, fa-apartment,\r\nfa-fort, fa-container-storage, fa-tower-observation, fa-tent, fa-oil-well, fa-garage, fa-farm, fa-castle, fa-cabin, fa-user, fa-location-arrow","nullable":true},"MarkerColor":{"type":"string","description":"Marker color, one of the following values: blue, purple, dark-purple, dark-blue, dark-green,\r\nlight-orange, yellow, light-green, light-blue, pink, gray, dark-gray","nullable":true}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/facilities/{facilityId}

> Updates facility.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Facilities"}],"paths":{"/V2/{tenantVarCode}/facilities/{facilityId}":{"put":{"tags":["Facilities"],"summary":"Updates facility.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"facilityId","in":"path","description":"Facility Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Facility","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/json":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Facility"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Facility"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Facility"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Facility":{"type":"object","properties":{"TenantCode":{"type":"string","description":"Tenant Var Code","nullable":true},"FacilityId":{"type":"string","description":"A unique identifier of the facility","nullable":true},"FriendlyName":{"type":"string","description":"Facility friendly name","nullable":true},"Description":{"type":"string","description":"Facility description","nullable":true},"KeyContacts":{"type":"array","items":{"type":"string"},"description":"Array of email addresses that have to be users from the same tenant","nullable":true},"Latitude":{"type":"number","description":"Facility latitude","format":"double","nullable":true},"Longitude":{"type":"number","description":"Facility longitude","format":"double","nullable":true},"Address":{"type":"string","description":"Facility address","nullable":true},"City":{"type":"string","description":"Facility city","nullable":true},"State":{"type":"string","description":"Faciliti state","nullable":true},"Country":{"type":"string","description":"Facility country","nullable":true},"PostalCode":{"type":"string","description":"Facility postal code","nullable":true},"PrimaryPhone":{"type":"string","description":"Primary phone number in international format (starting with '+' and country code)","nullable":true},"SecondaryPhone":{"type":"string","description":"Secondary phone number in international format (starting with '+' and country code)","nullable":true},"MapIcon":{"type":"string","description":"Map icon, one of the following values: fa-building, fa-building-wheat, fa-building-user, fa-building-shield, fa-building-lock, \r\nfa-building-flag, fa-building-columns, fa-car-building, fa-house-building, fa-house, fa-city, fa-shop, fa-store,\r\nfa-school, fa-hotel, fa-place-of-worship, fa-hospital, fa-warehouse, fa-industry, fa-warehouse-full, fa-tree-city, fa-apartment,\r\nfa-fort, fa-container-storage, fa-tower-observation, fa-tent, fa-oil-well, fa-garage, fa-farm, fa-castle, fa-cabin, fa-user, fa-location-arrow","nullable":true},"MarkerColor":{"type":"string","description":"Marker color, one of the following values: blue, purple, dark-purple, dark-blue, dark-green,\r\nlight-orange, yellow, light-green, light-blue, pink, gray, dark-gray","nullable":true}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/facilities/{facilityId}

> Deletes a facility.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Facilities"}],"paths":{"/V2/{tenantVarCode}/facilities/{facilityId}":{"delete":{"tags":["Facilities"],"summary":"Deletes a facility.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"facilityId","in":"path","description":"Facility Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Geofences

## GET /V2/{tenantVarCode}/geofences

> Returns all geofences assigned to the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Geofences"}],"paths":{"/V2/{tenantVarCode}/geofences":{"get":{"tags":["Geofences"],"summary":"Returns all geofences assigned to the tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Geofence"}}}}}}}}},"components":{"schemas":{"Geofence":{"type":"object","properties":{"GeofenceId":{"type":"string","description":"A string that uniquely identifies the geofence","nullable":true},"Name":{"type":"string","description":"A string with geofence name","nullable":true},"FenceWidth":{"type":"integer","description":"A whole number containing fence width in meters. Required for Polyline geofence","format":"int32","nullable":true},"MinZoom":{"type":"integer","description":"Minimum zoom level when geofence is shown","format":"int32"},"MaxZoom":{"type":"integer","description":"Maximum zoom level when geofence is shown","format":"int32"},"CircleRadius":{"type":"integer","description":"A floating point value for radius of circle geofence in meters. Required for Circular geofence","format":"int32","nullable":true},"CircleCentre":{"$ref":"#/components/schemas/LatLon"},"PolygonPositions":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/LatLon"}},"description":"Array of LatLon objects specifying polygon points where LatLon contains property Lat for latitude (between -90 and +90) and property Lon for longitude (between -180 and +180). Required for Polygon geofence","nullable":true},"PolylinePositions":{"type":"array","items":{"$ref":"#/components/schemas/LatLon"},"description":"Array of LatLon objects specifying polyline points where LatLon contains property Lat for latitude (between -90 and +90) and property Lon for longitude (between -180 and +180). Required for Polyline geofence","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional geofence properties","nullable":true},"GeofenceType":{"type":"string","description":"Type of geofence object. Valid values are: \"circle\", \"polygon\", \"polyline\"","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true},"AppliesToSubtenants":{"type":"boolean","description":"Makes geofence applicable to sub-tenants"}},"additionalProperties":false},"LatLon":{"type":"object","properties":{"Lat":{"type":"number","format":"double"},"Lon":{"type":"number","format":"double"}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/geofences

> Creates tenant geofence

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Geofences"}],"paths":{"/V2/{tenantVarCode}/geofences":{"post":{"tags":["Geofences"],"summary":"Creates tenant geofence","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Geofence","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Geofence"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Geofence":{"type":"object","properties":{"GeofenceId":{"type":"string","description":"A string that uniquely identifies the geofence","nullable":true},"Name":{"type":"string","description":"A string with geofence name","nullable":true},"FenceWidth":{"type":"integer","description":"A whole number containing fence width in meters. Required for Polyline geofence","format":"int32","nullable":true},"MinZoom":{"type":"integer","description":"Minimum zoom level when geofence is shown","format":"int32"},"MaxZoom":{"type":"integer","description":"Maximum zoom level when geofence is shown","format":"int32"},"CircleRadius":{"type":"integer","description":"A floating point value for radius of circle geofence in meters. Required for Circular geofence","format":"int32","nullable":true},"CircleCentre":{"$ref":"#/components/schemas/LatLon"},"PolygonPositions":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/LatLon"}},"description":"Array of LatLon objects specifying polygon points where LatLon contains property Lat for latitude (between -90 and +90) and property Lon for longitude (between -180 and +180). Required for Polygon geofence","nullable":true},"PolylinePositions":{"type":"array","items":{"$ref":"#/components/schemas/LatLon"},"description":"Array of LatLon objects specifying polyline points where LatLon contains property Lat for latitude (between -90 and +90) and property Lon for longitude (between -180 and +180). Required for Polyline geofence","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional geofence properties","nullable":true},"GeofenceType":{"type":"string","description":"Type of geofence object. Valid values are: \"circle\", \"polygon\", \"polyline\"","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true},"AppliesToSubtenants":{"type":"boolean","description":"Makes geofence applicable to sub-tenants"}},"additionalProperties":false},"LatLon":{"type":"object","properties":{"Lat":{"type":"number","format":"double"},"Lon":{"type":"number","format":"double"}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/geofences/{geofenceId}

> Returns a specific geofence assigned to the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Geofences"}],"paths":{"/V2/{tenantVarCode}/geofences/{geofenceId}":{"get":{"tags":["Geofences"],"summary":"Returns a specific geofence assigned to the tenant","operationId":"GetGeofence","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"geofenceId","in":"path","description":"Geofence Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Geofence"}}}}}}}},"components":{"schemas":{"Geofence":{"type":"object","properties":{"GeofenceId":{"type":"string","description":"A string that uniquely identifies the geofence","nullable":true},"Name":{"type":"string","description":"A string with geofence name","nullable":true},"FenceWidth":{"type":"integer","description":"A whole number containing fence width in meters. Required for Polyline geofence","format":"int32","nullable":true},"MinZoom":{"type":"integer","description":"Minimum zoom level when geofence is shown","format":"int32"},"MaxZoom":{"type":"integer","description":"Maximum zoom level when geofence is shown","format":"int32"},"CircleRadius":{"type":"integer","description":"A floating point value for radius of circle geofence in meters. Required for Circular geofence","format":"int32","nullable":true},"CircleCentre":{"$ref":"#/components/schemas/LatLon"},"PolygonPositions":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/LatLon"}},"description":"Array of LatLon objects specifying polygon points where LatLon contains property Lat for latitude (between -90 and +90) and property Lon for longitude (between -180 and +180). Required for Polygon geofence","nullable":true},"PolylinePositions":{"type":"array","items":{"$ref":"#/components/schemas/LatLon"},"description":"Array of LatLon objects specifying polyline points where LatLon contains property Lat for latitude (between -90 and +90) and property Lon for longitude (between -180 and +180). Required for Polyline geofence","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional geofence properties","nullable":true},"GeofenceType":{"type":"string","description":"Type of geofence object. Valid values are: \"circle\", \"polygon\", \"polyline\"","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true},"AppliesToSubtenants":{"type":"boolean","description":"Makes geofence applicable to sub-tenants"}},"additionalProperties":false},"LatLon":{"type":"object","properties":{"Lat":{"type":"number","format":"double"},"Lon":{"type":"number","format":"double"}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/geofences/{geofenceId}

> Updates tenant geofence

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Geofences"}],"paths":{"/V2/{tenantVarCode}/geofences/{geofenceId}":{"put":{"tags":["Geofences"],"summary":"Updates tenant geofence","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"geofenceId","in":"path","description":"Geofence Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Geofence","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Geofence"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Geofence"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Geofence"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Geofence":{"type":"object","properties":{"GeofenceId":{"type":"string","description":"A string that uniquely identifies the geofence","nullable":true},"Name":{"type":"string","description":"A string with geofence name","nullable":true},"FenceWidth":{"type":"integer","description":"A whole number containing fence width in meters. Required for Polyline geofence","format":"int32","nullable":true},"MinZoom":{"type":"integer","description":"Minimum zoom level when geofence is shown","format":"int32"},"MaxZoom":{"type":"integer","description":"Maximum zoom level when geofence is shown","format":"int32"},"CircleRadius":{"type":"integer","description":"A floating point value for radius of circle geofence in meters. Required for Circular geofence","format":"int32","nullable":true},"CircleCentre":{"$ref":"#/components/schemas/LatLon"},"PolygonPositions":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/LatLon"}},"description":"Array of LatLon objects specifying polygon points where LatLon contains property Lat for latitude (between -90 and +90) and property Lon for longitude (between -180 and +180). Required for Polygon geofence","nullable":true},"PolylinePositions":{"type":"array","items":{"$ref":"#/components/schemas/LatLon"},"description":"Array of LatLon objects specifying polyline points where LatLon contains property Lat for latitude (between -90 and +90) and property Lon for longitude (between -180 and +180). Required for Polyline geofence","nullable":true},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional geofence properties","nullable":true},"GeofenceType":{"type":"string","description":"Type of geofence object. Valid values are: \"circle\", \"polygon\", \"polyline\"","nullable":true},"Timestamp":{"type":"string","description":"Timestamp (UTC) indicating version of record being returned","format":"date-time","nullable":true},"AppliesToSubtenants":{"type":"boolean","description":"Makes geofence applicable to sub-tenants"}},"additionalProperties":false},"LatLon":{"type":"object","properties":{"Lat":{"type":"number","format":"double"},"Lon":{"type":"number","format":"double"}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/geofences/{geofenceId}

> Deletes tenant geofence

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Geofences"}],"paths":{"/V2/{tenantVarCode}/geofences/{geofenceId}":{"delete":{"tags":["Geofences"],"summary":"Deletes tenant geofence","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant code","required":true,"schema":{"type":"string"}},{"name":"geofenceId","in":"path","description":"Geofence Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Groups

## GET /V2/{tenantVarCode}/groups

> Returns groups for the tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Groups"}],"paths":{"/V2/{tenantVarCode}/groups":{"get":{"tags":["Groups"],"summary":"Returns groups for the tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}}}}}}}},"components":{"schemas":{"Group":{"required":["GroupName"],"type":"object","properties":{"GroupId":{"type":"string","description":"A unique identifier of the group","nullable":true},"GroupName":{"minLength":1,"type":"string","description":"A string with name of the group"},"Tags":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with tags","nullable":true}},"additionalProperties":false,"description":"Groups are used to apply event notifications, send messages or assign check-in schedules to multiple devices using a single action."}}}}
```

## POST /V2/{tenantVarCode}/groups

> Creates a new group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Groups"}],"paths":{"/V2/{tenantVarCode}/groups":{"post":{"tags":["Groups"],"summary":"Creates a new group","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Group"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Group"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Group"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Group"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/json":{"schema":{"$ref":"#/components/schemas/Group"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Group"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Group"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Group":{"required":["GroupName"],"type":"object","properties":{"GroupId":{"type":"string","description":"A unique identifier of the group","nullable":true},"GroupName":{"minLength":1,"type":"string","description":"A string with name of the group"},"Tags":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with tags","nullable":true}},"additionalProperties":false,"description":"Groups are used to apply event notifications, send messages or assign check-in schedules to multiple devices using a single action."}}}}
```

## GET /V2/{tenantVarCode}/groups/{groupId}

> Returns group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Groups"}],"paths":{"/V2/{tenantVarCode}/groups/{groupId}":{"get":{"tags":["Groups"],"summary":"Returns group","operationId":"GetGroup","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Group Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Group"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Group"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Group"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Group"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Group"}},"text/json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Group"}}}}}}}},"components":{"schemas":{"Group":{"required":["GroupName"],"type":"object","properties":{"GroupId":{"type":"string","description":"A unique identifier of the group","nullable":true},"GroupName":{"minLength":1,"type":"string","description":"A string with name of the group"},"Tags":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with tags","nullable":true}},"additionalProperties":false,"description":"Groups are used to apply event notifications, send messages or assign check-in schedules to multiple devices using a single action."}}}}
```

## PUT /V2/{tenantVarCode}/groups/{groupId}

> Updates group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Groups"}],"paths":{"/V2/{tenantVarCode}/groups/{groupId}":{"put":{"tags":["Groups"],"summary":"Updates group","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Group Id","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Group"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Group"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Group"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Group"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/json":{"schema":{"$ref":"#/components/schemas/Group"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Group"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Group"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Group":{"required":["GroupName"],"type":"object","properties":{"GroupId":{"type":"string","description":"A unique identifier of the group","nullable":true},"GroupName":{"minLength":1,"type":"string","description":"A string with name of the group"},"Tags":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with tags","nullable":true}},"additionalProperties":false,"description":"Groups are used to apply event notifications, send messages or assign check-in schedules to multiple devices using a single action."}}}}
```

## DELETE /V2/{tenantVarCode}/groups/{groupId}

> Deletes group

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Groups"}],"paths":{"/V2/{tenantVarCode}/groups/{groupId}":{"delete":{"tags":["Groups"],"summary":"Deletes group","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"groupId","in":"path","description":"Group Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Itineraries

## GET /V2/{tenantVarCode}/itineraries

> Returns itineraries for specified tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries"}],"paths":{"/V2/{tenantVarCode}/itineraries":{"get":{"tags":["Itineraries"],"summary":"Returns itineraries for specified tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"startDate","in":"query","description":"Start date itinerary filter","schema":{"type":"string","format":"date-time"}},{"name":"endDate","in":"query","description":"End date itinerary filter","schema":{"type":"string","format":"date-time"}},{"name":"approvalState","in":"query","description":"When used it filters result by approval state: NoDecision=0, Approved=1, Declined=2","schema":{"type":"integer","format":"int32","default":-1}},{"name":"subtenants","in":"query","description":"When 'subtenants=true' the list contains itineraries for the tenant and all subtenants","schema":{"type":"boolean","default":false}},{"name":"byTravelerOnly","in":"query","description":"When 'byTravelerOnly=true' the list contains only itineraries for the current user","schema":{"type":"boolean","default":false}},{"name":"pnrNumber","in":"query","description":"When used it returns only itineraries with specified PNR number ignoring all other parameters.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}}}}}}}},"components":{"schemas":{"Itinerary":{"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the itinerary","format":"int32"},"Start":{"type":"string","description":"Itinerary start date","format":"date-time"},"End":{"type":"string","description":"Itinerary end date","format":"date-time"},"StartUserTimeZone":{"type":"string","description":"Itinerary start date converted to user time zone","format":"date-time"},"EndUserTimeZone":{"type":"string","description":"Itinerary end date converted to user time zone","format":"date-time"},"UserTimeZoneId":{"type":"string","description":"User time zone id","nullable":true},"Summary":{"type":"string","description":"Summary text","nullable":true},"ApprovalState":{"$ref":"#/components/schemas/ApprovalState"},"OverallRisk":{"type":"integer","description":"Calculated overall risk","format":"int32"},"ExternalId":{"type":"string","description":"External system Id","nullable":true},"ExternalStatus":{"type":"string","description":"External system status","nullable":true},"PnrNumber":{"type":"string","description":"PNR Number - Passenger name record of a reservation system","nullable":true},"Travelers":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"},"description":"Travelers","nullable":true},"Hotels":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"},"description":"Hotels","nullable":true},"Flights":{"type":"array","items":{"$ref":"#/components/schemas/Flight"},"description":"Flights","nullable":true},"Journeys":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"},"description":"Journeys","nullable":true},"Regions":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"},"description":"GAP Insights intelligence regions","nullable":true},"Notes":{"type":"string","description":"Free-text notes","nullable":true}},"additionalProperties":false},"ApprovalState":{"enum":["NoDecision","Approved","Declined","Canceled"],"type":"string"},"Traveler":{"required":["EmailAddress","Firstname","Lastname","PhoneNumber"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the traveler","format":"int32"},"EmailAddress":{"minLength":1,"type":"string","description":"Email address"},"Firstname":{"minLength":1,"type":"string","description":"First name"},"Lastname":{"minLength":1,"type":"string","description":"Last name"},"DateOfBirth":{"type":"string","description":"Date of birth","format":"date-time","nullable":true},"PhoneNumber":{"minLength":1,"type":"string","description":"Phone number"},"Citizenship":{"type":"string","description":"Read only Gap user citizenship","nullable":true},"Address":{"type":"string","description":"Read only Gap user address","nullable":true},"CityStatePostalCode":{"type":"string","description":"Read only Gap user city, state, postal code","nullable":true},"Country":{"type":"string","description":"Read only Gap user country","nullable":true},"PhoneNumbersAll":{"type":"string","description":"Read only Gap user phone numbers","nullable":true},"EmergencyContact1":{"type":"string","description":"Read only Gap user first emergency contact","nullable":true},"EmergencyContact2":{"type":"string","description":"Read only Gap user second emergency contact","nullable":true}},"additionalProperties":false},"Hotel":{"required":["Address","Latitude","Longitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"Name":{"type":"string","description":"Hotel name","nullable":true},"Address":{"minLength":1,"type":"string","description":"Hotel address"},"Latitude":{"type":"number","description":"Latitude","format":"double"},"Longitude":{"type":"number","description":"Longitude","format":"double"},"CountryName":{"type":"string","description":"Country name","nullable":true},"CountryCode":{"type":"string","description":"Two letter country code","nullable":true},"TimeZoneId":{"type":"string","description":"Time zone id","nullable":true},"CheckInTimeLocal":{"type":"string","description":"Check-in local time (required if check-in time UTC not specified)","format":"date-time","nullable":true},"CheckInTime":{"type":"string","description":"Check-in time UTC (required if check-in local time not specified)","format":"date-time","nullable":true},"CheckOutTimeLocal":{"type":"string","description":"Check-out local time (required if check-out time UTC not specified)","format":"date-time","nullable":true},"CheckOutTime":{"type":"string","description":"Check-out time UTC (required if check-out local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"Flight":{"required":["Destination","FlightNumber","Origin"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"FlightNumber":{"minLength":1,"type":"string","description":"Flight number - tail number (e.g., N12345), or an ident (typically an ICAO airline with flight number, e.g., SWA2558)"},"Origin":{"minLength":1,"type":"string","description":"Origin airport"},"Destination":{"minLength":1,"type":"string","description":"Destination airport"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double","nullable":true},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double","nullable":true},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double","nullable":true},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double","nullable":true},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourney":{"required":["DestinationAddress","DestinationLatitude","DestinationLongitude","JourneyType","Name","OriginAddress","OriginLatitude","OriginLongitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the journey","format":"int32"},"JourneyType":{"$ref":"#/components/schemas/InsightsJourneyType"},"Name":{"minLength":1,"type":"string","description":"Name"},"Description":{"type":"string","description":"Description","nullable":true},"OriginAddress":{"minLength":1,"type":"string","description":"Origin address"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double"},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double"},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationAddress":{"minLength":1,"type":"string","description":"Destination address"},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double"},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double"},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourneyType":{"enum":["Walk","Drive","Transit","Cycle","Ship"],"type":"string"},"ItineraryRegion":{"type":"object","properties":{"Name":{"type":"string","description":"Region name","nullable":true},"GeometryId":{"type":"string","description":"Insights intelligence region id","nullable":true}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/itineraries

> Creates a new itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries"}],"paths":{"/V2/{tenantVarCode}/itineraries":{"post":{"tags":["Itineraries"],"summary":"Creates a new itinerary","operationId":"PostItinerary","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"requestBody":{"description":"Itinerary (empty object or object with PnrNumber)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"text/json":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"text/xml":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/ItineraryCreate"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"ItineraryCreate":{"type":"object","properties":{"PnrNumber":{"type":"string","description":"PNR Number - Passenger name record of a reservation system","nullable":true},"Notes":{"type":"string","description":"Free-text notes","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/itinerariesList

> Returns itineraries for specified tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries"}],"paths":{"/V2/{tenantVarCode}/itinerariesList":{"get":{"tags":["Itineraries"],"summary":"Returns itineraries for specified tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"startDate","in":"query","description":"Start date itinerary filter","schema":{"type":"string","format":"date-time"}},{"name":"endDate","in":"query","description":"End date itinerary filter","schema":{"type":"string","format":"date-time"}},{"name":"approvalState","in":"query","description":"When used it filters result by approval state: NoDecision=0, Approved=1, Declined=2","schema":{"type":"integer","format":"int32","default":-1}},{"name":"page","in":"query","description":"Optional page number. Default = 1","schema":{"type":"integer","format":"int32","default":1}},{"name":"pageSize","in":"query","description":"Optional page size. Default = 100","schema":{"type":"integer","format":"int32","default":100}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Itinerary"}}}}}}}}},"components":{"schemas":{"Itinerary":{"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the itinerary","format":"int32"},"Start":{"type":"string","description":"Itinerary start date","format":"date-time"},"End":{"type":"string","description":"Itinerary end date","format":"date-time"},"StartUserTimeZone":{"type":"string","description":"Itinerary start date converted to user time zone","format":"date-time"},"EndUserTimeZone":{"type":"string","description":"Itinerary end date converted to user time zone","format":"date-time"},"UserTimeZoneId":{"type":"string","description":"User time zone id","nullable":true},"Summary":{"type":"string","description":"Summary text","nullable":true},"ApprovalState":{"$ref":"#/components/schemas/ApprovalState"},"OverallRisk":{"type":"integer","description":"Calculated overall risk","format":"int32"},"ExternalId":{"type":"string","description":"External system Id","nullable":true},"ExternalStatus":{"type":"string","description":"External system status","nullable":true},"PnrNumber":{"type":"string","description":"PNR Number - Passenger name record of a reservation system","nullable":true},"Travelers":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"},"description":"Travelers","nullable":true},"Hotels":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"},"description":"Hotels","nullable":true},"Flights":{"type":"array","items":{"$ref":"#/components/schemas/Flight"},"description":"Flights","nullable":true},"Journeys":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"},"description":"Journeys","nullable":true},"Regions":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"},"description":"GAP Insights intelligence regions","nullable":true},"Notes":{"type":"string","description":"Free-text notes","nullable":true}},"additionalProperties":false},"ApprovalState":{"enum":["NoDecision","Approved","Declined","Canceled"],"type":"string"},"Traveler":{"required":["EmailAddress","Firstname","Lastname","PhoneNumber"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the traveler","format":"int32"},"EmailAddress":{"minLength":1,"type":"string","description":"Email address"},"Firstname":{"minLength":1,"type":"string","description":"First name"},"Lastname":{"minLength":1,"type":"string","description":"Last name"},"DateOfBirth":{"type":"string","description":"Date of birth","format":"date-time","nullable":true},"PhoneNumber":{"minLength":1,"type":"string","description":"Phone number"},"Citizenship":{"type":"string","description":"Read only Gap user citizenship","nullable":true},"Address":{"type":"string","description":"Read only Gap user address","nullable":true},"CityStatePostalCode":{"type":"string","description":"Read only Gap user city, state, postal code","nullable":true},"Country":{"type":"string","description":"Read only Gap user country","nullable":true},"PhoneNumbersAll":{"type":"string","description":"Read only Gap user phone numbers","nullable":true},"EmergencyContact1":{"type":"string","description":"Read only Gap user first emergency contact","nullable":true},"EmergencyContact2":{"type":"string","description":"Read only Gap user second emergency contact","nullable":true}},"additionalProperties":false},"Hotel":{"required":["Address","Latitude","Longitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"Name":{"type":"string","description":"Hotel name","nullable":true},"Address":{"minLength":1,"type":"string","description":"Hotel address"},"Latitude":{"type":"number","description":"Latitude","format":"double"},"Longitude":{"type":"number","description":"Longitude","format":"double"},"CountryName":{"type":"string","description":"Country name","nullable":true},"CountryCode":{"type":"string","description":"Two letter country code","nullable":true},"TimeZoneId":{"type":"string","description":"Time zone id","nullable":true},"CheckInTimeLocal":{"type":"string","description":"Check-in local time (required if check-in time UTC not specified)","format":"date-time","nullable":true},"CheckInTime":{"type":"string","description":"Check-in time UTC (required if check-in local time not specified)","format":"date-time","nullable":true},"CheckOutTimeLocal":{"type":"string","description":"Check-out local time (required if check-out time UTC not specified)","format":"date-time","nullable":true},"CheckOutTime":{"type":"string","description":"Check-out time UTC (required if check-out local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"Flight":{"required":["Destination","FlightNumber","Origin"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"FlightNumber":{"minLength":1,"type":"string","description":"Flight number - tail number (e.g., N12345), or an ident (typically an ICAO airline with flight number, e.g., SWA2558)"},"Origin":{"minLength":1,"type":"string","description":"Origin airport"},"Destination":{"minLength":1,"type":"string","description":"Destination airport"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double","nullable":true},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double","nullable":true},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double","nullable":true},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double","nullable":true},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourney":{"required":["DestinationAddress","DestinationLatitude","DestinationLongitude","JourneyType","Name","OriginAddress","OriginLatitude","OriginLongitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the journey","format":"int32"},"JourneyType":{"$ref":"#/components/schemas/InsightsJourneyType"},"Name":{"minLength":1,"type":"string","description":"Name"},"Description":{"type":"string","description":"Description","nullable":true},"OriginAddress":{"minLength":1,"type":"string","description":"Origin address"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double"},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double"},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationAddress":{"minLength":1,"type":"string","description":"Destination address"},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double"},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double"},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourneyType":{"enum":["Walk","Drive","Transit","Cycle","Ship"],"type":"string"},"ItineraryRegion":{"type":"object","properties":{"Name":{"type":"string","description":"Region name","nullable":true},"GeometryId":{"type":"string","description":"Insights intelligence region id","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}

> Returns a specific itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}":{"get":{"tags":["Itineraries"],"summary":"Returns a specific itinerary","operationId":"GetItinerary","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Itinerary"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Itinerary"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Itinerary"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Itinerary"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Itinerary"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Itinerary"}},"text/json":{"schema":{"$ref":"#/components/schemas/Itinerary"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Itinerary"}}}}}}}},"components":{"schemas":{"Itinerary":{"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the itinerary","format":"int32"},"Start":{"type":"string","description":"Itinerary start date","format":"date-time"},"End":{"type":"string","description":"Itinerary end date","format":"date-time"},"StartUserTimeZone":{"type":"string","description":"Itinerary start date converted to user time zone","format":"date-time"},"EndUserTimeZone":{"type":"string","description":"Itinerary end date converted to user time zone","format":"date-time"},"UserTimeZoneId":{"type":"string","description":"User time zone id","nullable":true},"Summary":{"type":"string","description":"Summary text","nullable":true},"ApprovalState":{"$ref":"#/components/schemas/ApprovalState"},"OverallRisk":{"type":"integer","description":"Calculated overall risk","format":"int32"},"ExternalId":{"type":"string","description":"External system Id","nullable":true},"ExternalStatus":{"type":"string","description":"External system status","nullable":true},"PnrNumber":{"type":"string","description":"PNR Number - Passenger name record of a reservation system","nullable":true},"Travelers":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"},"description":"Travelers","nullable":true},"Hotels":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"},"description":"Hotels","nullable":true},"Flights":{"type":"array","items":{"$ref":"#/components/schemas/Flight"},"description":"Flights","nullable":true},"Journeys":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"},"description":"Journeys","nullable":true},"Regions":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"},"description":"GAP Insights intelligence regions","nullable":true},"Notes":{"type":"string","description":"Free-text notes","nullable":true}},"additionalProperties":false},"ApprovalState":{"enum":["NoDecision","Approved","Declined","Canceled"],"type":"string"},"Traveler":{"required":["EmailAddress","Firstname","Lastname","PhoneNumber"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the traveler","format":"int32"},"EmailAddress":{"minLength":1,"type":"string","description":"Email address"},"Firstname":{"minLength":1,"type":"string","description":"First name"},"Lastname":{"minLength":1,"type":"string","description":"Last name"},"DateOfBirth":{"type":"string","description":"Date of birth","format":"date-time","nullable":true},"PhoneNumber":{"minLength":1,"type":"string","description":"Phone number"},"Citizenship":{"type":"string","description":"Read only Gap user citizenship","nullable":true},"Address":{"type":"string","description":"Read only Gap user address","nullable":true},"CityStatePostalCode":{"type":"string","description":"Read only Gap user city, state, postal code","nullable":true},"Country":{"type":"string","description":"Read only Gap user country","nullable":true},"PhoneNumbersAll":{"type":"string","description":"Read only Gap user phone numbers","nullable":true},"EmergencyContact1":{"type":"string","description":"Read only Gap user first emergency contact","nullable":true},"EmergencyContact2":{"type":"string","description":"Read only Gap user second emergency contact","nullable":true}},"additionalProperties":false},"Hotel":{"required":["Address","Latitude","Longitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"Name":{"type":"string","description":"Hotel name","nullable":true},"Address":{"minLength":1,"type":"string","description":"Hotel address"},"Latitude":{"type":"number","description":"Latitude","format":"double"},"Longitude":{"type":"number","description":"Longitude","format":"double"},"CountryName":{"type":"string","description":"Country name","nullable":true},"CountryCode":{"type":"string","description":"Two letter country code","nullable":true},"TimeZoneId":{"type":"string","description":"Time zone id","nullable":true},"CheckInTimeLocal":{"type":"string","description":"Check-in local time (required if check-in time UTC not specified)","format":"date-time","nullable":true},"CheckInTime":{"type":"string","description":"Check-in time UTC (required if check-in local time not specified)","format":"date-time","nullable":true},"CheckOutTimeLocal":{"type":"string","description":"Check-out local time (required if check-out time UTC not specified)","format":"date-time","nullable":true},"CheckOutTime":{"type":"string","description":"Check-out time UTC (required if check-out local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"Flight":{"required":["Destination","FlightNumber","Origin"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"FlightNumber":{"minLength":1,"type":"string","description":"Flight number - tail number (e.g., N12345), or an ident (typically an ICAO airline with flight number, e.g., SWA2558)"},"Origin":{"minLength":1,"type":"string","description":"Origin airport"},"Destination":{"minLength":1,"type":"string","description":"Destination airport"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double","nullable":true},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double","nullable":true},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double","nullable":true},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double","nullable":true},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourney":{"required":["DestinationAddress","DestinationLatitude","DestinationLongitude","JourneyType","Name","OriginAddress","OriginLatitude","OriginLongitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the journey","format":"int32"},"JourneyType":{"$ref":"#/components/schemas/InsightsJourneyType"},"Name":{"minLength":1,"type":"string","description":"Name"},"Description":{"type":"string","description":"Description","nullable":true},"OriginAddress":{"minLength":1,"type":"string","description":"Origin address"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double"},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double"},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationAddress":{"minLength":1,"type":"string","description":"Destination address"},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double"},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double"},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourneyType":{"enum":["Walk","Drive","Transit","Cycle","Ship"],"type":"string"},"ItineraryRegion":{"type":"object","properties":{"Name":{"type":"string","description":"Region name","nullable":true},"GeometryId":{"type":"string","description":"Insights intelligence region id","nullable":true}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/itineraries/{itineraryId}

> Updates an existing itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}":{"put":{"tags":["Itineraries"],"summary":"Updates an existing itinerary","operationId":"PutItinerary","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Itinerary object (only Approval state or PnrNumber can be updated)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"application/xml":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"text/json":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"text/xml":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/ItineraryUpdate"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"ItineraryUpdate":{"type":"object","properties":{"ApprovalState":{"$ref":"#/components/schemas/ApprovalState"},"PnrNumber":{"type":"string","description":"PNR Number - Passenger name record of a reservation system","nullable":true},"Notes":{"type":"string","description":"Free-text notes","nullable":true}},"additionalProperties":false},"ApprovalState":{"enum":["NoDecision","Approved","Declined","Canceled"],"type":"string"}}}}
```

## DELETE /V2/{tenantVarCode}/itineraries/{itineraryId}

> Deletes a specific itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}":{"delete":{"tags":["Itineraries"],"summary":"Deletes a specific itinerary","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Itineraries Flights

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/flights

> Returns a list of flights for the itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Flights"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/flights":{"get":{"tags":["Itineraries - Flights"],"summary":"Returns a list of flights for the itinerary","operationId":"GetFlights","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Flight"}}}}}}}}},"components":{"schemas":{"Flight":{"required":["Destination","FlightNumber","Origin"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"FlightNumber":{"minLength":1,"type":"string","description":"Flight number - tail number (e.g., N12345), or an ident (typically an ICAO airline with flight number, e.g., SWA2558)"},"Origin":{"minLength":1,"type":"string","description":"Origin airport"},"Destination":{"minLength":1,"type":"string","description":"Destination airport"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double","nullable":true},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double","nullable":true},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double","nullable":true},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double","nullable":true},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/itineraries/{itineraryId}/flights

> Creates a new flight

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Flights"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/flights":{"post":{"tags":["Itineraries - Flights"],"summary":"Creates a new flight","operationId":"PostFlight","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Flight","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/json":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Flight"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Flight":{"required":["Destination","FlightNumber","Origin"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"FlightNumber":{"minLength":1,"type":"string","description":"Flight number - tail number (e.g., N12345), or an ident (typically an ICAO airline with flight number, e.g., SWA2558)"},"Origin":{"minLength":1,"type":"string","description":"Origin airport"},"Destination":{"minLength":1,"type":"string","description":"Destination airport"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double","nullable":true},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double","nullable":true},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double","nullable":true},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double","nullable":true},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/flights/{flightId}

> Returns a specific flight

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Flights"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/flights/{flightId}":{"get":{"tags":["Itineraries - Flights"],"summary":"Returns a specific flight","operationId":"GetFlight","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"flightId","in":"path","description":"Flight Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/json":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Flight"}}}}}}}},"components":{"schemas":{"Flight":{"required":["Destination","FlightNumber","Origin"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"FlightNumber":{"minLength":1,"type":"string","description":"Flight number - tail number (e.g., N12345), or an ident (typically an ICAO airline with flight number, e.g., SWA2558)"},"Origin":{"minLength":1,"type":"string","description":"Origin airport"},"Destination":{"minLength":1,"type":"string","description":"Destination airport"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double","nullable":true},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double","nullable":true},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double","nullable":true},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double","nullable":true},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/itineraries/{itineraryId}/flights/{flightId}

> Updates an existing flight

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Flights"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/flights/{flightId}":{"put":{"tags":["Itineraries - Flights"],"summary":"Updates an existing flight","operationId":"PutFlight","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"flightId","in":"path","description":"Flight Id","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Flight","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/json":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Flight"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Flight"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Flight"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Flight":{"required":["Destination","FlightNumber","Origin"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"FlightNumber":{"minLength":1,"type":"string","description":"Flight number - tail number (e.g., N12345), or an ident (typically an ICAO airline with flight number, e.g., SWA2558)"},"Origin":{"minLength":1,"type":"string","description":"Origin airport"},"Destination":{"minLength":1,"type":"string","description":"Destination airport"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double","nullable":true},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double","nullable":true},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double","nullable":true},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double","nullable":true},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/itineraries/{itineraryId}/flights/{flightId}

> Deletes a specific flight

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Flights"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/flights/{flightId}":{"delete":{"tags":["Itineraries - Flights"],"summary":"Deletes a specific flight","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"flightId","in":"path","description":"Flight Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Itineraries Hotels

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/hotels

> Returns a list of hotes for the itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Hotels"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/hotels":{"get":{"tags":["Itineraries - Hotels"],"summary":"Returns a list of hotes for the itinerary","operationId":"GetHotels","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Hotel"}}}}}}}}},"components":{"schemas":{"Hotel":{"required":["Address","Latitude","Longitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"Name":{"type":"string","description":"Hotel name","nullable":true},"Address":{"minLength":1,"type":"string","description":"Hotel address"},"Latitude":{"type":"number","description":"Latitude","format":"double"},"Longitude":{"type":"number","description":"Longitude","format":"double"},"CountryName":{"type":"string","description":"Country name","nullable":true},"CountryCode":{"type":"string","description":"Two letter country code","nullable":true},"TimeZoneId":{"type":"string","description":"Time zone id","nullable":true},"CheckInTimeLocal":{"type":"string","description":"Check-in local time (required if check-in time UTC not specified)","format":"date-time","nullable":true},"CheckInTime":{"type":"string","description":"Check-in time UTC (required if check-in local time not specified)","format":"date-time","nullable":true},"CheckOutTimeLocal":{"type":"string","description":"Check-out local time (required if check-out time UTC not specified)","format":"date-time","nullable":true},"CheckOutTime":{"type":"string","description":"Check-out time UTC (required if check-out local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/itineraries/{itineraryId}/hotels

> Creates a new hotel

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Hotels"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/hotels":{"post":{"tags":["Itineraries - Hotels"],"summary":"Creates a new hotel","operationId":"PostHotel","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Hotel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Hotel"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Hotel":{"required":["Address","Latitude","Longitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"Name":{"type":"string","description":"Hotel name","nullable":true},"Address":{"minLength":1,"type":"string","description":"Hotel address"},"Latitude":{"type":"number","description":"Latitude","format":"double"},"Longitude":{"type":"number","description":"Longitude","format":"double"},"CountryName":{"type":"string","description":"Country name","nullable":true},"CountryCode":{"type":"string","description":"Two letter country code","nullable":true},"TimeZoneId":{"type":"string","description":"Time zone id","nullable":true},"CheckInTimeLocal":{"type":"string","description":"Check-in local time (required if check-in time UTC not specified)","format":"date-time","nullable":true},"CheckInTime":{"type":"string","description":"Check-in time UTC (required if check-in local time not specified)","format":"date-time","nullable":true},"CheckOutTimeLocal":{"type":"string","description":"Check-out local time (required if check-out time UTC not specified)","format":"date-time","nullable":true},"CheckOutTime":{"type":"string","description":"Check-out time UTC (required if check-out local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/hotels/{hotelId}

> Returns a specific hotel

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Hotels"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/hotels/{hotelId}":{"get":{"tags":["Itineraries - Hotels"],"summary":"Returns a specific hotel","operationId":"GetHotel","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"hotelId","in":"path","description":"Hotel Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Hotel"}}}}}}}},"components":{"schemas":{"Hotel":{"required":["Address","Latitude","Longitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"Name":{"type":"string","description":"Hotel name","nullable":true},"Address":{"minLength":1,"type":"string","description":"Hotel address"},"Latitude":{"type":"number","description":"Latitude","format":"double"},"Longitude":{"type":"number","description":"Longitude","format":"double"},"CountryName":{"type":"string","description":"Country name","nullable":true},"CountryCode":{"type":"string","description":"Two letter country code","nullable":true},"TimeZoneId":{"type":"string","description":"Time zone id","nullable":true},"CheckInTimeLocal":{"type":"string","description":"Check-in local time (required if check-in time UTC not specified)","format":"date-time","nullable":true},"CheckInTime":{"type":"string","description":"Check-in time UTC (required if check-in local time not specified)","format":"date-time","nullable":true},"CheckOutTimeLocal":{"type":"string","description":"Check-out local time (required if check-out time UTC not specified)","format":"date-time","nullable":true},"CheckOutTime":{"type":"string","description":"Check-out time UTC (required if check-out local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## PUT /V2/{tenantVarCode}/itineraries/{itineraryId}/hotels/{hotelId}

> Updates an existing hotel

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Hotels"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/hotels/{hotelId}":{"put":{"tags":["Itineraries - Hotels"],"summary":"Updates an existing hotel","operationId":"PutHotel","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"hotelId","in":"path","description":"Hotel Id","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Hotel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Hotel"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Hotel"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Hotel"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Hotel":{"required":["Address","Latitude","Longitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the hotel","format":"int32"},"Name":{"type":"string","description":"Hotel name","nullable":true},"Address":{"minLength":1,"type":"string","description":"Hotel address"},"Latitude":{"type":"number","description":"Latitude","format":"double"},"Longitude":{"type":"number","description":"Longitude","format":"double"},"CountryName":{"type":"string","description":"Country name","nullable":true},"CountryCode":{"type":"string","description":"Two letter country code","nullable":true},"TimeZoneId":{"type":"string","description":"Time zone id","nullable":true},"CheckInTimeLocal":{"type":"string","description":"Check-in local time (required if check-in time UTC not specified)","format":"date-time","nullable":true},"CheckInTime":{"type":"string","description":"Check-in time UTC (required if check-in local time not specified)","format":"date-time","nullable":true},"CheckOutTimeLocal":{"type":"string","description":"Check-out local time (required if check-out time UTC not specified)","format":"date-time","nullable":true},"CheckOutTime":{"type":"string","description":"Check-out time UTC (required if check-out local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/itineraries/{itineraryId}/hotels/{hotelId}

> Deletes a specific hotel

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Hotels"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/hotels/{hotelId}":{"delete":{"tags":["Itineraries - Hotels"],"summary":"Deletes a specific hotel","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"hotelId","in":"path","description":"Hotel Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Itineraries Journeys

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/journeys

> Returns a list of journeys for the itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Journeys"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/journeys":{"get":{"tags":["Itineraries - Journeys"],"summary":"Returns a list of journeys for the itinerary","operationId":"GetJourneys","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InsightsJourney"}}}}}}}}},"components":{"schemas":{"InsightsJourney":{"required":["DestinationAddress","DestinationLatitude","DestinationLongitude","JourneyType","Name","OriginAddress","OriginLatitude","OriginLongitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the journey","format":"int32"},"JourneyType":{"$ref":"#/components/schemas/InsightsJourneyType"},"Name":{"minLength":1,"type":"string","description":"Name"},"Description":{"type":"string","description":"Description","nullable":true},"OriginAddress":{"minLength":1,"type":"string","description":"Origin address"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double"},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double"},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationAddress":{"minLength":1,"type":"string","description":"Destination address"},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double"},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double"},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourneyType":{"enum":["Walk","Drive","Transit","Cycle","Ship"],"type":"string"}}}}
```

## POST /V2/{tenantVarCode}/itineraries/{itineraryId}/journeys

> Creates a new journey

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Journeys"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/journeys":{"post":{"tags":["Itineraries - Journeys"],"summary":"Creates a new journey","operationId":"PostJourney","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Journey","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/xml":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/plain":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/xml":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"InsightsJourney":{"required":["DestinationAddress","DestinationLatitude","DestinationLongitude","JourneyType","Name","OriginAddress","OriginLatitude","OriginLongitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the journey","format":"int32"},"JourneyType":{"$ref":"#/components/schemas/InsightsJourneyType"},"Name":{"minLength":1,"type":"string","description":"Name"},"Description":{"type":"string","description":"Description","nullable":true},"OriginAddress":{"minLength":1,"type":"string","description":"Origin address"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double"},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double"},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationAddress":{"minLength":1,"type":"string","description":"Destination address"},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double"},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double"},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourneyType":{"enum":["Walk","Drive","Transit","Cycle","Ship"],"type":"string"}}}}
```

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/journeys/{journeyId}

> Returns a specific journey

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Journeys"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/journeys/{journeyId}":{"get":{"tags":["Itineraries - Journeys"],"summary":"Returns a specific journey","operationId":"GetJourney","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"journeyId","in":"path","description":"Journey Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/xml":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/plain":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/xml":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}}}}}}}},"components":{"schemas":{"InsightsJourney":{"required":["DestinationAddress","DestinationLatitude","DestinationLongitude","JourneyType","Name","OriginAddress","OriginLatitude","OriginLongitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the journey","format":"int32"},"JourneyType":{"$ref":"#/components/schemas/InsightsJourneyType"},"Name":{"minLength":1,"type":"string","description":"Name"},"Description":{"type":"string","description":"Description","nullable":true},"OriginAddress":{"minLength":1,"type":"string","description":"Origin address"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double"},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double"},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationAddress":{"minLength":1,"type":"string","description":"Destination address"},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double"},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double"},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourneyType":{"enum":["Walk","Drive","Transit","Cycle","Ship"],"type":"string"}}}}
```

## PUT /V2/{tenantVarCode}/itineraries/{itineraryId}/journeys/{journeyId}

> Updates an existing journey

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Journeys"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/journeys/{journeyId}":{"put":{"tags":["Itineraries - Journeys"],"summary":"Updates an existing journey","operationId":"PutJourney","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"journeyId","in":"path","description":"Journey Id","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Journey","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/xml":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/plain":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"text/xml":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/InsightsJourney"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"InsightsJourney":{"required":["DestinationAddress","DestinationLatitude","DestinationLongitude","JourneyType","Name","OriginAddress","OriginLatitude","OriginLongitude"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the journey","format":"int32"},"JourneyType":{"$ref":"#/components/schemas/InsightsJourneyType"},"Name":{"minLength":1,"type":"string","description":"Name"},"Description":{"type":"string","description":"Description","nullable":true},"OriginAddress":{"minLength":1,"type":"string","description":"Origin address"},"OriginLatitude":{"type":"number","description":"Origin latitude","format":"double"},"OriginLongitude":{"type":"number","description":"Origin longitude","format":"double"},"OriginCountryName":{"type":"string","description":"Origin country name","nullable":true},"OriginCountryCode":{"type":"string","description":"Origin two letter country code","nullable":true},"DepartureTimeZoneId":{"type":"string","description":"Departure time zone id","nullable":true},"DepartureTimeLocal":{"type":"string","description":"Departure local time (required if departure time UTC not specified)","format":"date-time","nullable":true},"DepartureTime":{"type":"string","description":"Departure time UTC (required if departure local time not specified)","format":"date-time","nullable":true},"DestinationAddress":{"minLength":1,"type":"string","description":"Destination address"},"DestinationLatitude":{"type":"number","description":"Destination latitude","format":"double"},"DestinationLongitude":{"type":"number","description":"Destination longitude","format":"double"},"DestinationCountryName":{"type":"string","description":"Destination country name","nullable":true},"DestinationCountryCode":{"type":"string","description":"Destination two letter country code","nullable":true},"ArrivalTimeZoneId":{"type":"string","description":"Arrival time zone id","nullable":true},"ArrivalTimeLocal":{"type":"string","description":"Arrival local time (required if arrival time UTC not specified)","format":"date-time","nullable":true},"ArrivalTime":{"type":"string","description":"Arrival time UTC (required if arrival local time not specified)","format":"date-time","nullable":true}},"additionalProperties":false},"InsightsJourneyType":{"enum":["Walk","Drive","Transit","Cycle","Ship"],"type":"string"}}}}
```

## DELETE /V2/{tenantVarCode}/itineraries/{itineraryId}/journeys/{journeyId}

> Deletes a specific journey

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Journeys"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/journeys/{journeyId}":{"delete":{"tags":["Itineraries - Journeys"],"summary":"Deletes a specific journey","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"journeyId","in":"path","description":"Journey Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Itineraries Regions

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/regions

> Returns a list of risk regions for the itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Regions"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/regions":{"get":{"tags":["Itineraries - Regions"],"summary":"Returns a list of risk regions for the itinerary","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ItineraryRegion"}}}}}}}}},"components":{"schemas":{"ItineraryRegion":{"type":"object","properties":{"Name":{"type":"string","description":"Region name","nullable":true},"GeometryId":{"type":"string","description":"Insights intelligence region id","nullable":true}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/itineraries/{itineraryId}/regions/{geometryId}

> Adds an existing risk region to the itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Regions"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/regions/{geometryId}":{"post":{"tags":["Itineraries - Regions"],"summary":"Adds an existing risk region to the itinerary","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"geometryId","in":"path","description":"Insights intelligence risk region id (value is case sensitive)","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```

## DELETE /V2/{tenantVarCode}/itineraries/{itineraryId}/regions/{geometryId}

> Removes an existing risk region from the itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Regions"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/regions/{geometryId}":{"delete":{"tags":["Itineraries - Regions"],"summary":"Removes an existing risk region from the itinerary","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"geometryId","in":"path","description":"Insights intelligence risk region id (value is case sensitive)","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# Itineraries Travelers

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/travelers

> Returns a list of travelers for the itinerary

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Travelers"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/travelers":{"get":{"tags":["Itineraries - Travelers"],"summary":"Returns a list of travelers for the itinerary","operationId":"GetTravelers","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Traveler"}}}}}}}}},"components":{"schemas":{"Traveler":{"required":["EmailAddress","Firstname","Lastname","PhoneNumber"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the traveler","format":"int32"},"EmailAddress":{"minLength":1,"type":"string","description":"Email address"},"Firstname":{"minLength":1,"type":"string","description":"First name"},"Lastname":{"minLength":1,"type":"string","description":"Last name"},"DateOfBirth":{"type":"string","description":"Date of birth","format":"date-time","nullable":true},"PhoneNumber":{"minLength":1,"type":"string","description":"Phone number"},"Citizenship":{"type":"string","description":"Read only Gap user citizenship","nullable":true},"Address":{"type":"string","description":"Read only Gap user address","nullable":true},"CityStatePostalCode":{"type":"string","description":"Read only Gap user city, state, postal code","nullable":true},"Country":{"type":"string","description":"Read only Gap user country","nullable":true},"PhoneNumbersAll":{"type":"string","description":"Read only Gap user phone numbers","nullable":true},"EmergencyContact1":{"type":"string","description":"Read only Gap user first emergency contact","nullable":true},"EmergencyContact2":{"type":"string","description":"Read only Gap user second emergency contact","nullable":true}},"additionalProperties":false}}}}
```

## POST /V2/{tenantVarCode}/itineraries/{itineraryId}/travelers

> Creates a new traveler associated with a GAP user

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Travelers"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/travelers":{"post":{"tags":["Itineraries - Travelers"],"summary":"Creates a new traveler associated with a GAP user","operationId":"PostTraveler","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}}],"requestBody":{"description":"Traveler","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Traveler"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/json-patch+json":{"schema":{"$ref":"#/components/schemas/Traveler"}},"text/json":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/*+json":{"schema":{"$ref":"#/components/schemas/Traveler"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/*+xml":{"schema":{"$ref":"#/components/schemas/Traveler"}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"Traveler":{"required":["EmailAddress","Firstname","Lastname","PhoneNumber"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the traveler","format":"int32"},"EmailAddress":{"minLength":1,"type":"string","description":"Email address"},"Firstname":{"minLength":1,"type":"string","description":"First name"},"Lastname":{"minLength":1,"type":"string","description":"Last name"},"DateOfBirth":{"type":"string","description":"Date of birth","format":"date-time","nullable":true},"PhoneNumber":{"minLength":1,"type":"string","description":"Phone number"},"Citizenship":{"type":"string","description":"Read only Gap user citizenship","nullable":true},"Address":{"type":"string","description":"Read only Gap user address","nullable":true},"CityStatePostalCode":{"type":"string","description":"Read only Gap user city, state, postal code","nullable":true},"Country":{"type":"string","description":"Read only Gap user country","nullable":true},"PhoneNumbersAll":{"type":"string","description":"Read only Gap user phone numbers","nullable":true},"EmergencyContact1":{"type":"string","description":"Read only Gap user first emergency contact","nullable":true},"EmergencyContact2":{"type":"string","description":"Read only Gap user second emergency contact","nullable":true}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/itineraries/{itineraryId}/travelers/{travelerId}

> Returns a specific traveler

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Travelers"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/travelers/{travelerId}":{"get":{"tags":["Itineraries - Travelers"],"summary":"Returns a specific traveler","operationId":"GetTraveler","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"travelerId","in":"path","description":"Traveler Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/xml":{"schema":{"$ref":"#/components/schemas/Traveler"}},"text/plain":{"schema":{"$ref":"#/components/schemas/Traveler"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/Traveler"}},"text/json":{"schema":{"$ref":"#/components/schemas/Traveler"}},"text/xml":{"schema":{"$ref":"#/components/schemas/Traveler"}}}}}}}},"components":{"schemas":{"Traveler":{"required":["EmailAddress","Firstname","Lastname","PhoneNumber"],"type":"object","properties":{"Id":{"type":"integer","description":"A unique identifier of the traveler","format":"int32"},"EmailAddress":{"minLength":1,"type":"string","description":"Email address"},"Firstname":{"minLength":1,"type":"string","description":"First name"},"Lastname":{"minLength":1,"type":"string","description":"Last name"},"DateOfBirth":{"type":"string","description":"Date of birth","format":"date-time","nullable":true},"PhoneNumber":{"minLength":1,"type":"string","description":"Phone number"},"Citizenship":{"type":"string","description":"Read only Gap user citizenship","nullable":true},"Address":{"type":"string","description":"Read only Gap user address","nullable":true},"CityStatePostalCode":{"type":"string","description":"Read only Gap user city, state, postal code","nullable":true},"Country":{"type":"string","description":"Read only Gap user country","nullable":true},"PhoneNumbersAll":{"type":"string","description":"Read only Gap user phone numbers","nullable":true},"EmergencyContact1":{"type":"string","description":"Read only Gap user first emergency contact","nullable":true},"EmergencyContact2":{"type":"string","description":"Read only Gap user second emergency contact","nullable":true}},"additionalProperties":false}}}}
```

## DELETE /V2/{tenantVarCode}/itineraries/{itineraryId}/travelers/{travelerId}

> Deletes a specific traveler

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"Itineraries - Travelers"}],"paths":{"/V2/{tenantVarCode}/itineraries/{itineraryId}/travelers/{travelerId}":{"delete":{"tags":["Itineraries - Travelers"],"summary":"Deletes a specific traveler","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"itineraryId","in":"path","description":"Itinerary Id","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"travelerId","in":"path","description":"Traveler Id","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK"}}}}}}
```


# KML

## GET /V2/{tenantVarCode}/kml

> Returns a list of KML files for specified tenant

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"KML"}],"paths":{"/V2/{tenantVarCode}/kml":{"get":{"tags":["KML"],"summary":"Returns a list of KML files for specified tenant","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/KmlFile"}}}}}}}}},"components":{"schemas":{"KmlFile":{"type":"object","properties":{"FileId":{"type":"string","nullable":true},"Name":{"type":"string","nullable":true},"MinZoom":{"type":"integer","format":"int32"}},"additionalProperties":false}}}}
```

## GET /V2/{tenantVarCode}/kml/{fileId}

> Returns a KML file

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"KML"}],"paths":{"/V2/{tenantVarCode}/kml/{fileId}":{"get":{"tags":["KML"],"summary":"Returns a KML file","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"fileId","in":"path","description":"KML File Id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/File"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/File"}},"application/xml":{"schema":{"$ref":"#/components/schemas/File"}},"text/plain":{"schema":{"$ref":"#/components/schemas/File"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/File"}},"text/json":{"schema":{"$ref":"#/components/schemas/File"}}}}}}}},"components":{"schemas":{"File":{"type":"object","additionalProperties":false}}}}
```


# MO Messages

## GET /V2/{tenantVarCode}/devices/{deviceId}/momessages

> Returns a list of mobile originated messages for the device> \
> This endpoint returns paged results of up to 1,000 records per response, using the X-CONTINUATIONTOKEN header.> \
> When the response includes this token, it indicates that additional records are available. To retrieve the next set of results,> \
> include the X-CONTINUATIONTOKEN token from the previous response header in the header of your subsequent request.> \
> This process can be repeated until no further continuation token is provided, indicating that you have reached the end of the dataset.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"MO Messages"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/momessages":{"get":{"tags":["MO Messages"],"summary":"Returns a list of mobile originated messages for the device\r\nThis endpoint returns paged results of up to 1,000 records per response, using the X-CONTINUATIONTOKEN header.\r\nWhen the response includes this token, it indicates that additional records are available. To retrieve the next set of results,\r\ninclude the X-CONTINUATIONTOKEN token from the previous response header in the header of your subsequent request.\r\nThis process can be repeated until no further continuation token is provided, indicating that you have reached the end of the dataset.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","description":"From Date","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","description":"To Date","schema":{"type":"string","format":"date-time"}},{"name":"file","in":"query","description":"If true, result include Base64 encoded file","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/octet-stream":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"text/csv":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}}}}}}}},"components":{"schemas":{"MoMessage":{"required":["EmergencyState","MessageType","SentFromDevice"],"type":"object","properties":{"MessageId":{"type":"string","description":"A unique numeric identifier for the message (read only)","nullable":true},"MessageType":{"minLength":1,"type":"string","description":"A string representing the message type. Some typical message types are: AutomaticPositionReport, ManualPositionReport, ResponseToLocationRequest, SwitchOn, SystemTest, \r\nDiagnosticResponse, DeviceIdentifierResponse, Synchronise, FreeText, GeofenceCrossed, BeginMonitoring, EndMonitoring, CheckIn, CannedMessageSend, MessageAcknowledgement, \r\nPowerDown, Waypoint"},"Recipients":{"type":"string","description":"A comma separated list of address book lists to which the message will be sent if routable","nullable":true},"Message":{"type":"string","description":"A string representing the message","nullable":true},"Attachment":{"type":"string","description":"A Base64 encoded byte array representing an attachment. The maximum size is 64Kb. This field is deprecated, use File property instead","format":"byte","nullable":true},"Position":{"$ref":"#/components/schemas/Position"},"SequenceNumber":{"type":"integer","description":"An integer value that can be used by the client to determine the order of the message. This is normally incremented by the client for each message","format":"int32"},"ReceivedAtServer":{"type":"string","description":"The time when the message was processed by the platform","format":"date-time"},"SentFromDevice":{"type":"string","description":"A date and time that the device reports its position. This would normally be the GPS time but doesn't have to be","format":"date-time"},"EmergencyState":{"$ref":"#/components/schemas/EmergencyState"},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional message properties","nullable":true},"ContainingGeofences":{"type":"array","items":{"$ref":"#/components/schemas/ContainingGeofence"},"description":"A read only list of geofences that the device was inside of when it reported it's position","nullable":true},"File":{"type":"string","description":"A Base64 encoded byte array representing binary data. The maximum size is 4MB","format":"byte","nullable":true},"MimeType":{"type":"string","description":"MIME type for file data","nullable":true},"Filename":{"type":"string","description":"Filename for file data","nullable":true},"ETag":{"type":"string","description":"ETag value for handling optimistic concurrency control","nullable":true}},"additionalProperties":false},"Position":{"required":["Latitude","Longitude"],"type":"object","properties":{"Latitude":{"type":"number","description":"A floating point value for latitude (between -90 and +90)","format":"double"},"Longitude":{"type":"number","description":"A floating point value for longitude (between -180 and +180)","format":"double"},"Speed":{"type":"number","description":"A floating point value for speed in km/h","format":"double","nullable":true},"Heading":{"type":"number","description":"A floating point value for course in degrees (between 0 and 360)","format":"double","nullable":true},"Altitude":{"type":"number","description":"A floating point value for altitude in meters","format":"double","nullable":true},"GpsTimestamp":{"type":"string","description":"Date and time of the position fix","format":"date-time","nullable":true},"Accuracy":{"type":"string","description":"String value for overall position accuracy. One of the following formats should be used: \"DOP 3\", \"100 m\", \"6 sats\", \"2D fix\" or \"3 CEP radius\"","nullable":true},"LocationSource":{"$ref":"#/components/schemas/LocationSourceType"}},"additionalProperties":false},"LocationSourceType":{"enum":["Gps","Glonass","Doppler","Unknown","DGpsLt10m","GnssGt10m","AndroidLocationService","iOSLocationService","Beacon","BDAS","Beidou","Galileo","UserProvided","AlexaDeviceGeocodedAddress","IpGeolocation","HtmlGeolocation","WiFiPositioningSystem"],"type":"string"},"EmergencyState":{"enum":["None","Emergency","EmergencyCancel","NotSpecified"],"type":"string"},"ContainingGeofence":{"type":"object","properties":{"GeofenceId":{"type":"string","description":"ID of Geofence","nullable":true},"GeofenceName":{"type":"string","description":"Name of Geofence","nullable":true}},"additionalProperties":false,"description":"Read only object with details of geofences which a message was reported inside of"}}}}
```

## Stores and processes a mobile originated messages for the device

> Please note that the size of the message data must be smaller than 48KB or the request will be rejected.

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"MO Messages"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/momessages":{"post":{"tags":["MO Messages"],"summary":"Stores and processes a mobile originated messages for the device","description":"Please note that the size of the message data must be smaller than 48KB or the request will be rejected.","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"processSync","in":"query","description":"Process the message and return result","schema":{"type":"boolean","default":false}}],"requestBody":{"description":"Collection of MO Messages","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/json;IEEE754Compatible=false":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/json;IEEE754Compatible=true":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"text/plain":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/json-patch+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"text/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/*+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"text/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}},"application/*+xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MoMessage"}}}}},"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"MoMessage":{"required":["EmergencyState","MessageType","SentFromDevice"],"type":"object","properties":{"MessageId":{"type":"string","description":"A unique numeric identifier for the message (read only)","nullable":true},"MessageType":{"minLength":1,"type":"string","description":"A string representing the message type. Some typical message types are: AutomaticPositionReport, ManualPositionReport, ResponseToLocationRequest, SwitchOn, SystemTest, \r\nDiagnosticResponse, DeviceIdentifierResponse, Synchronise, FreeText, GeofenceCrossed, BeginMonitoring, EndMonitoring, CheckIn, CannedMessageSend, MessageAcknowledgement, \r\nPowerDown, Waypoint"},"Recipients":{"type":"string","description":"A comma separated list of address book lists to which the message will be sent if routable","nullable":true},"Message":{"type":"string","description":"A string representing the message","nullable":true},"Attachment":{"type":"string","description":"A Base64 encoded byte array representing an attachment. The maximum size is 64Kb. This field is deprecated, use File property instead","format":"byte","nullable":true},"Position":{"$ref":"#/components/schemas/Position"},"SequenceNumber":{"type":"integer","description":"An integer value that can be used by the client to determine the order of the message. This is normally incremented by the client for each message","format":"int32"},"ReceivedAtServer":{"type":"string","description":"The time when the message was processed by the platform","format":"date-time"},"SentFromDevice":{"type":"string","description":"A date and time that the device reports its position. This would normally be the GPS time but doesn't have to be","format":"date-time"},"EmergencyState":{"$ref":"#/components/schemas/EmergencyState"},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional message properties","nullable":true},"ContainingGeofences":{"type":"array","items":{"$ref":"#/components/schemas/ContainingGeofence"},"description":"A read only list of geofences that the device was inside of when it reported it's position","nullable":true},"File":{"type":"string","description":"A Base64 encoded byte array representing binary data. The maximum size is 4MB","format":"byte","nullable":true},"MimeType":{"type":"string","description":"MIME type for file data","nullable":true},"Filename":{"type":"string","description":"Filename for file data","nullable":true},"ETag":{"type":"string","description":"ETag value for handling optimistic concurrency control","nullable":true}},"additionalProperties":false},"Position":{"required":["Latitude","Longitude"],"type":"object","properties":{"Latitude":{"type":"number","description":"A floating point value for latitude (between -90 and +90)","format":"double"},"Longitude":{"type":"number","description":"A floating point value for longitude (between -180 and +180)","format":"double"},"Speed":{"type":"number","description":"A floating point value for speed in km/h","format":"double","nullable":true},"Heading":{"type":"number","description":"A floating point value for course in degrees (between 0 and 360)","format":"double","nullable":true},"Altitude":{"type":"number","description":"A floating point value for altitude in meters","format":"double","nullable":true},"GpsTimestamp":{"type":"string","description":"Date and time of the position fix","format":"date-time","nullable":true},"Accuracy":{"type":"string","description":"String value for overall position accuracy. One of the following formats should be used: \"DOP 3\", \"100 m\", \"6 sats\", \"2D fix\" or \"3 CEP radius\"","nullable":true},"LocationSource":{"$ref":"#/components/schemas/LocationSourceType"}},"additionalProperties":false},"LocationSourceType":{"enum":["Gps","Glonass","Doppler","Unknown","DGpsLt10m","GnssGt10m","AndroidLocationService","iOSLocationService","Beacon","BDAS","Beidou","Galileo","UserProvided","AlexaDeviceGeocodedAddress","IpGeolocation","HtmlGeolocation","WiFiPositioningSystem"],"type":"string"},"EmergencyState":{"enum":["None","Emergency","EmergencyCancel","NotSpecified"],"type":"string"},"ContainingGeofence":{"type":"object","properties":{"GeofenceId":{"type":"string","description":"ID of Geofence","nullable":true},"GeofenceName":{"type":"string","description":"Name of Geofence","nullable":true}},"additionalProperties":false,"description":"Read only object with details of geofences which a message was reported inside of"}}}}
```

## GET /V2/{tenantVarCode}/devices/{deviceId}/momessages/{messageId}

> Returns a specific mobile originated message

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"MO Messages"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/momessages/{messageId}":{"get":{"tags":["MO Messages"],"summary":"Returns a specific mobile originated message","operationId":"GetMoMessage","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"messageId","in":"path","description":"Message Id","required":true,"schema":{"type":"string"}},{"name":"file","in":"query","description":"If true, result include Base64 encoded file","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoMessage"}},"application/json;IEEE754Compatible=false":{"schema":{"$ref":"#/components/schemas/MoMessage"}},"application/json;IEEE754Compatible=true":{"schema":{"$ref":"#/components/schemas/MoMessage"}},"application/xml":{"schema":{"$ref":"#/components/schemas/MoMessage"}},"text/plain":{"schema":{"$ref":"#/components/schemas/MoMessage"}},"application/octet-stream":{"schema":{"$ref":"#/components/schemas/MoMessage"}},"text/json":{"schema":{"$ref":"#/components/schemas/MoMessage"}},"text/xml":{"schema":{"$ref":"#/components/schemas/MoMessage"}}}}}}}},"components":{"schemas":{"MoMessage":{"required":["EmergencyState","MessageType","SentFromDevice"],"type":"object","properties":{"MessageId":{"type":"string","description":"A unique numeric identifier for the message (read only)","nullable":true},"MessageType":{"minLength":1,"type":"string","description":"A string representing the message type. Some typical message types are: AutomaticPositionReport, ManualPositionReport, ResponseToLocationRequest, SwitchOn, SystemTest, \r\nDiagnosticResponse, DeviceIdentifierResponse, Synchronise, FreeText, GeofenceCrossed, BeginMonitoring, EndMonitoring, CheckIn, CannedMessageSend, MessageAcknowledgement, \r\nPowerDown, Waypoint"},"Recipients":{"type":"string","description":"A comma separated list of address book lists to which the message will be sent if routable","nullable":true},"Message":{"type":"string","description":"A string representing the message","nullable":true},"Attachment":{"type":"string","description":"A Base64 encoded byte array representing an attachment. The maximum size is 64Kb. This field is deprecated, use File property instead","format":"byte","nullable":true},"Position":{"$ref":"#/components/schemas/Position"},"SequenceNumber":{"type":"integer","description":"An integer value that can be used by the client to determine the order of the message. This is normally incremented by the client for each message","format":"int32"},"ReceivedAtServer":{"type":"string","description":"The time when the message was processed by the platform","format":"date-time"},"SentFromDevice":{"type":"string","description":"A date and time that the device reports its position. This would normally be the GPS time but doesn't have to be","format":"date-time"},"EmergencyState":{"$ref":"#/components/schemas/EmergencyState"},"Properties":{"type":"object","additionalProperties":{"type":"string","nullable":true},"description":"A dictionary with additional message properties","nullable":true},"ContainingGeofences":{"type":"array","items":{"$ref":"#/components/schemas/ContainingGeofence"},"description":"A read only list of geofences that the device was inside of when it reported it's position","nullable":true},"File":{"type":"string","description":"A Base64 encoded byte array representing binary data. The maximum size is 4MB","format":"byte","nullable":true},"MimeType":{"type":"string","description":"MIME type for file data","nullable":true},"Filename":{"type":"string","description":"Filename for file data","nullable":true},"ETag":{"type":"string","description":"ETag value for handling optimistic concurrency control","nullable":true}},"additionalProperties":false},"Position":{"required":["Latitude","Longitude"],"type":"object","properties":{"Latitude":{"type":"number","description":"A floating point value for latitude (between -90 and +90)","format":"double"},"Longitude":{"type":"number","description":"A floating point value for longitude (between -180 and +180)","format":"double"},"Speed":{"type":"number","description":"A floating point value for speed in km/h","format":"double","nullable":true},"Heading":{"type":"number","description":"A floating point value for course in degrees (between 0 and 360)","format":"double","nullable":true},"Altitude":{"type":"number","description":"A floating point value for altitude in meters","format":"double","nullable":true},"GpsTimestamp":{"type":"string","description":"Date and time of the position fix","format":"date-time","nullable":true},"Accuracy":{"type":"string","description":"String value for overall position accuracy. One of the following formats should be used: \"DOP 3\", \"100 m\", \"6 sats\", \"2D fix\" or \"3 CEP radius\"","nullable":true},"LocationSource":{"$ref":"#/components/schemas/LocationSourceType"}},"additionalProperties":false},"LocationSourceType":{"enum":["Gps","Glonass","Doppler","Unknown","DGpsLt10m","GnssGt10m","AndroidLocationService","iOSLocationService","Beacon","BDAS","Beidou","Galileo","UserProvided","AlexaDeviceGeocodedAddress","IpGeolocation","HtmlGeolocation","WiFiPositioningSystem"],"type":"string"},"EmergencyState":{"enum":["None","Emergency","EmergencyCancel","NotSpecified"],"type":"string"},"ContainingGeofence":{"type":"object","properties":{"GeofenceId":{"type":"string","description":"ID of Geofence","nullable":true},"GeofenceName":{"type":"string","description":"Name of Geofence","nullable":true}},"additionalProperties":false,"description":"Read only object with details of geofences which a message was reported inside of"}}}}
```

## DELETE /V2/{tenantVarCode}/devices/{deviceId}/momessages/{messageId}

> Deletes a specific mo message

```json
{"openapi":"3.0.4","info":{"title":"GAP REST API Documentation V2","version":"v2"},"tags":[{"name":"MO Messages"}],"paths":{"/V2/{tenantVarCode}/devices/{deviceId}/momessages/{messageId}":{"delete":{"tags":["MO Messages"],"summary":"Deletes a specific mo message","parameters":[{"name":"tenantVarCode","in":"path","description":"Tenant Var Code","required":true,"schema":{"type":"string"}},{"name":"deviceId","in":"path","description":"Device Id","required":true,"schema":{"type":"string"}},{"name":"messageId","in":"path","description":"Id of message to delete","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}}}}
```




---

[Next Page](https://docs.globalalerting.com/llms-full.txt/1)

