title: Licenses API v2.0 language_tabs:
Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.
Base URLs:
GET /licenses/v2.0/license/{licenseId}/feature/{id}
Gets a specific feature associated with a license by id.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | integer(int32) | true | The feature id. |
| licenseId | path | integer(int32) | true | The license id. |
Example responses
200 Response
{
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"description": {
"type": "string",
"description": "The feature description.",
"nullable": true
},
"id": {
"type": "integer",
"description": "The feature identifier.",
"format": "int32"
},
"isEnabled": {
"type": "boolean",
"description": "Specifies whether the feature is enabled."
},
"key": {
"type": "string",
"description": "The unique feature key.",
"format": "guid"
},
"name": {
"type": "string",
"description": "The feature name."
},
"tags": {
"type": "array",
"description": "All tags associated with the feature.",
"items": {
"type": "string"
}
}
}
}
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | Feature |
| 401 | Unauthorized | none | ProblemDetails |
| 404 | Not Found | none | ProblemDetails |
GET /licenses/v2.0/license/{licenseId}/feature
Search for features associated with a license.
The Zywave API search is implemented using OData Version 4.0.1.
The following OData filter operations are supported by the Zywave API; each is accompanied by an example request.
| Operation | Example Request | Returns |
|---|---|---|
| startswith | startswith(Name,'Zyw') | Returns all features where the name starts with 'Zyw' |
| endswith | endswith(Name,'wave') | Returns all features where the name ends with 'wave' |
| contains | contains(Name,'wave') | Returns all features where the name contains 'wave' |
| Equals | Name eq 'Zywave' | Returns all features named Zywave |
| Not Equals | Name ne 'Zywave' | Returns all features not named Zywave |
| In | Name in ('Zyw', 'ave') | Returns all features with the names 'Zyw' or 'ave'. |
| Not | not startswith(Name,'Zyw') | Returns all features with a name that doesn't start with ‘Zyw’ |
The Zywave API also supports the And operation which will allow for multiple search criteria to be applied to a single request. For example, the following filter will return all enabled features with a name containing "Zywave";
contains(Name,'Zywave') and IsEnabled eq true
The orderby operation also supports multiple levels of ordering. For example, to order the results by name and description, the following can be used;
Name asc, Description asc
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| licenseId | path | integer(int32) | true | The license id. |
| $filter | query | string | false | The search criteria for the request. To view a list of supported search operations and the properties which can be searched see the documentation above. |
| $orderBy | query | string | false | Defines the order in which the results are returned. To view a list of properties that can be used in ordering see the documentation above. |
| $skip | query | integer(int32) | false | The number of total records to skip before displaying the first result. For example, if there are 10 total records and $skip is set to 5 the first record shown in the response will be the 6th record returned. In order to avoid an error please ensure that the $skip is dividable by the $top. |
| $top | query | integer(int32) | false | The total number of records returned in the response. In order to avoid an error please ensure that the $skip is dividable by the $top. |
Example responses
200 Response
{
"type": "object",
"additionalProperties": false,
"properties": {
"hasMoreResults": {
"type": "boolean",
"description": "A value indicating whether the larger result set has more results."
},
"skip": {
"type": "integer",
"description": "A value indicating how many of the previous values in the larger result set were omitted.",
"format": "int32"
},
"take": {
"type": "integer",
"description": "The number of records retrieved from larger result set.",
"format": "int32"
},
"totalCount": {
"type": "integer",
"description": "The total number of records in the larger result set.",
"format": "int32"
},
"items": {
"type": "array",
"description": "The records retrieved from the larger result set.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"description": {
"type": "string",
"description": "The feature description.",
"nullable": true
},
"id": {
"type": "integer",
"description": "The feature identifier.",
"format": "int32"
},
"isEnabled": {
"type": "boolean",
"description": "Specifies whether the feature is enabled."
},
"key": {
"type": "string",
"description": "The unique feature key.",
"format": "guid"
},
"name": {
"type": "string",
"description": "The feature name."
},
"tags": {
"type": "array",
"description": "All tags associated with the feature.",
"items": {
"type": "string"
}
}
}
}
}
}
}
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | PagedResultOfFeature |
| 400 | Bad Request | none | ValidationProblemDetails |
| 401 | Unauthorized | none | ProblemDetails |
| 404 | Not Found | none | ProblemDetails |
GET /licenses/v2.0/featurelicense
Gets a dictionary of feature and license data for the active profile.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| effectiveDateTime | query | string(date-time) | false | Restricts feature and license data to only licenses active at the specified time. If omitted, all feature and license data is returned. |
| includeDisabled | query | boolean | false | Determines if disabled features are to be included. Defaults to false. |
Example responses
200 Response
{
"d597bec5-4aa2-4ce3-b8f2-51fed13147a3": {
"Licenses": [
{
"EndDateTime": "2026-08-12T09:12:30.3721545+00:00",
"Id": 0,
"Name": "string",
"Quantity": 10,
"QuantityTypeId": null,
"StartDateTime": "2026-08-05T09:12:30.3721703+00:00"
}
],
"Description": "string",
"Id": 0,
"IsEnabled": true,
"Key": "59078c2d-1bef-4821-9ff8-f0fbcc54bc19",
"Name": "string"
}
}
401 Response
{
"type": "object",
"additionalProperties": {
"nullable": true
},
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
}
}
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | A dictionary of feature and license data for the active profile. | Inline |
| 401 | Unauthorized | none | ProblemDetails |
Status Code 200
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| » additionalProperties | any | false | none | none |
allOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »» anonymous | Feature | false | none | none |
| »»» description | string|null | false | none | The feature description. |
| »»» id | integer(int32) | false | none | The feature identifier. |
| »»» isEnabled | boolean | false | none | Specifies whether the feature is enabled. |
| »»» key | string(guid) | false | none | The unique feature key. |
| »»» name | string | true | none | The feature name. |
| »»» tags | [string] | false | none | All tags associated with the feature. |
and
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| »» anonymous | object | false | none | none |
| »»» licenses | [License] | false | none | All licenses that have granted the feature. |
| »»»» endDateTime | string(date-time)|null | false | none | The effective end time for the license. |
| »»»» id | integer(int32) | false | none | The license identifier. |
| »»»» name | string | true | none | The license name. |
| »»»» quantity | integer(int32) | false | none | The quantity supplied by the license, if applicable. |
| »»»» startDateTime | string(date-time) | false | none | The effective start time for the license. |
GET /licenses/v2.0/license/{id}
Gets a specific license by id.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | integer(int32) | true | The license id. |
Example responses
200 Response
{
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"endDateTime": {
"type": "string",
"description": "The effective end time for the license.",
"format": "date-time",
"nullable": true
},
"id": {
"type": "integer",
"description": "The license identifier.",
"format": "int32"
},
"name": {
"type": "string",
"description": "The license name."
},
"quantity": {
"type": "integer",
"description": "The quantity supplied by the license, if applicable.",
"format": "int32"
},
"startDateTime": {
"type": "string",
"description": "The effective start time for the license.",
"format": "date-time"
}
}
}
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | License |
| 401 | Unauthorized | none | ProblemDetails |
| 404 | Not Found | none | ProblemDetails |
GET /licenses/v2.0/license
Search for licenses.
The Zywave API search is implemented using OData Version 4.0.1.
The following OData filter operations are supported by the Zywave API; each is accompanied by an example request.
| Operation | Example Request | Returns |
|---|---|---|
| startswith | startswith(Name,'Zyw') | Returns all licenses where the name starts with 'Zyw' |
| endswith | endswith(Name,'wave') | Returns all licenses where the name ends with 'wave' |
| contains | contains(Name,'wave') | Returns all licenses where the name contains 'wave' |
| Equals | Name eq 'Zywave' | Returns all licenses named Zywave |
| Not Equals | Name ne 'Zywave' | Returns all licenses not named Zywave |
| Greater Than | StartDateTime gt 2020-04-01T10:00:00.000Z | Returns all licenses with a StartDateTime after 10:00: on April 1st |
| Greater Than or equal | StartDateTime ge 2020-04-01T10:00:00.000Z | Returns all licenses with a StartDateTime after 10:00 on April 1st. Note: Timestamp matters |
| Less Than | StartDateTime lt 2020-04-01T10:00:00.000Z | Returns all licenses with a StartDateTime before 10:00 on April 1st |
| Less Than or equal | StartDateTime le 2020-04-01T10:00:00.000Z | Returns all licenses with a StartDateTime at or before 10:00 on April 1st. Note: Timestamp matters |
| In | Name in ('Zyw', 'ave') | Returns all licenses with the names 'Zyw' or 'ave'. |
| Not | not startswith(Name,'Zyw') | Returns all licenses with a name that doesn't start with ‘Zyw’ |
| When searching the Zywave API using DateTime the following format should be used YYYY-MM-DDTHH:MM:SS.fffZ. | ||
| The Zywave API also supports the And operation which will allow for multiple search criteria to be applied to a single request. For example, the following filter will return all licenses with the name Zywave that have have a start date after January 2020; |
*Name eq 'Zywave' and StartDateTime ge 2020-01-01T00:00:00.000Z
The orderby operation also supports multiple levels of ordering. For example, to order the results by name showing the licenses that ended most recently first, the following can be used;
Name asc, EndDateTime desc
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| $filter | query | string | false | The search criteria for the request. To view a list of supported search operations and the properties which can be searched see the documentation above. |
| $orderBy | query | string | false | Defines the order in which the results are returned. To view a list of properties that can be used in ordering see the documentation above. |
| $skip | query | integer(int32) | false | The number of total records to skip before displaying the first result. For example, if there are 10 total records and $skip is set to 5 the first record shown in the response will be the 6th record returned. In order to avoid an error please ensure that the $skip is dividable by the $top. |
| $top | query | integer(int32) | false | The total number of records returned in the response. In order to avoid an error please ensure that the $skip is dividable by the $top. |
Example responses
200 Response
{
"type": "object",
"additionalProperties": false,
"properties": {
"hasMoreResults": {
"type": "boolean",
"description": "A value indicating whether the larger result set has more results."
},
"skip": {
"type": "integer",
"description": "A value indicating how many of the previous values in the larger result set were omitted.",
"format": "int32"
},
"take": {
"type": "integer",
"description": "The number of records retrieved from larger result set.",
"format": "int32"
},
"totalCount": {
"type": "integer",
"description": "The total number of records in the larger result set.",
"format": "int32"
},
"items": {
"type": "array",
"description": "The records retrieved from the larger result set.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"endDateTime": {
"type": "string",
"description": "The effective end time for the license.",
"format": "date-time",
"nullable": true
},
"id": {
"type": "integer",
"description": "The license identifier.",
"format": "int32"
},
"name": {
"type": "string",
"description": "The license name."
},
"quantity": {
"type": "integer",
"description": "The quantity supplied by the license, if applicable.",
"format": "int32"
},
"startDateTime": {
"type": "string",
"description": "The effective start time for the license.",
"format": "date-time"
}
}
}
}
}
}
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | none | PagedResultOfLicense |
| 400 | Bad Request | none | ValidationProblemDetails |
| 401 | Unauthorized | none | ProblemDetails |
{
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"description": {
"type": "string",
"description": "The feature description.",
"nullable": true
},
"id": {
"type": "integer",
"description": "The feature identifier.",
"format": "int32"
},
"isEnabled": {
"type": "boolean",
"description": "Specifies whether the feature is enabled."
},
"key": {
"type": "string",
"description": "The unique feature key.",
"format": "guid"
},
"name": {
"type": "string",
"description": "The feature name."
},
"tags": {
"type": "array",
"description": "All tags associated with the feature.",
"items": {
"type": "string"
}
}
}
}
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| description | string|null | false | none | The feature description. |
| id | integer(int32) | false | none | The feature identifier. |
| isEnabled | boolean | false | none | Specifies whether the feature is enabled. |
| key | string(guid) | false | none | The unique feature key. |
| name | string | true | none | The feature name. |
| tags | [string] | false | none | All tags associated with the feature. |
{
"type": "object",
"additionalProperties": {
"nullable": true
},
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
}
}
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| additionalProperties | any | false | none | none |
| type | string|null | false | none | none |
| title | string|null | false | none | none |
| status | integer(int32)|null | false | none | none |
| detail | string|null | false | none | none |
| instance | string|null | false | none | none |
{
"type": "object",
"additionalProperties": false,
"properties": {
"hasMoreResults": {
"type": "boolean",
"description": "A value indicating whether the larger result set has more results."
},
"skip": {
"type": "integer",
"description": "A value indicating how many of the previous values in the larger result set were omitted.",
"format": "int32"
},
"take": {
"type": "integer",
"description": "The number of records retrieved from larger result set.",
"format": "int32"
},
"totalCount": {
"type": "integer",
"description": "The total number of records in the larger result set.",
"format": "int32"
},
"items": {
"type": "array",
"description": "The records retrieved from the larger result set.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"description": {
"type": "string",
"description": "The feature description.",
"nullable": true
},
"id": {
"type": "integer",
"description": "The feature identifier.",
"format": "int32"
},
"isEnabled": {
"type": "boolean",
"description": "Specifies whether the feature is enabled."
},
"key": {
"type": "string",
"description": "The unique feature key.",
"format": "guid"
},
"name": {
"type": "string",
"description": "The feature name."
},
"tags": {
"type": "array",
"description": "All tags associated with the feature.",
"items": {
"type": "string"
}
}
}
}
}
}
}
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| hasMoreResults | boolean | false | none | A value indicating whether the larger result set has more results. |
| skip | integer(int32) | false | none | A value indicating how many of the previous values in the larger result set were omitted. |
| take | integer(int32) | false | none | The number of records retrieved from larger result set. |
| totalCount | integer(int32) | false | none | The total number of records in the larger result set. |
| items | [Feature] | false | none | The records retrieved from the larger result set. |
{
"allOf": [
{
"allOf": [
{
"type": "object",
"additionalProperties": {
"nullable": true
},
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
}
},
{
"type": "object",
"additionalProperties": {
"nullable": true
},
"properties": {
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
]
},
{
"type": "object",
"additionalProperties": {
"nullable": true
},
"properties": {
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
]
}
allOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | HttpValidationProblemDetails | false | none | none |
and
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | object | false | none | none |
| » additionalProperties | any | false | none | none |
| » errors | object | false | none | none |
| »» additionalProperties | [string] | false | none | none |
{
"allOf": [
{
"type": "object",
"additionalProperties": {
"nullable": true
},
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
}
},
{
"type": "object",
"additionalProperties": {
"nullable": true
},
"properties": {
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
]
}
allOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | ProblemDetails | false | none | none |
and
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | object | false | none | none |
| » additionalProperties | any | false | none | none |
| » errors | object | false | none | none |
| »» additionalProperties | [string] | false | none | none |
{
"allOf": [
{
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"description": {
"type": "string",
"description": "The feature description.",
"nullable": true
},
"id": {
"type": "integer",
"description": "The feature identifier.",
"format": "int32"
},
"isEnabled": {
"type": "boolean",
"description": "Specifies whether the feature is enabled."
},
"key": {
"type": "string",
"description": "The unique feature key.",
"format": "guid"
},
"name": {
"type": "string",
"description": "The feature name."
},
"tags": {
"type": "array",
"description": "All tags associated with the feature.",
"items": {
"type": "string"
}
}
}
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"licenses": {
"type": "array",
"description": "All licenses that have granted the feature.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"endDateTime": {
"type": "string",
"description": "The effective end time for the license.",
"format": "date-time",
"nullable": true
},
"id": {
"type": "integer",
"description": "The license identifier.",
"format": "int32"
},
"name": {
"type": "string",
"description": "The license name."
},
"quantity": {
"type": "integer",
"description": "The quantity supplied by the license, if applicable.",
"format": "int32"
},
"startDateTime": {
"type": "string",
"description": "The effective start time for the license.",
"format": "date-time"
}
}
}
}
}
}
]
}
allOf
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | Feature | false | none | none |
and
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| anonymous | object | false | none | none |
| » licenses | [License] | false | none | All licenses that have granted the feature. |
{
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"endDateTime": {
"type": "string",
"description": "The effective end time for the license.",
"format": "date-time",
"nullable": true
},
"id": {
"type": "integer",
"description": "The license identifier.",
"format": "int32"
},
"name": {
"type": "string",
"description": "The license name."
},
"quantity": {
"type": "integer",
"description": "The quantity supplied by the license, if applicable.",
"format": "int32"
},
"startDateTime": {
"type": "string",
"description": "The effective start time for the license.",
"format": "date-time"
}
}
}
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| endDateTime | string(date-time)|null | false | none | The effective end time for the license. |
| id | integer(int32) | false | none | The license identifier. |
| name | string | true | none | The license name. |
| quantity | integer(int32) | false | none | The quantity supplied by the license, if applicable. |
| startDateTime | string(date-time) | false | none | The effective start time for the license. |
{
"type": "object",
"additionalProperties": false,
"properties": {
"hasMoreResults": {
"type": "boolean",
"description": "A value indicating whether the larger result set has more results."
},
"skip": {
"type": "integer",
"description": "A value indicating how many of the previous values in the larger result set were omitted.",
"format": "int32"
},
"take": {
"type": "integer",
"description": "The number of records retrieved from larger result set.",
"format": "int32"
},
"totalCount": {
"type": "integer",
"description": "The total number of records in the larger result set.",
"format": "int32"
},
"items": {
"type": "array",
"description": "The records retrieved from the larger result set.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"name"
],
"properties": {
"endDateTime": {
"type": "string",
"description": "The effective end time for the license.",
"format": "date-time",
"nullable": true
},
"id": {
"type": "integer",
"description": "The license identifier.",
"format": "int32"
},
"name": {
"type": "string",
"description": "The license name."
},
"quantity": {
"type": "integer",
"description": "The quantity supplied by the license, if applicable.",
"format": "int32"
},
"startDateTime": {
"type": "string",
"description": "The effective start time for the license.",
"format": "date-time"
}
}
}
}
}
}
| Name | Type | Required | Restrictions | Description |
|---|---|---|---|---|
| hasMoreResults | boolean | false | none | A value indicating whether the larger result set has more results. |
| skip | integer(int32) | false | none | A value indicating how many of the previous values in the larger result set were omitted. |
| take | integer(int32) | false | none | The number of records retrieved from larger result set. |
| totalCount | integer(int32) | false | none | The total number of records in the larger result set. |
| items | [License] | false | none | The records retrieved from the larger result set. |