# Entitlements API Reference

## Defining some concepts&#x20;

### Entitlements&#x20;

Entitlements are any type of content that a user might want to access, for example:&#x20;

* eEdition Access (code: `eedition`)&#x20;
* iPad App (code: `ipad`) &#x20;
* Benefits (code: `benefits`) &#x20;
* Rewards (code: `rewards`)&#x20;

If you are using Naviga's mobile apps please find the info [here](https://doapp.navigaglobal.com/hc/en-us/articles/360044397212-MG2-Paywall-Integration) on how to setup entitlement.

### Access Levels&#x20;

Access Levels illustrate a subscription position to a given Entitlement, for example:&#x20;

* Premium: You are entitled to access content.&#x20;
* Upgrade: You are not entitled to access content but you can upgrade your subscription to get access.&#x20;
* Purchase: You are not entitled to access content and you cannot upgrade your subscription. You need purchase a new one instead.&#x20;

### Household Subscription Levels&#x20;

To determine access to a specific Entitlement, each Subscription is coded with a “Household Subscription Level”, which is a numeric value that it’s used to calculate its access level. &#x20;

## Integration Points&#x20;

### Access page&#x20;

#### What is this?&#x20;

The Access page is a central place where the users can land from different web pages, so they can be redirected to different sites depending on their access level and the Entitlement they are trying to access to.&#x20;

If the user is logged-in, an authorization process is carried out behind the scenes followed by a redirect.&#x20;

In contrast, if the user is not logged-in, the Access page shows up for the user, exposing different actions the user can do, like starting a login process, a new subscription purchase, a new registration flow, an existing subscription activation, etc.&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MHtWY24ZsNeJjetCpNF%2Fuploads%2FkeDFn70YSKkE8TVzqSsU%2Ffile.png?alt=media)

#### Requirements&#x20;

The Access page needs to receive two query string parameters to operate:&#x20;

* EntitlementCode: It’s the code that identifies the Entitlement.&#x20;
* SiteCode: It’s the code that identifies the publication the user is willing to access.&#x20;

Each Entitlement might be linked to one or any many publications. Settings such as URLs, credentials, etc. are based on that combination.&#x20;

In both scenarios, if the parameter is not provided, the Access page will use a default value which might cause undesired behaviors.&#x20;

The possible values for each parameter will be provided in a separated client implementation document.&#x20;

### Subscribe API&#x20;

#### What is this?&#x20;

The Subscribe API is a centralized API used across every Naviga Client, not only for our applications but client’s applications. Among its functionalities, it exposes endpoints to handle Users and Entitlements.&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MHtWY24ZsNeJjetCpNF%2Fuploads%2FX6KIRavtjIxt5PqmQ2PH%2Ffile.png?alt=media)

#### Requirements&#x20;

The Subscribe API needs to receive five header parameters to operate:&#x20;

* `X-MediaGroupCode`, `X-ClientCode`, `X-PaperCode`: Three parameters used by the API to identify the tenant to use.&#x20;
* `X-SourceSystem`: The string used to identify who the consumer is.&#x20;
* `Authorization:` JSON web token used for security purposes.&#x20;
* `X-CallerId`: Customer Registration Id that belongs to the user that triggers the action - optional parameter

Every parameter listed above is a required field, except `X-CallerId` is optional.

*Note: These parameter values will be provided in a separated client implementation document.*&#x20;

## Integration Types&#x20;

### Full Subscribe API&#x20;

This is our **recommended** option if the Entitlement website/application wants to handle authentication (via the Authentication System) and authorization (via the Subscribe API) processes.&#x20;

In this case, the user authentication ticket value and expiration will be managed on the Entitlement end.&#x20;

*Note: If Naviga is the Authentication System, the integration point is also the Subscribe API.*&#x20;

#### Deployment Diagram&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MHtWY24ZsNeJjetCpNF%2Fuploads%2FFbEMfiS8OW3v11KqdhFW%2Ffile.png?alt=media)

#### Use Cases&#x20;

**Use Case 1 (Non-Logged-In user wants to access content)**&#x20;

**Pre-Conditions**&#x20;

* The user is in a logged-out state in the Entitlement website/app.&#x20;
* The user has at least one subscription linked in Subscriber Concierge.&#x20;

**Flow**&#x20;

1. The **User** enters the Entitlement website/app.&#x20;
2. The **Entitlement website/app** asks the user to login. \
   \&#xNAN;*Note: The login process might vary depending on the Authentication System that the client is integrated to.*&#x20;
3. The **User** enters their credentials and finish the login process.\
   \&#xNAN;*Note: Remember that if the Authentication System is Naviga, Subscribe API has the necessary endpoints to perform the Authentication.*&#x20;
4. The **Entitlement website/app** creates an authentication ticket on their end by using User ID.&#x20;
5. The **Entitlement website/app** checks their access level through Subscribe API (Digital Access endpoint) with User ID and Code.&#x20;
6. **Subscribe API** returns Access level (See section Access Levels in Defining some concepts). Also, if Access level = Premium, it creates an Access event.&#x20;
7. The **Entitlement website/app** analyzes the response and, only if the access level is Premium, the Entitlement Content is displayed. &#x20;

**Use Case 2 (Logged-In user wants to access content)**&#x20;

**Pre-Conditions**&#x20;

* The user is in a logged-in state in the Entitlement website/app.&#x20;
* The user has at least one subscription linked in Subscriber Concierge.&#x20;

**Flow**&#x20;

1. The **User** enters the Entitlement website/app. Entitlement&#x20;
2. The **Entitlement website/app** recognizes the user is already logged-in.&#x20;
3. The **Entitlement website/app** checks their access level through Subscribe API (Digital Access endpoint) with User ID and Entitlement Code.&#x20;
4. **Subscribe API** returns Access level (See section Access Levels in Defining some concepts). Also, if Access level = Premium, it creates an Access event.&#x20;
5. The **Entitlement website/app** analyzes the response and, only if the access level is Premium, the Entitlement Content is displayed. &#x20;

**Use Case 3 (User wants to access web content from eNotify)**&#x20;

**Pre-Conditions**&#x20;

* The user has received an eNotify Email.&#x20;
* The user has at least one subscription linked in Subscriber Concierge.&#x20;

Flow&#x20;

1. The **User** their mailbox and reads eNotify email. \
   Note: Naviga sends daily emails (eNotify) to subscribers to access their Entitlements.&#x20;
2. **eNotify email** will contain a link to redirect the user to the Entitlement website.  \
   \&#xNAN;*Note: In the case the Entitlement website allows it, eNotify could pass UserID and Entitlement Code via Querystring.*  \
   *E.g. https\://\[EDITIONLINK]/?EntitlementCode=\[ABCDEF]\&custregid=\[XXXXXXXX]*&#x20;
3. The **User** clicks the eNotify link and gets redirected to the Entitlement website.&#x20;
4. The **Entitlement website** recognizes the user by… \
   A. QueryString parameters provided by Naviga: Go to step #5. \
   B. Previously created authentication ticket: Go to step #5. \
   \&#xNAN;*Note: If the user cannot be authenticated, the website needs to ask the user to login.*&#x20;
5. The **Entitlement website** checks their access level through Subscribe API (Digital Access endpoint) with User ID and Entitlement Code.&#x20;
6. **Subscribe API** returns Access level (See section Access Levels in Defining some concepts). Also, if Access level = Premium, it creates an Access event.&#x20;
7. The **Entitlement website/app** analyzes the response and, only if the access level is Premium, the Entitlement Content is displayed. &#x20;

### Hybrid (Access Page + Subscribe API)&#x20;

For those scenarios where the Entitlement website/application cannot handle user management flows, you can rely on our Access page which is capable to authenticate and authorize users (the authentication ticket value and expiration will be managed between Naviga and the Authentication System). &#x20;

After performing an authentication and authorization process successfully, the Access page returns a **token** that should be stored on the Entitlement end for future Access verification via the Subscribe API.&#x20;

#### Deployment Diagram&#x20;

![](https://firebasestorage.googleapis.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MHtWY24ZsNeJjetCpNF%2Fuploads%2FmKNgs9cRyzd0xkn9B2rv%2Ffile.png?alt=media)

#### **Use cases**&#x20;

**Use Case 1 (User enters wants to access content – NO token)**&#x20;

**Pre-Conditions**&#x20;

* The user has at least one subscription linked in Subscriber Concierge.&#x20;
* The user doesn’t have a token in the Entitlement website/app.&#x20;

**Flow**&#x20;

1. The **User** enters the Entitlement website/app.&#x20;
2. The **User** gets redirected to the Access page because it doesn’t have any generated token previously.\
   \&#xNAN;*Note: Access page needs to receive the proper Entitlement Code via QueryString otherwise it would use a default one.*&#x20;
3. The **Access page** asks the user to log in. \
   \&#xNAN;*Note: If the user is already logged in, it goes to Step #5 directly.*&#x20;
4. The **User** enters their credentials and finish the login process. &#x20;
5. The **Access page** checks their access level for the given Entitlement through Subscribe API (Digital Access endpoint) with User ID and Entitlement Code.&#x20;
6. **Subscribe API** returns Access level (See section Access Levels in Defining some concepts) and token. Also, if Access level = Premium, it creates an Access event.&#x20;
7. The **Access page** analyzes the response and, only if the access level is Premium, it redirects the user to Entitlement website, using the token as a QueryString parameter.&#x20;
8. The **Entitlement website** stores the token for future verification and displays content to user.&#x20;

**Use Case 2 (User enters wants to access content – Valid token)**&#x20;

**Pre-Conditions**&#x20;

* The user has at least one subscription linked in Subscriber Concierge.&#x20;
* The user does have a valid token in the Entitlement website/app.&#x20;

**Flow**&#x20;

1. The **User** enters the Entitlement website/app.&#x20;
2. The **Entitlement site** calls Subscribe API (DigitalAccess/token endpoint) sending the token.&#x20;
3. **Subscribe API** indicates whether the user is authorized. If so, it also creates an Access event.&#x20;
4. The **Entitlement Site** displays content to the user.&#x20;

**Use Case 3 (User enters wants to access content – Invalid/Expired token)**&#x20;

**Pre-Conditions**&#x20;

* The user has at least one subscription linked in Subscriber Concierge.&#x20;
* The user have an invalid/expired token in the Entitlement website/app.&#x20;

**Flow**&#x20;

1. The **User** enters the Entitlement website/app.&#x20;
2. The **Entitlement site** calls Subscribe API (DigitalAccess/token endpoint) sending the token.&#x20;
3. **Subscribe API** returns the user is not authorized.&#x20;
4. The **Entitlement site** redirects the User to the Access page to generate a new token. (Use case 1, Step 2).&#x20;

**Use Case 4 (User wants to access web content from eNotify)**&#x20;

**Pre-Conditions**&#x20;

* The user has received an eNotify Email.&#x20;
* The user has at least one subscription linked in Subscriber Concierge.&#x20;

**Flow**&#x20;

1. The **User** their mailbox and reads eNotify email. \
   \&#xNAN;*Note: Naviga sends daily emails (eNotify) to subscribers to access their Entitlements.*&#x20;
2. **eNotify emai**l will contain a link to redirect the user to the Naviga Access Page. &#x20;
3. The **User** clicks the eNotify link and gets redirected to the Naviga Access Page. (Use Case 1, Step 2)&#x20;

## Technical Specs&#x20;

### Access Page&#x20;

The access page could receive multiple query string parameters.&#x20;

Note: To avoid any kind of issues, please make sure you use URL Encode on every parameter.&#x20;

#### Required parameters&#x20;

`EntitlementCode`: The code that identifies the Entitlement. (See section “Defining some concepts” for more information). Alphanumeric.&#x20;

`SiteCode:` The code that identifies the publication the user is willing to access. Alphanumeric.&#x20;

URL example:  <https://myNavigaURL.com/Access?EntitlementCode=eEdition&SiteCode=NAV>&#x20;

#### Optional parameters&#x20;

`FromURL`: The URL the user should be redirected after the authorization process, instead of the URL provided by the Subscribe API. &#x20;

`Mode`: The mode the Update Subscription page should load with if the user has Access Level = Upgrade. Possible values:&#x20;

* *Add*: The page will provide products to add to the subscription.&#x20;
* *Up*: The page will provide different offers to change the subscription.&#x20;

`PID`: The promotion ID that will be sent as a part of the URL for Subscription Panel (Purchase flow)&#x20;

`ZipCode`: The Zip Code that will be sent as a part of the URL for Subscription Panel (Purchase flow)&#x20;

### Subscribe API&#x20;

#### Authorize Digital Access&#x20;

This is the most important endpoint for this integration. It evaluates whether a user has access to Entitlement content.&#x20;

#### **Request**&#x20;

| Method | URL              |
| ------ | ---------------- |
| `POST` | `/DigitalAccess` |

| Type                                                                                                         | Params                                                                                                                                                                                                                                                                                                               | Values                                                                                                                         | Required?                                                                                           |
| ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
| <p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>BODY </p><p>BODY </p><p>BODY </p> | <p><code>X-MediaGroupCode</code> </p><p><code>X-ClientCode</code> </p><p><code>X-PaperCode</code> </p><p><code>Authorization</code> </p><p><code>X-SourceSystem</code> </p><p><code>X-CallerId</code> </p><p><code>CustomerRegistrationId</code> </p><p><code>EntitlementCode</code> </p><p><code>Device</code> </p> | <p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p> | <p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>Yes </p><p>yes </p> |

`CustomerRegistrationId`: User ID returned by the Authentication System.&#x20;

`EntitlementCode`: Code that identifies the entitlement.&#x20;

`Device`: User Agent of the device the user is using to access content.&#x20;

#### **Response**&#x20;

| Status | Response                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200`  | <p><code>{</code> </p><p>  <code>"Code": 0,</code> </p><p>  <code>"Errors": \[</code> </p><p>    <code>{</code> </p><p>      <code>"Message": "string",</code> </p><p>      <code>"Code": "string",</code> </p><p>      <code>"Type": {</code> </p><p>        <code>"Id": 0,</code> </p><p>        <code>"Code": "string"</code> </p><p>      <code>},</code> </p><p>      <code>"ErrorSource": "string"</code> </p><p>    <code>}</code> </p><p>  <code>],</code> </p><p>  <code>"Result": {</code> </p><p>    <code>"IsAuthorized": true,</code> </p><p>    <code>"eEditionUrl": "string",</code> </p><p>    <code>"AccessLevel": "string",</code> </p><p>    <code>"Token": "string"</code> </p><p>  <code>}</code> </p><p><code>}</code> </p> |
| `400`  | `{"error":"Authorization is missing."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `400`  | `{"error":"X-SourceSystem is missing."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `400`  | `{"error":"request cannot be null."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `401`  | `{"error":"Invalid X-AuthToken."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `401`  | `{"error":"Invalid X-SourceSystem."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| `500`  | `{"error":"Something went wrong. Please try again later."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |

#### Authorize Token&#x20;

Only used in Hybrid Approach. It verifies whether the token generated by Naviga Access page is still valid.&#x20;

#### Request&#x20;

| Method | URL                    |
| ------ | ---------------------- |
| `POST` | `/DigitalAccess/Token` |

| Type                                                                                 | Params                                                                                                                                                                                                                               | Values                                                                                             | Required?                                                                     |
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| <p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>BODY </p> | <p><code>X-MediaGroupCode</code> </p><p><code>X-ClientCode</code> </p><p><code>X-PaperCode</code> </p><p><code>Authorization</code> </p><p><code>X-SourceSystem</code> </p><p><code>X-CallerId</code> </p><p><code>Token</code> </p> | <p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p> | <p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p> |

Token: Token created on an Entitlement Access authorization.&#x20;

#### Response&#x20;

| Status | Response                                                                                                                                                                                                                                                                                                                                                      |
| ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200`  | <p><code>{</code> <br>  <code>"Code": 0,</code> <br>  <code>"Errors": \[</code> <br>    <code>{</code> <br>      <code>"Code": "string",</code> <br>      <code>"Message": "string"</code> <br>    <code>}</code> <br>  <code>],</code> <br>  <code>"Result": {</code> <br>    <code>"IsAuthorized": true</code> <br>  <code>}</code> <br><code>}</code> </p> |
| `400`  | `{"error":"Authorization is missing."}`                                                                                                                                                                                                                                                                                                                       |
| `400`  | `{"error":"X-SourceSystem is missing."}`                                                                                                                                                                                                                                                                                                                      |
| `400`  | `{"error":"request cannot be null."}`                                                                                                                                                                                                                                                                                                                         |
| `401`  | `{"error":"Invalid X-AuthToken."}`                                                                                                                                                                                                                                                                                                                            |
| `401`  | `{"error":"Invalid X-SourceSystem."}`                                                                                                                                                                                                                                                                                                                         |
| `500`  | `{"error":"Something went wrong. Please try again later."}`                                                                                                                                                                                                                                                                                                   |

#### Authenticate User &#x20;

Authenticates the user in the proper Authentication System and returns the data necessary to create the proper cookies. &#x20;

#### Request &#x20;

| Method | URL             |
| ------ | --------------- |
| `POST` | `/Authenticate` |

| Type                                                                                             | Params                                                                                                                                                                                                                                                                | Values                                                                                                           | Required?                                                                                |
| ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| <p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>BODY </p><p>BODY </p> | <p><code>X-MediaGroupCode</code> </p><p><code>X-ClientCode</code> </p><p><code>X-PaperCode</code> </p><p><code>Authorization</code> </p><p><code>X-SourceSystem</code> </p><p><code>X-CallerId</code> </p><p><code>LoginName</code> </p><p><code>Password</code> </p> | <p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p> | <p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p> |

`LoginName`: Login name or email of the user. &#x20;

`Password`: User’s password. &#x20;

#### Response&#x20;

| Status | Response                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200`  | <p><code>{</code>  </p><p>  <code>"Code": 0,</code>  </p><p>  <code>"Errors": \[</code>  </p><p>    <code>{</code>  </p><p>      <code>"Message": "string",</code>  </p><p>      <code>"Code": "string",</code>  </p><p>      <code>"Type": {</code>  </p><p>        <code>"Id": 0,</code>  </p><p>        <code>"Code": "string"</code>  </p><p>      <code>},</code>  </p><p>      <code>"ErrorSource": "string"</code>  </p><p>    <code>}</code>  </p><p>  <code>],</code>  </p><p>  <code>"Result": {</code>  </p><p>    <code>"Authenticated": true,</code>  </p><p>    <code>"CookieContent": \[</code>  </p><p>      <code>{</code>  </p><p>        <code>"Name": "string",</code>  </p><p>        <code>"Content": "string"</code>  </p><p>      <code>}</code>  </p><p>    <code>],</code>  </p><p>    <code>"CustomerRegistrationId": "string",</code>  </p><p>    <code>"EncryptedCustomerRegistrationId": "string"</code>  </p><p>  <code>}</code>  </p><p><code>}</code>  </p> |
| `400`  | `{"error":"Authorization is missing."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `400`  | `{"error":"X-SourceSystem is missing."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `400`  | `{"error":"request cannot be null."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `401`  | `{"error":"Invalid X-AuthToken."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `401`  | `{"error":"Invalid X-SourceSystem."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `500`  | `{"error":"Something went wrong. Please try again later."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |

#### Initiate Forgot Password&#x20;

Sends an email to the user with a link to reset the password.&#x20;

#### Request&#x20;

| Method | URL               |
| ------ | ----------------- |
| `POST` | `/ForgotPassword` |

| Type                                                                                             | Params                                                                                                                                                                                                                                                                 | Values                                                                                                           | Required?                                                                                |
| ------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| <p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>HEAD </p><p>BODY </p><p>BODY </p> | <p><code>X-MediaGroupCode</code> </p><p><code>X-ClientCode</code> </p><p><code>X-PaperCode</code> </p><p><code>Authorization</code> </p><p><code>X-SourceSystem</code> </p><p><code>X-CallerId</code> </p><p><code>LoginName</code> </p><p><code>ReturnUrl</code> </p> | <p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p><p>string </p> | <p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p><p>yes </p> |

`LoginName`: Login name or email of the user.&#x20;

`ReturnURL`: Where the user has to be redirected after the password is changed.&#x20;

#### Response&#x20;

| Status | Response                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `200`  | <p><code>Response will be an object containing the list of users</code> </p><p><code>{</code> <br>  <code>"Code": 0,</code> <br>  <code>"Errors": \[</code> <br>    <code>{</code> <br>      <code>"Message": "string",</code> <br>      <code>"Code": "string",</code> <br>      <code>"Type": {</code> <br>        <code>"Id": 0,</code> <br>        <code>"Code": "string"</code> <br>      <code>}</code> <br>    <code>}</code> <br>  <code>],</code> <br>  <code>"Result": {</code> <br>    <code>"PasswordResetLinkSent": true</code> <br>  <code>}</code> <br><code>}</code> </p> |
| `400`  | `{"error":"Authorization is missing."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `400`  | `{"error":"X-SourceSystem is missing."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `400`  | `{"error":"request cannot be null."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `401`  | `{"error":"Invalid Authorization."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `401`  | `{"error":"Invalid X-SourceSystem."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `500`  | `{"error":"Something went wrong. Please try again later."}`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |

##


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.navigaglobal.com/naviga-subscribe/additional-resources/subscribe-apis/entitlements-api-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
