- ability to filter recommendation systems based on recommendation fields (property filter);
- ability to filter recommendation systems based on attribute tags (tag filter);
- ability to suppress recommendation systems, for a period of time, based on recommendation fields and/or attribute tags via suppression filters;
- ability to customize the notification output format;
- ability to send the notification to an external webhook;
- ability to schedule the notification;
- ability to have private subscription definitions, as well as global subscription definitions for shared usage;
- supports both cloud and containers system recommendations.
Creating a Subscription
The diagram below provides a high-level overview of creating an instance of the Subscription resource through the Densify API:Figure: Subscription High Level Overview
Figure: Subscription High Level Overview

POST /subscriptions/<platformType>
request. You must identify the <platformType>
of the subscription and use similar platform resources to define the subscription. For instance, you need to use container resources for a subscription to container recommendations. After identifying the subscription platform resources to use, define the parameter components below to customize your subscription.
-
Define the Subscription—Specify the subscriptionName, description, and owner.
The
subscriptionName
is used as a key identifier, so it needs to be unique for global subscriptions as well as unique within a private-scoped group of subscriptions. Thedescription
parameter is for documentation purposes, so its content should be as descriptive as possible to indicate the purpose of the subscription. See Example: Defining the Subscription. -
Property Filter—Specify propertyReferences to filter the recommendation systems you are interested in receiving based on recommendation fields.
This feature is similar to the Recommendation Filter Menu in the Densify Console, where you can filter recommendation systems based on selected fields from the menu. In the
propertyReferences
filter condition, fields are selected by referencing property elements from the platform-specific Subscriptions Properties catalog. The platform of properties you reference must correspond with the platform of your subscription. Refer to Subscriptions Properties Catalogs for details on referencing properties. See Example: Specifying Property Filters for an example of a property filter condition block in aPOST /subscriptions/<platformType>
request. -
Tag Filter—Specify tagReferences to filter the recommendation systems you are interested in receiving based on attribute fields.
This feature is similar to the Guest Filter from the Densify Console, but it also extends to filter platform-specific attribute tags. In the
tagReferences
filter condition, attributes are selected by referencing tag elements from the platform-specific Subscriptions Tags catalog. The platform of tags you reference must correspond with the platform of your subscription. Refer to Subscriptions Tags Catalogs for details.See Example: Specifying Tag Filters for an example of a tag filter condition block in aYou must ensure that the selected Densify attributes are marked assearchable
for use with DSS. Contact Densify support (Support@Densify.com) to confirm that the selected attributes are searchable in your Densify instance.POST /subscriptions/<platformType>
request. -
Suppress Filter—Specify the suppressionReferences condition to suppress recommendation systems you are not interested in receiving based on recommendation or attribute fields.
This feature allows you to suppress groups of recommendation systems for a period of time when the notification is actively scheduled. Suppression conditions are created by referencing suppression elements from the platform-specific Subscriptions Suppressions catalog.
The platform of suppression conditions you reference must correspond with the platform of your subscription. Refer to the Subscriptions Suppressions Catalogs for an explanation of referencing the catalog.
See Example: Specifying Suppression Conditions for an example of a suppression condition block in a
POST /subscriptions/<platformType>
request. -
Return Structure—Specify the returnStructure to personalize the output of the notification.
If you do not specify the
returnStructure
parameter in your subscription, all recommendation fields applicable to the platform-specific system are returned. To return specific fields, you can specify elements from the platform-specific Subscriptions Properties Catalogs and Subscriptions Tags Catalogs that are within your scope. See Example: Specifying the Return Structure for an example of areturnStructure
block in aPOST /subscriptions/<platformType>
request. -
Schedule Notification to Webhook—Specify when and where to send your notification by configuring the schedule parameter and the webhook parameter.
If you do not specify the
schedule
parameter, the notification is triggered each night after data collection, analysis, and reporting database update processes. See Example: Specifying the Notification Schedule for an example of specifying aschedule
block in aPOST /subscriptions/<platformType>
request. Thewebhook
parameter is mandatory if you want notifications to be triggered. See Example: Specifying the Webhook for an example of specifying awebhook
block in aPOST /subscriptions/<platformType>
request.You can test the subscription and request an on-demand results output by using the Subscriptions: Results resource, even if the webhook is not defined.
POST /subscriptions/<platformType>
request with all the combined parameter components; then review the on-demand results of the subscription in Example: Getting On-Demand Results.
Refer to Subscriptions for the complete subscription resource reference.
Subscriptions Properties Catalogs
Figure: Subscriptions Properties Catalogs Reference Overview
Figure: Subscriptions Properties Catalogs Reference Overview

Some recommendation elements are not common to all technologies. For example, propertyName=“minGroupRecommended” only applies to AWS Auto Scaling group recommendations.
Subscriptions Tags Catalogs
Figure: Subscriptions Tags Catalogs Reference Overview
Figure: Subscriptions Tags Catalogs Reference Overview
Subscriptions Suppressions Catalogs
Figure: Subscriptions Suppressions Catalogs Reference Overview
Figure: Subscriptions Suppressions Catalogs Reference Overview

The Subscriptions Suppressions catalogs are not used for a Subscription’s return output.
Example: Defining the Subscription
Use thePOST /subscriptions/cloud
request to create a cloud subscription. The first set of parameters to specify are the subscriptionName and description, which are free-form strings. The owner parameter is automatically set to your Densify username if you are not an . You can also set the active parameter to indicate if the subscription is dormant or active (the default is active
). Remember to specify your active authorization key for each token-based authentication request (see Authorize for details).
Example: Specifying Subscription Name and Description
Example: Specifying Subscription Name and Description
Headers:Request:
POST /subscriptions/cloud
Example: Specifying Property Filters
To specify property filter conditions in thePOST /subscriptions/<platformType>
request, use the propertyReferences parameter. In this example, the property condition filters all AWS EC2s with predicted uptime between 50 -100%. The cloud subscription propertyReferences
condition references the propertyID
of “serviceType
” and “predictedUptime
” from the Cloud Subscriptions Properties catalog.
Example: Subscription - Property Filter Condition
Example: Subscription - Property Filter Condition
Request Parameter - Property Filter Condition Section:
Example: Specifying Tag Filters
To specify tag filter conditions in thePOST /subscriptions/<platformType>
request, use the tagReferences parameter. In this example, the tag condition filters all systems belonging to the “Sales” department. The cloud subscription tagReferences
condition references the tagID
of “Department
” from the Cloud Subscriptions Tags catalog.
Example: Subscription - Tag Filter Condition
Example: Subscription - Tag Filter Condition
Request Parameter - Tag Filter Condition Section:
Example: Specifying Suppression Conditions
To specify suppression conditions in thePOST /subscriptions/<platformType>
request, use the suppressionReferences parameter. In this example, the cloud suppression condition removes all terminate recommendations until April 20, 2020. After April 20, 2020 (the revokeBy
date), the suppression condition is deprecated. The cloud subscription suppressionReferences
condition references the suppressionID
of “recommendationType
” from the Cloud Subscriptions Suppressions catalog.
Example: Subscription - Suppression Filter Condition
Example: Subscription - Suppression Filter Condition
Request Parameter - Suppression Filter Condition Section:
Example: Specifying the Return Structure
To specify a customized return structure in thePOST /subscriptions/<platformType>
request, use the returnStructure parameter. In this example, the return output will contain the following cloud fields: effortEstimate
, entityId
, name
, recommendationType
, savingsEstimate
, serviceType
, Department
(attribute), Virtual Domain
(“account”). These fields reference the propertyID
and “tagID
” from the Cloud Subscriptions Properties catalog and the Cloud Subscriptions Tags catalog, respectively. Some of these property or tag fields have the "useAlias"
flag set to true, which returns the alias names instead of the property or tag names.
Example: Subscription - Return Structure
Example: Subscription - Return Structure
Request Parameter - Return Structure Section:
Example: Specifying the Webhook
For the destination of the notification, specify the webhook parameter in thePOST /subscriptions/<platformType>
request. If you do not specify a webhook
, no subscription notifications are triggered; the subscription is considered dormant since there is no destination for the notification. You can test the subscription and request an on-demand results output by using the Subscriptions: Results resource, even if the subscription is dormant or if the webhook is not defined.
Example: Subscription - Webhook
Example: Subscription - Webhook
Request Parameter - Webhook Section:
Example: Specifying the Notification Schedule
To specify a notification schedule in thePOST /subscriptions/<platformType>
request, use the schedule parameter. In the example below, the cloud subscription is scheduled to be triggered on Mondays and Fridays of each week (dayofWeek 1
= Monday). If you do not specify the schedule
parameter, the subscription notifications are triggered nightly by default.
Example: Subscription - Schedule
Example: Subscription - Schedule
Request Parameter - Schedule Section:
Example: Creating a Subscription (Putting It All Together)
This example puts all the subscription components (from the previous examples) together to create a cloud subscription.Example: Creating a Cloud Subscription
Example: Creating a Cloud Subscription
Request:Parameters:Response:
Example: Getting On-Demand Results
This example retrieves the cloud subscription (created from the previous example) results on-demand. This request returns the cloud subscription results regardless of what is configured in thewebhook
, schedule
, or active
parameters.
Example: Getting Cloud Subscription Results On-Demand
Example: Getting Cloud Subscription Results On-Demand
Request:Response: