info
This app connector is in a Beta state.
App summaries
This endpoint enables you to query the entire list of apps that are a part of your company's portfolio. The response returned provides a
small set of app attributes such as ApplicationId, AppStatus, and VendorName.
If you want more detailed information about a particular app, use the App details endpoint with an ApplicationId
provided from this endoint.
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/v1/apps |
| Required Scope |
https://api.productiv.com/apps.read |
| Parameter |
Value |
| Content-Type |
application/json |
| Authorization |
Bearer access_token |
Query params
| Parameter |
Description |
| includeInactive |
Indicates whether inactive apps should be returned in the response |
| verbose |
Indicates whether AppDetails objects with all app attributes should be returned instead of AppSummary objects (see definitions below) in the response (example app details object) |
Response
If the request is successful, a JSON response is returned. The JSON object contains the following parameters:
| Parameter |
Datatype |
Description |
| Apps |
array |
List of AppSummary objects (see definition below). If the query parameter verbose is set to true, a list of AppDetails objects (see definition below) is returned instead. |
| AsOfDate |
string |
The date as of which information is being provided, in YYYY-MM-DD format. This is the latest date for which we have complete information for the set of apps in your portfolio. |
| ResponseTimeMs |
number |
Time taken by the server to process the request in milliseconds |
Example response
{
"AsOfDate": "2022-07-01",
"Apps": [
{
"ApplicationId": "productiv",
"ApplicationName": "Productiv",
"AppStatus": "Approved",
"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.",
"DiscoveryDate": "2021-01-01",
"LastActivityDate": "2022-01-01",
"FirstActivityDate": "2020-01-01",
"Labels": [],
"CustomFields": [
{
"FieldName": "field name",
"FieldValue": ["value1", "value 2"],
"FieldType": "multiselect"
"FieldKey": "dlk2fghaeoi342"
}
],
"Category": "IT Management",
"DataSources": ["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"
},
{
"ApplicationId": "app",
"ApplicationName": "App",
"AppStatus": "Not approved",
"Labels": ["label 1", "label 2"],
"CustomFields": [
{
"FieldName": "field name",
"FieldValue": "some text",
"FieldType": "text"
"FieldKey": "lgp5s4z4m0pd"
}
],
"Category": "Analytics",
"DataSources": ["Unmanaged SSO"],
"AppContacts": {
"NumContacts": 0
},
"IsDiscovered": true,
"VendorName": "Vendor"
}
],
"ResponseTimeMs": 2000
}
Objects
This section lists the objects that can be returned in a successful query, and describes their properties.
AppSummary
The AppSummary object is returned in the App List API response. It represents a single application, and contains a limited set of attributes for that app. 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 |
| 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 |
| 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 CustomFields 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 |
| IsInactive |
boolean |
Whether or not the application is inactive |
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 CustomFields 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 |
Hyperlink
| 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 |
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 |
| 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 |