Densify Subscriptions API

The Subscriptions API from Densify — 6 operation(s) for subscriptions.

Operations 10

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /subscriptions List cloud subscriptions (default alias) · List subscriptions (alias of /subscriptions/cloud) #
Ask an LLM
“Can I list my subscriptions without specifying a platform?”
“Which global subscriptions exist on the default cloud platform?”
Tell an agent
List subscriptions using the default cloud alias.
List {type} subscriptions on the default endpoint for owner {owner}.
GET /subscriptions/{platformType} List subscriptions for a platform · List subscriptions for a platform #
Ask an LLM
“Which recommendation subscriptions exist for containers?”
“Can an admin list another user's private subscriptions?”
Tell an agent
List all subscriptions for the {platformType} platform.
List {platformType} subscriptions owned by {owner}.
POST /subscriptions/{platformType} Create subscriptions in bulk · Create subscriptions (bulk) #
Ask an LLM
“How do I create several recommendation subscriptions in one request?”
“What happens if one subscription in a bulk create fails?”
Tell an agent
Create a batch of new {platformType} subscriptions.
Set up multiple {platformType} subscriptions in one all-or-nothing request.
DELETE /subscriptions/{platformType} Delete several subscriptions at once · Delete subscriptions (bulk) #
Ask an LLM
“Can I delete a set of subscriptions in one call?”
“Does one failed delete stop the rest of a bulk subscription delete?”
Tell an agent destructive · confirm first
Delete a list of {platformType} subscriptions by ID.
Remove several {platformType} subscriptions in one call.
PUT /subscriptions/{platformType}/{subscriptionRef} Replace a subscription's settings · Replace an existing subscription (full PUT) #
Ask an LLM
“How do I change a subscription's webhook or schedule?”
“Can an admin promote a private subscription to global?”
Tell an agent
Replace {platformType} subscription {subscriptionRef} with name {subscriptionName}.
Set {platformType} subscription {subscriptionRef} active flag to {active}.
DELETE /subscriptions/{platformType}/{subscriptionRef} Delete one subscription · Delete a single subscription #
Ask an LLM
“How do I delete a single subscription?”
“Can I remove just one subscription by its ID?”
Tell an agent destructive · confirm first
Delete {platformType} subscription {subscriptionRef}.
Remove the single subscription {subscriptionRef} on {platformType}.
GET /subscriptions/{platformType}/{subscriptionRef} Get a subscription's current results · Get subscription results (on-demand) #
Ask an LLM
“What recommendations does a subscription return right now, on demand?”
“What's the maximum number of results a subscription can return in one call?”
Tell an agent
Get the current results for {platformType} subscription {subscriptionRef}.
Pull up to {limit} results for {platformType} subscription {subscriptionRef}.
GET /subscriptions/{subscriptionRef} Get subscription results (default cloud alias) · Get subscription results (alias of cloud) #
Ask an LLM
“Can I get a subscription's results without naming the platform in the path?”
“Is there a short endpoint for cloud subscription results?”
Tell an agent
Get results for subscription {subscriptionRef} using the default cloud alias.
Pull {limit} results for subscription {subscriptionRef} on the platform-less endpoint.
GET /subscriptions/{platformType}/{subscriptionRef}/status Check a subscription's trigger and webhook status · Get subscription status (results + webhook) #
Ask an LLM
“When was my subscription last triggered and did it succeed?”
“Did the subscription's webhook delivery fail?”
Tell an agent
Check the status of {platformType} subscription {subscriptionRef}.
Show last trigger and webhook status for {platformType} subscription {subscriptionRef}.
GET /subscriptions/{subscriptionRef}/status Check subscription status (default cloud alias) · Get subscription status (alias of cloud) #
Ask an LLM
“Can I check a subscription's status without specifying a platform?”
“Is there a short endpoint for cloud subscription status?”
Tell an agent
Check status for subscription {subscriptionRef} using the default cloud alias.
Show whether subscription {subscriptionRef} last fired successfully, via the cloud alias.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/densify:densify-subscriptions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

densify-subscriptions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Densify Subscriptions API
  version: 1.0.0
  description: 'Operations tagged Subscriptions across 3 of this provider''s published API definitions: densify-public-cloud-subscriptions-openapi.yaml, densify-public-cloud-subscriptions-results-openapi.yaml, densify-public-cloud-subscriptions-status-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://{host}
  variables:
    host:
      default: api.example.com
tags:
- name: Subscriptions
paths:
  /subscriptions:
    get:
      tags:
      - Subscriptions
      operationId: listSubscriptionsDefaultPlatform
      summary: List subscriptions (alias of /subscriptions/cloud)
      description: Behaves the same as `GET /subscriptions/cloud`. Backward compatibility alias.
      parameters:
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/owner'
      - $ref: '#/components/parameters/subscriptionRefQuery'
      responses:
        '200':
          $ref: '#/components/responses/SubscriptionList'
    servers:
    - url: https://{host}
      variables:
        host:
          default: api.example.com
  /subscriptions/{platformType}:
    get:
      tags:
      - Subscriptions
      operationId: listSubscriptions
      summary: List subscriptions for a platform
      description: 'Returns a list of existing platform-specific subscriptions. Filters:

        - `type` → all | global | owner

        - `owner` (admin only) → list another user''s private subs with `type=owner`

        - `subscriptionRef` → return a single subscription by ID.'
      parameters:
      - $ref: '#/components/parameters/platformType'
      - $ref: '#/components/parameters/type'
      - $ref: '#/components/parameters/owner'
      - $ref: '#/components/parameters/subscriptionRefQuery'
      responses:
        '200':
          $ref: '#/components/responses/SubscriptionList'
        '400':
          description: Bad Request (e.g. querying owner you don't own and you're not admin).
        '401':
          description: Authentication failed.
        '500':
          description: Server error.
    post:
      tags:
      - Subscriptions
      operationId: createSubscriptions
      summary: Create subscriptions (bulk)
      description: 'Creates a **collection** of platform-specific subscriptions in one request. The operation

        is committed as a whole: any creation failure rolls back the entire batch. Non-admin users

        are auto-assigned as `owner`; admins may create global (owner="") or assign any owner.'
      parameters:
      - $ref: '#/components/parameters/platformType'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/SubscriptionUpsert'
            examples:
              createOne:
                value:
                - subscriptionName: My Weekly Cloud Feed
                  description: Finance BU, prod apps; weekly
                  owner: ''
                  active: 'true'
                  webhook:
                    uri: https://hooks.example/teams
                    authType: basic
                    authValue: user:pass
                  tagReferences:
                  - tagID: business_unit
                    operator: equals
                    values:
                    - Finance
                  propertyReferences:
                  - propertyID: serviceType
                    operator: equals
                    values:
                    - Virtual Machine
                  suppressionReferences:
                  - suppressionID: no-m3
                    operator: like
                    values:
                    - m3*
                    revokeBy: '1735689600000'
                  returnStructure:
                    showAliases: true
                    fields:
                    - name
                    - region
                    - currentType
                    - recommendedType
                    - savingsEstimate
                    - rptHref
                  schedule:
                    frequency: WEEKLY
                    at: 08:30
      responses:
        '200':
          description: Created (batch result)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Subscription'
        '400':
          description: Validation/logic error; entire batch rolled back.
        '401':
          description: Authentication failed.
        '500':
          description: Server error.
    delete:
      tags:
      - Subscriptions
      operationId: deleteSubscriptions
      summary: Delete subscriptions (bulk)
      description: 'Deletes a **collection** of subscriptions by ID. Each delete is independent; an error on one

        does not affect others. Success returns **204 No Content**; **404 Not Found** if a sub doesn''t

        exist or you lack privilege (non-owner, non-admin). Admins may delete any global/private subs.'
      parameters:
      - $ref: '#/components/parameters/platformType'
      responses:
        '204':
          description: No Content (all attempted deletes processed).
        '404':
          description: Not Found / No privilege.
        '401':
          description: Authentication failed.
        '500':
          description: Server error.
    servers:
    - url: https://{host}
      variables:
        host:
          default: api.example.com
  /subscriptions/{platformType}/{subscriptionRef}:
    put:
      tags:
      - Subscriptions
      operationId: replaceSubscription
      summary: Replace an existing subscription (full PUT)
      description: 'Replaces **all** parameters of an existing subscription. You must supply all body parameters

        required by the existing subscription. Non-admin users can only modify their own private subs;

        admins can also promote private→global by setting `owner: ""`.'
      parameters:
      - $ref: '#/components/parameters/platformType'
      - $ref: '#/components/parameters/subscriptionRef'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubscriptionUpsert'
      responses:
        '200':
          description: Updated subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subscription'
        '400':
          description: Validation/logic error.
        '401':
          description: Authentication failed.
        '404':
          description: Subscription not found / no privilege.
        '500':
          description: Server error.
    delete:
      tags:
      - Subscriptions
      operationId: deleteSubscription
      summary: Delete a single subscription
      parameters:
      - $ref: '#/components/parameters/platformType'
      - $ref: '#/components/parameters/subscriptionRef'
      responses:
        '204':
          description: No Content (deleted).
        '404':
          description: Not Found / No privilege.
        '401':
          description: Authentication failed.
    get:
      tags:
      - Subscriptions
      operationId: getSubscriptionResults
      summary: Get subscription results (on-demand)
      description: 'Returns the current results for the specified subscription.

        Notes for on-demand calls: `active`, `webhook`, and `schedule` are ignored (results are always returned).

        Optional `divider` controls whether a divider string is included between properties and tags.

        `limit` controls the maximum number of returned systems (default 3000; range 1–30000).'
      parameters:
      - $ref: '#/components/parameters/platformType_2'
      - $ref: '#/components/parameters/subscriptionRef'
      - $ref: '#/components/parameters/divider'
      - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: Subscription results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionResults'
              examples:
                sample:
                  value:
                    subscription:
                      name: Sample Subscription
                      description: A subscription for testing
                      created: Mon Jan 19 13:52:31 EST 2020
                      createdBy: saas
                      updated: Mon Jan 20 14:32:38 EST 2020
                      updatedBy: SaaSadmin
                      lastRefreshed: Mon Jan 20 01:32:59 EST 2020
                      owner: saas
                    count: 452
                    results:
                    - currentType: standard_d2
                      name: st01-prepro-edge-307
                      recommendationType: Modernize - Optimal Family
                      savingsEstimate: '43.850475'
                      serviceType: Virtual Machine
                      divider: '------------------------'
                      Availability Zone: eastus+group
        '204':
          description: No content.
        '400':
          description: Bad Request (e.g., result count exceeded default 3000 without raising `limit`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusMessage'
              examples:
                tooMany:
                  value:
                    message: On-Demand Failure. The return count of 3891 has exceeded object return limit of 3000. Update your call with a new limit value. Wed Jul 29 09:05:15 EDT 2020
                    status: 400
        '401':
          description: Authentication failed.
        '404':
          description: Not found / no privileges.
        '415':
          description: Unsupported media type.
        '500':
          description: Server error.
    servers:
    - url: https://{host}
      variables:
        host:
          default: api.example.com
  /subscriptions/{subscriptionRef}:
    get:
      tags:
      - Subscriptions
      operationId: getSubscriptionResultsDefaultPlatform
      summary: Get subscription results (alias of cloud)
      parameters:
      - $ref: '#/components/parameters/subscriptionRef'
      - $ref: '#/components/parameters/divider'
      - $ref: '#/components/parameters/limit'
      responses:
        '200':
          description: Subscription results (same shape as above)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionResults'
    servers:
    - url: https://{host}
      variables:
        host:
          default: api.example.com
  /subscriptions/{platformType}/{subscriptionRef}/status:
    get:
      tags:
      - Subscriptions
      operationId: getSubscriptionStatus
      summary: Get subscription status (results + webhook)
      description: 'Returns `lastTriggered` (On-Demand/Scheduled Success/Failure with timestamp)

        and `webHookStatus` (Success/Failure with timestamp) for the specified

        subscription.'
      parameters:
      - name: platformType
        in: path
        required: true
        description: Technology platform (`cloud` or `containers`).
        schema:
          type: string
          enum:
          - cloud
          - containers
      - name: subscriptionRef
        in: path
        required: true
        description: Unique subscription identifier.
        schema:
          type: string
      responses:
        '200':
          description: Status payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionStatus'
              examples:
                sample:
                  value:
                    lastTriggered: On-Demand Success. Thu Jan 02 16:41:52 EST 2020
                    webHookStatus: Failure. … Connection refused … Thu Jan 02 16:41:53 EST 2020
        '204':
          description: Success, no content.
        '400':
          description: Bad request (invalid parameters / logic).
        '401':
          description: Authentication failed.
        '404':
          description: Not found / no privileges.
        '415':
          description: Unsupported media type.
        '500':
          description: Internal server error.
    servers:
    - url: https://{host}
      variables:
        host:
          default: api.example.com
  /subscriptions/{subscriptionRef}/status:
    get:
      tags:
      - Subscriptions
      operationId: getSubscriptionStatusDefaultPlatform
      summary: Get subscription status (alias of cloud)
      parameters:
      - name: subscriptionRef
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Status payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionStatus'
    servers:
    - url: https://{host}
      variables:
        host:
          default: api.example.com
components:
  schemas:
    PropertyCondition:
      type: object
      properties:
        propertyID:
          type: string
        operator:
          type: string
        values:
          type: array
          items:
            type: string
      required:
      - propertyID
      - operator
      - values
      description: Filter on recommendation fields. Requires at least one **core** property overall.
    SuppressionCondition:
      type: object
      properties:
        suppressionID:
          type: string
        operator:
          type: string
        values:
          type: array
          items:
            type: string
        revokeBy:
          type: string
          description: Unix time (ms) when suppression expires; omit for no expiry.
      required:
      - suppressionID
      - operator
      - values
      description: Exclude systems/recommendations from the output.
    TagCondition:
      type: object
      properties:
        tagID:
          type: string
        operator:
          type: string
        values:
          type: array
          items:
            type: string
      required:
      - tagID
      - operator
      - values
      description: Filter on system attributes (e.g., account, BU, app).
    WebHook:
      type: object
      properties:
        uri:
          type: string
          format: uri
        authType:
          type: string
        authValue:
          type: string
      required:
      - uri
      description: Webhook destination for delivering subscription notifications.
    Schedule:
      type: object
      properties:
        frequency:
          type: string
          description: Implementation-defined frequency (e.g., NIGHTLY, WEEKLY).
        at:
          type: string
          description: HH:mm (24h) time string for trigger.
      description: If omitted, notifications typically trigger nightly after analysis/reporting.
    Subscription:
      type: object
      properties:
        subscriptionRef:
          type: string
          description: Unique ID assigned to the subscription.
        subscriptionName:
          type: string
        description:
          type: string
        owner:
          type: string
          description: Empty for global; username for private.
        outputType:
          type: string
        active:
          type: string
          enum:
          - 'true'
          - 'false'
        webhook:
          $ref: '#/components/schemas/WebHook'
        propertyReferences:
          type: array
          items:
            $ref: '#/components/schemas/PropertyCondition'
        tagReferences:
          type: array
          items:
            $ref: '#/components/schemas/TagCondition'
        suppressionReferences:
          type: array
          items:
            $ref: '#/components/schemas/SuppressionCondition'
        returnStructure:
          $ref: '#/components/schemas/ReturnStructure'
        schedule:
          $ref: '#/components/schemas/Schedule'
        webhookStatus:
          type: string
          description: Success | Failure of last push to webhook (with timestamp).
        lastTriggered:
          type: string
          description: On-Demand Success/Failure or Scheduled Success/Failure with timestamp.
        message:
          type: string
          description: Error/status message (on error).
        status:
          type: integer
          description: HTTP-like status code (200, 204, 400, 401, 404, 415, 500).
      required:
      - subscriptionRef
      - subscriptionName
    SubscriptionUpsert:
      type: object
      properties:
        subscriptionName:
          type: string
          description: Unique per platform if global; unique per owner if private.
        owner:
          type: string
          description: '"" for global (admin only) or username for private; non-admins default to their username.'
        description:
          type: string
        outputType:
          type: string
          enum:
          - application/json
          default: application/json
          description: Only supported output type.
        active:
          type: string
          enum:
          - 'true'
          - 'false'
          default: 'false'
          description: true=active; false=dormant (no scheduled posts; on-demand still available).
        webhook:
          $ref: '#/components/schemas/WebHook'
        propertyReferences:
          type: array
          items:
            $ref: '#/components/schemas/PropertyCondition'
        tagReferences:
          type: array
          items:
            $ref: '#/components/schemas/TagCondition'
        suppressionReferences:
          type: array
          items:
            $ref: '#/components/schemas/SuppressionCondition'
        returnStructure:
          $ref: '#/components/schemas/ReturnStructure'
        schedule:
          $ref: '#/components/schemas/Schedule'
      description: "Provide at least **one** of: `propertyReferences`, `tagReferences`, or `suppressionReferences`. \n"
    ReturnStructure:
      type: object
      properties:
        showAliases:
          type: boolean
          default: false
          description: Use field aliases as element keys when true.
        fields:
          type: array
          items:
            type: string
          description: Fields to include in returned dataset.
    SubscriptionHeader:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        created:
          type: string
          description: Datetime string.
        createdBy:
          type: string
        updated:
          type: string
          description: Datetime string.
        updatedBy:
          type: string
        lastRefreshed:
          type: string
          description: Datetime string; last recommendation analysis.
        owner:
          type: string
          description: Empty = global subscription; otherwise username.
    SubscriptionResults:
      type: object
      properties:
        subscription:
          $ref: '#/components/schemas/SubscriptionHeader'
        count:
          type: integer
          description: Number of recommendations in `results`.
        results:
          type: array
          items:
            $ref: '#/components/schemas/SubscriptionResultItem'
      required:
      - subscription
      - count
      - results
    SubscriptionResultItem:
      type: object
      description: "One system recommendation as shaped by the subscription `returnStructure`.  \nMay include `properties`, optional `divider`, and optional `tags`. \n"
      properties:
        divider:
          type: string
        tags:
          type: array
          items:
            type: string
      additionalProperties: true
    StatusMessage:
      type: object
      properties:
        message:
          type: string
        status:
          type: integer
          description: 200, 204, 400, 401, 404, 415, 500.
      required:
      - message
      - status
    SubscriptionStatus:
      type: object
      properties:
        lastTriggered:
          type: string
          description: "Status + timestamp of last request: On-Demand Success/Failure or Scheduled Success/Failure. \n"
        webHookStatus:
          type: string
          description: "Status + timestamp of last webhook post: Success or Failure. \n"
        message:
          type: string
          description: Message for the status response (on error).
        status:
          type: integer
          description: One of 200, 204, 400, 401, 404, 415, 500.
  parameters:
    subscriptionRefQuery:
      name: subscriptionRef
      in: query
      required: false
      description: Return details for a single subscription by ID.
      schema:
        type: string
    owner:
      name: owner
      in: query
      required: false
      description: Kubex username to scope `type=owner` queries (admins only for others).
      schema:
        type: string
    platformType:
      name: platformType
      in: path
      required: true
      description: Technology platform (`cloud` or `containers`).
      schema:
        type: string
        enum:
        - cloud
        - containers
    subscriptionRef:
      name: subscriptionRef
      in: path
      required: true
      description: Unique subscription identifier.
      schema:
        type: string
    type:
      name: type
      in: query
      required: false
      description: "Which subscriptions to list:\n- `all` (default): global + your private (admins see all)\n- `global`: all global\n- `owner`: user-specific; combine with `owner=` (admin can query any user) \n"
      schema:
        type: string
        enum:
        - all
        - global
        - owner
      example: owner
    divider:
      name: divider
      in: query
      required: false
      description: "Display divider between properties and tags in each result:\n`\"true\"` (default) shows `\"divider\": \"------------------------\"`, `\"false\"` hides it. \n"
      schema:
        type: string
        enum:
        - 'true'
        - 'false'
        default: 'true'
    limit:
      name: limit
      in: query
      required: false
      description: "Maximum number of results to return. Default 3000; valid range 1–30000.\nOnly applies to on-demand queries (no limit for scheduled webhook pushes). \n"
      schema:
        type: integer
        minimum: 1
        maximum: 30000
        default: 3000
    platformType_2:
      name: platformType
      in: path
      required: true
      description: Technology platform for the subscription results.
      schema:
        type: string
        enum:
        - cloud
        - containers
  responses:
    SubscriptionList:
      description: Array of subscriptions
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Subscription'
x-refined-from:
- densify-public-cloud-subscriptions-openapi.yaml
- densify-public-cloud-subscriptions-results-openapi.yaml
- densify-public-cloud-subscriptions-status-openapi.yaml