# Subscribe to an Article

## Overview
The Subscribe to an Article API allows eGain users, authenticated customers and agents to subscribe and receive notifications about changes to an Article.
## Prerequisites
* Notifications are sent only if the following conditions are met:
  * The Article content has been modified since the last published version.
  * The attachment list has been modified since the last published version.
  * The author has checked the "Include Article in new and modified Article list" option while publishing the Article.
* For the Subscribe to an Article API to execute successfully:
  * The Article must be in the portal.
  * The user must have provided an email address.

## Permissions
* Agent Permissions: The following permissions are required if the user is an agent:
  * If the Article has Access Tags:
    * The Article must be available for the agent's current user profile.
  * If the Article has Publish Views:
    * At least one edition of the Article must be available for the agent's current user profile.
  * If the Article has filters and the "tags query parameter" is provided:
    * The Article filters must match the provided tags or tag groups.
* Customer Permissions: The following permissions are required if the user is a customer:
  * If the Article has Access Tags:
    * The portal must have a default user profile
    * The Article must be available for the portal's default user profile.
  * If the Article has Publish Views:
    * The portal must have a default user profile
    * At least one edition must be available for the portal's default user profile.
  * If the Article has filters and the "tags query parameter" is provided, then the Article filters must match the provided tags or tag groups.

Endpoint: PUT /portals/{portalID}/articles/{articleID}/subscribe
Security: oAuthUser, oAuthOnBehalfOfUser, oAuthCustomer, oAuthOnBehalfOfCustomer

## Description:

  - `Overview` ()
    The Subscribe to an Article API allows eGain users, authenticated customers and agents to subscribe and receive notifications about changes to an Article.

  - `Prerequisites` ()
    Notifications are sent only if the following conditions are met:The Article content has been modified since the last published version.The attachment list has been modified since the last published version.The author has checked the "Include Article in new and modified Article list" option while publishing the Article.For the Subscribe to an Article API to execute successfully:The Article must be in the portal.The user must have provided an email address.

  - `Permissions` ()
    Agent Permissions: The following permissions are required if the user is an agent:If the Article has Access Tags:The Article must be available for the agent's current user profile.If the Article has Publish Views:At least one edition of the Article must be available for the agent's current user profile.If the Article has filters and the "tags query parameter" is provided:The Article filters must match the provided tags or tag groups.Customer Permissions: The following permissions are required if the user is a customer:If the Article has Access Tags:The portal must have a default user profileThe Article must be available for the portal's default user profile.If the Article has Publish Views:The portal must have a default user profileAt least one edition must be available for the portal's default user profile.If the Article has filters and the "tags query parameter" is provided, then the Article filters must match the provided tags or tag groups. ## Versioning
This operation is available in API version `4.0`.

## Security:

  - `oAuthUser` (unknown)
    oauth2 scopes: https://api.egain.cloud/auth/knowledge.portalmgr.manage

  - `oAuthOnBehalfOfUser` (unknown)
    oauth2 scopes: https://api.egain.cloud/auth/knowledge.portalmgr.onbehalfof.manage

  - `oAuthCustomer` (unknown)
    oauth2 scopes: https://api.egain.cloud/auth/knowledge.portalmgr.manage

  - `oAuthOnBehalfOfCustomer` (unknown)
    oauth2 scopes: https://api.egain.cloud/auth/knowledge.portalmgr.onbehalfof.manage

## Path parameters:

  - `portalID` (string, required)
    The ID of the portal being accessed.<br><br>A portal ID is composed of a 2-4 letter prefix, followed by a dash and 4-15 digits.

  - `articleID` (string, required)
    The ID of the Article.<br><br>An Article ID is composed of a 2-4 letter prefix followed by a dash and 4-15 digits.

## Header parameters:

  - `x-egain-activity-id` (string)
    A unique numeric interaction identifier from eGain.

  - `x-ext-integration-id` (string)
    The unique numeric identifier for a tenant, used in self-service functionality as well as third-party integrations.<br><br>*Note: The x-ext-integration-id and x-ext-interaction-id headers must always be provided together and cannot be supplied independently.<br><br>The x-egain-activity-id may be provided on its own, or it may be provided along with both x-ext-integration-id and x-ext-interaction-id.*

  - `x-ext-interaction-id` (string)
    A unique interaction identifier from other CRM applications.<br><br>*Note: The x-ext-integration-id and x-ext-interaction-id headers must always be provided together and cannot be supplied independently.<br><br>The x-egain-activity-id may be provided on its own, or it may be provided along with both x-ext-integration-id and x-ext-interaction-id.*

  - `Accept-Language` (string, required)
    The Language locale accepted by the client (used for locale specific fields in resource representation and in error responses).

## Response 204:

  - `204` (unknown)
    No Content

## Response 400:

  - `400` (unknown)
    Bad Request

## Response 400 fields (application/json):

  - `code` (string, required)
    A string that follows the pattern *{integer}-{integer}*.
The first *{integer}* is the http status code.  This code as a whole is unique.
* For example, error codes "400-101" and "404-101" are distinctly different.

  - `developerMessage` (string, required)
    A summary of the error.

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly messages are only supported by some APIs.
* The client must explicitly request UI friendly messages by passing the *X-egain-error-message=yes* header.

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `code` (string, required)
    A string that follows the pattern *{integer}-{integer}*.
The first *{integer}* is the http status code.  This code as a whole is unique.
* For example, error codes "400-101" and "404-101" are distinctly different.

  - `developerMessage` (string, required)
    A summary of the error.

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly messages are only supported by some APIs.
* The client must explicitly request UI friendly messages by passing the *X-egain-error-message=yes* header.

## Response 403:

  - `403` (unknown)
    Forbidden

## Response 403 fields (application/json):

  - `code` (string, required)
    A string that follows the pattern *{integer}-{integer}*.
The first *{integer}* is the http status code.  This code as a whole is unique.
* For example, error codes "400-101" and "404-101" are distinctly different.

  - `developerMessage` (string, required)
    A summary of the error.

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly messages are only supported by some APIs.
* The client must explicitly request UI friendly messages by passing the *X-egain-error-message=yes* header.

## Response 404:

  - `404` (unknown)
    Not Found

## Response 404 fields (application/json):

  - `code` (string, required)
    A string that follows the pattern *{integer}-{integer}*.
The first *{integer}* is the http status code.  This code as a whole is unique.
* For example, error codes "400-101" and "404-101" are distinctly different.

  - `developerMessage` (string, required)
    A summary of the error.

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly messages are only supported by some APIs.
* The client must explicitly request UI friendly messages by passing the *X-egain-error-message=yes* header.

## Response 406:

  - `406` (unknown)
    Not acceptable

## Response 406 fields (application/json):

  - `code` (string, required)
    A string that follows the pattern *{integer}-{integer}*.
The first *{integer}* is the http status code.  This code as a whole is unique.
* For example, error codes "400-101" and "404-101" are distinctly different.

  - `developerMessage` (string, required)
    A summary of the error.

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly messages are only supported by some APIs.
* The client must explicitly request UI friendly messages by passing the *X-egain-error-message=yes* header.

## Response 500:

  - `500` (unknown)
    Internal server error

## Response 500 fields (application/json):

  - `code` (string, required)
    A string that follows the pattern *{integer}-{integer}*.
The first *{integer}* is the http status code.  This code as a whole is unique.
* For example, error codes "400-101" and "404-101" are distinctly different.

  - `developerMessage` (string, required)
    A summary of the error.

  - `details` (array)

  - `details.key` (string, required)

  - `details.value` (string)

  - `userMessage` (string)
    UI friendly messages are only supported by some APIs.
* The client must explicitly request UI friendly messages by passing the *X-egain-error-message=yes* header.

## Response 400 examples:

  - `Required Attribute missing` (unknown)
    Required query parameter is missing.

  - `Unallowed attribute value` (unknown)
    One of the attributes has a value which is not allowed.

## Response 401 examples:

  - `Invalid Authorization` (unknown)
    Invalid or expired authorization. Generate a new authorization header and try again.

## Response 403 examples:

  - `Required Scope Missing` (unknown)
    User doesn't have the required scope to call this API. Refer to the API documentation regarding user scope assignment for more information.

## Response 404 examples:

  - `Resource Not Found` (unknown)
    Resource not found.

## Response 406 examples:

  - `Not Acceptable` (unknown)

## Response 500 examples:

  - `Internal Server Error` (unknown)

