App details

This endpoint fetches detailed information about a particular app that is not provided as part of the App summaries endpoint response. Additional details include Instances, Activity, Contract, Fiscal Spend, Compliance, and SSO Protocols.

Updated: Jan 25, 2023

Note: Please refer to release notes to check for changes in API. You can use the navigation sidebar on the left to access "Archived" versions of this page. Previous version here.

Prerequisites

  • Querying the developer APIs involves sending an access_token as part of the Authorization header. For instructions on how to generate an access token, see Authorization.

Endpoint

GET https://public-api.productiv.com/pull/v2/apps/:applicationId
Required Scope https://api.productiv.com/apps.read

Request headers

Parameter Value
Content-Type application/json
Authorization Bearer access_token

Path params

Parameter Description
applicationId applicationId is the unique identifier for the App for which details are being requested. These IDs are provided in the App List endpoint.

Response

If the request is successful, a JSON response will be returned. This JSON object will contain the following parameters:

Parameter Datatype Description
App object AppDetails object (see definition below)
AsOfDate string The date as of which information is being provided, in YYYY-MM-DD format
FiscalDate object FiscalDate object (see definition below)
FiscalDateRange object FiscalDateRange object (see definition below)
ResponseTimeMs number Time taken by the server to process the request in milliseconds

Example response

{
  "AsOfDate": "2022-07-01",
  "FiscalDate": {
    "FiscalYear": "2022",
    "AsOfMonth": "06"
  },
  "FiscalDateRange": {
    "Start": "2022-01-01",
    "End": "2022-06-30"
  },
  "App": {
    "ApplicationId": "productiv",
    "ApplicationName": "Productiv",
    "AppStatus": "Approved",
    "Labels": [],
    "CustomFields": [
      {
        "FieldName": "field name",
        "FieldValue": ["value1", "value 2"],
        "FieldType": "multiselect"
        "FieldKey": "dlk2fghaeoi342"
      }
    ],
    "Category": "IT Management",
    "Capabilities": ["SaaS Management", "Data & Analytics"],
    "Description": "Data-driven enterprise management platform which provides real time data analytics, insights, and workflows for apps across the enterprise.",
    "DataSources": ["Engagement", "Managed SSO", "Contract"],
    "AppContacts": {
      "NumContacts": 3,
      "Finance_Contacts": [
        { "Name": "finance owner", "Email": "finance@domain.com" },
        { "Name": "finance owner 2", "Email": "finance2@domain.com" }
      ],
      "Legal_Contacts": [{ "Name": "legal owner", "Email": "legal@domain.com" }]
    },
    "IsDiscovered": false,
    "VendorName": "Productiv",
    "DiscoveryDate": "2021-01-01",
    "LastActivityDate": "2022-01-01",
    "FirstActivityDate": "2020-01-01",
    "IsConnectorAvailable": false,
    "Instances": [
      {
        "InstanceId": "productiv",
        "InstanceName": "Productiv",
        "DiscoveryDate": "2021-01-01",
        "LastActivityDate": "2022-01-01",
        "FirstActivityDate": "2020-01-01",
        "DataSources": ["Engagement"],
        "Activity": {
          "Engagement": {
            "Summary": {
              "ProvisionedLicenses": 100,
              "RollingWindow30": {
                "EngagedLicenses": 70,
                "InactiveLicenses": 30,
                "PercentageActive": 70
              }
            },
            "LicenseTier": {
              "License1": {
                "ProvisionedLicenses": 100,
                "RollingWindow30": {
                  "EngagedLicenses": 70,
                  "InactiveLicenses": 30,
                  "PercentageActive": 70
                }
              }
            }
          }
        },
        "Contract": {},
        "SSOProtocols": {
          "DetectedProtocols": ["SAML 2.0"],
          "DataSources": ["Okta"]
        },
        "AppContacts": { "NumContacts": 0 }
      },
      {
        "InstanceId": "okta:productiv",
        "InstanceName": "Productiv",
        "ExternalSSOAppId": "0q34jrhqiuh6623rn",
        "DiscoveryDate": "2021-01-01",
        "LastActivityDate": "2022-01-01",
        "FirstActivityDate": "2020-01-01",
        "DataSources": ["Managed SSO"],
        "Activity": {
          "Managed SSO": {
            "Summary": {
              "ProvisionedLicenses": 100,
              "RollingWindow30": {
                "EngagedLicenses": 70,
                "InactiveLicenses": 30,
                "PercentageActive": 70
              }
            }
          }
        },
        "Contract": {},
        "SSOProtocols": {
          "DetectedProtocols": ["SAML 2.0"],
          "DataSources": ["Okta"]
        },
        "AppContacts": { "NumContacts": 0 }
      },
      {
        "InstanceId": "gsuiteSSO:productiv",
        "InstanceName": "Productiv (Google Social Login)",
        "DiscoveryDate": "2020-01-01",
        "LastActivityDate": "2022-01-01",
        "FirstActivityDate": "2020-01-01",
        "DataSources": ["Unmanaged SSO"],
        "Activity": {
          "Unmanaged SSO": {
            "Summary": {
              "ProvisionedLicenses": 100,
              "RollingWindow30": {
                "EngagedLicenses": 70,
                "InactiveLicenses": 30,
                "PercentageActive": 70
              }
            }
          }
        },
        "Contract": {},
        "SSOProtocols": {
          "DetectedProtocols": ["Google Social Login"],
          "DataSources": ["Google Workspace"]
        },
        "AppContacts": { "NumContacts": 0 }
      }
    ],
    "Activity": {
      "Managed SSO": {
        "Summary": {
          "ProvisionedLicenses": 100,
          "RollingWindow30": {
            "EngagedLicenses": 70,
            "InactiveLicenses": 30,
            "PercentageActive": 70
          }
        }
      }
    },
    "Contract": {
      "Summary": {
        "StartDate": "2021-01-01",
        "EndDate": "2023-01-01",
        "AutoRenews": false,
        "LicensesPurchased": 100,
        "TermMonths": 24,
        "AnnualAmount": {
          "Amount": 8000,
          "Currency": "USD"
        },
        "TermAmount": {
          "Amount": 16000,
          "Currency": "USD"
        }
      }
    },
    "FiscalSpend": {
      "TotalSpend": {
        "Amount": 1000,
        "Currency": "USD"
      },
      "ExpenseManagementSpend": {
        "Amount": 500,
        "Currency": "USD"
      },
      "ErpSpend": {
        "Amount": 500,
        "Currency": "USD"
      }
    },
    "PreviousYearFiscalSpend": {
      "TotalSpend": {
        "Amount": 980,
        "Currency": "USD"
      },
      "ExpenseManagementSpend": {
        "Amount": 510,
        "Currency": "USD"
      },
      "ErpSpend": {
        "Amount": 210,
        "Currency": "USD"
      }
    },
    "Compliance": {
      "ISO27001": "COMPLIANT",
      "SOC2": "COMPLIANT",
      "GDPR": "COMPLIANT",
      "FedRAMP": "COMPLIANT",
      "Fisma": "NON_COMPLIANT",
      "Swiss-U.S. Privacy Shield": "UNKNOWN",
      "CCPA": "COMPLIANT"
    },
    "SSOProtocols": {
      "DetectedProtocols": ["SAML 2.0"],
      "SupportedProtocols": ["SAML 2.0", "SAML 1.1"],
      "DataSources": ["Okta"]
    }
  },
  "ResponseTimeMs": 2000
}

Objects

This section lists the objects that can be returned in a successful query and describes their properties.

AppDetails

The AppDetails object is returned in the App details API response. It represents a single application, and contains a larger set of attributes than provided in the AppSummary object. These attributes are described below:

Parameter Datatype Description
ApplicationId string Unique identifier for the application
ApplicationName string Display name for the application
Category string Productiv's categorization for the application
Capabilities array List of string capabilities of the application
Description string Brief description of the application
IsDiscovered boolean Whether or not the application is a discovered app. An application is discovered if it's not under a contract, is not connected directly to Productiv and is not under managed SSO.
AppStatus string Status of the app as configured in the product. Can be one of: "Approved", "Not approved", "In review", "None", ""
Labels array List of string labels assigned to the app as configured in the product
CustomFields array List of objects representing custom fields as configured in the product. See the CustomField definition below
DataSources array List of string datasources. Can be one or more from: ["Engagement", "Managed SSO", "Unmanaged SSO", "Expenses", "Payments", "Contract", "CASB"]
VendorName string Name of the app vendor
DiscoveryDate string The date we discovered this application, in YYYY-MM-DD format
LastActivityDate string The latest date we have data for this application, in YYYY-MM-DD format
FirstActivityDate string The first date we have data for this application, in YYYY-MM-DD format
IsConnectorAvailable boolean Whether or not the application can be connected as an engagement instance in Productiv
Instances array List of Instance objects, defined below
Activity object See Activity object defined below. Note that if an app has multiple available datasources, the stats will be returned for the "best" available source, and Engagement > Managed SSO > Unmanaged SSO
Contract object See Contract object defined below
FiscalSpend object See FiscalSpend object defined below
PreviousYearFiscalSpend object See PreviousYearFiscalSpend object defined below
Compliance object See Compliance object defined below
SSOProtocols object See SSOProtocols object defined below
AppContacts object See AppContacts object defined below
IsInactive boolean Whether or not the application is inactive

Instance

Parameter Datatype Description
InstanceId string Unique identifier for the application instance
InstanceName string Display name for the application instance
ExternalSSOAppId string Identifier of the app instance in the external SSO platform (if this instance is discovered through an SSO platform; currently only supported in context of Okta)
DataSources array List of string datasources. Can be one or more from: ["Engagement", "Managed SSO", "Unmanaged SSO", "Contract", "CASB"]
DiscoveryDate string The earliest date we have data for this instance, in YYYY-MM-DD format
LastActivityDate string The latest date we have data for this instance, in YYYY-MM-DD format
FirstActivityDate string The first date we have data for this application, in YYYY-MM-DD format
Activity object See ActivityStats object defined below
Contract object See Contract object defined below
SSOProtocols object See SSOProtocols object defined below
AppContacts object See AppContacts object defined below

Activity

Parameter Datatype Description
[DataSource] string See ActivityStats object defined below. Note that the parameter can be one of ["Engagement", "Managed SSO", "Unmanaged SSO"] depending on the available sources for the application

ActivityStats

Parameter Datatype Description
Summary object Activity stats across all licenses. See ActivityStatsCounts object defined below.
LicenseTier object Activity stats split by license tier. This is only defined for the Engagement datasource type.

CustomField

Property Datatype Description
FieldName string Name of the custom field
FieldValue FieldValue Value of the custom field
FieldType string Type of the custom field
FieldKey string The key that uniquely identifies the custom field

FieldValue

Custom fields can be one of the following types: singleselect, multiselect, text, number, date, currency, hyperlink. The datatype for value above depends on the type of custom field you are trying to edit.

Type Datatype Description
singleselect string The value must be one of the allowed values as configured in the product for the custom field.
multiselect array List of strings. Each value must be one of the allowed values for the field as configured in the product for the custom field.
text string Free-form text
number number Number
date string YYYY-MM-DD format
currency object See Currency object below
hyperlink object See Hyperlink object below

Currency

Property Datatype Description
currencyCode string ISO 4217 currency code
amount number Amount
Property Datatype Description
label string Label for the hyperlink
url string URL for the hyperlink

LicenseTier

Parameter Datatype Description
[LicenseTier] string See ActivityStatsCounts object defined below. Note that the parameter is the name of the license tier.

ActivityStatsCounts

Parameter Datatype Description
ProvisionedLicenses number Total number of licenses provisioned for the app or instance
RollingWindow30 object See RollingWindowActivity object defined below. The stats under this key use the 30-day rolling window

RollingWindowActivity

Parameter Datatype Description
EngagedLicenses number Number of licenses with activity detected in the specified rolling window
InactiveLicenses number Number of licenses with no activity detected in the specified rolling window
PercentageActive number Percentage of active users i.e. EngagedLicenses / ProvisionedLicenses. If there are 0 provisioned licenses this stat is null

Contract

Parameter Datatype Description
Summary object ContractSummary object

ContractSummary

Parameter Datatype Description
StartDate string Contract start date, in YYYY-MM-DD format
EndDate string Contract end date, in YYYY-MM-DD format
AutoRenews boolean Whether the contract renews automatically
LicensesPurchased number Number of licenses purchased under the contract
TermMonths number Contract term in months
AnnualAmount object Annualized cost of the contract, the object contains a number amount and a string currency attribute
TermAmount object Total cost of the contract, the object contains a number amount and a string currency attribute

FiscalDate

Parameter Datatype Description
FiscalYear string Fiscal year for which spend data is being returned
AsOfMonth string Month (in 'MM' format) till which data for the fiscal year above is being returned

FiscalDateRange

Parameter Datatype Description
Start string Fiscal spend data start date, in YYYY-MM-DD format
End string Fiscal spend data end date, in YYYY-MM-DD format

FiscalSpend

Parameter Datatype Description
TotalSpend object Total app spend including expense management and erp spend, see Cost object below
ExpenseManagementSpend object Total expense management spend, see Cost object below
ErpSpend object Total enterprise resource planning (ERP) app spend, see Cost object below

PreviousYearFiscalSpend

Parameter Datatype Description
TotalSpend object Total app spend including expense management and erp spend for previous year
ExpenseManagementSpend object Total expense management spend for previous year.
ErpSpend object Total enterprise resource planning (ERP) app spend for previous year

Cost

Parameter Datatype Description
Amount number Can represent contract cost, past 12 month spend etc.
Currency string Currency code e.g. USD, GBP etc.

Compliance

Parameter Datatype Description
ISO27001 string One of "COMPLIANT", "NON_COMPLIANT" or "UNKNOWN"
SOC2 string One of "COMPLIANT", "NON_COMPLIANT" or "UNKNOWN"
GDPR string One of "COMPLIANT", "NON_COMPLIANT" or "UNKNOWN"
FedRAMP string One of "COMPLIANT", "NON_COMPLIANT" or "UNKNOWN"
Fisma string One of "COMPLIANT", "NON_COMPLIANT" or "UNKNOWN"
Swiss-U.S. Privacy Shield string One of "COMPLIANT", "NON_COMPLIANT" or "UNKNOWN"
CCPA string One of "COMPLIANT", "NON_COMPLIANT" or "UNKNOWN"

SSOProtocols

Parameter Datatype Description
DetectedProtocols array List of strings representing sso protocols detected on the app
SupportedProtocols array List of strings representing sso protocols supported on the app. Not defined for application instances
DataSources array List of strings representing display names of the SSO providers through which SSO data was detected

AppContacts

Parameter Datatype Description
NumContacts number Total number of app owners for the app across all types
Finance_Contacts array List of AppOwner objects representing finance app owners. Key absent if there are no owners of this type
Security_Contacts array List of AppOwner objects representing security app owners. Key absent if there are no owners of this type
IT_Contacts array List of AppOwner objects representing IT app owners. Key absent if there are no owners of this type
Legal_Contacts array List of AppOwner objects representing legal app owners. Key absent if there are no owners of this type
Functional_Contacts array List of AppOwner objects representing functional app owners. Key absent if there are no owners of this type
Vendor_Contacts array List of AppOwner objects representing vendor app owners. Key absent if there are no owners of this type
Procurement_Contacts array List of AppOwner objects representing procurement app owners. Key absent if there are no owners of this type
Other_Contacts array List of AppOwner objects representing other app owners. Key absent if there are no owners of this type

AppOwner

Parameter Datatype Description
Name string App owner name
Email string App owner email