OpenAPI Specification
swagger: '2.0'
info:
description: Public API Service
version: 2.0.0
title: public-api-service experimental metrics API
termsOfService: https://www.apptentive.com/terms/
host: data.apptentive.com
basePath: /
schemes:
- https
- http
tags:
- name: metrics
description: metrics data endpoints
paths:
/metrics/v2/apps:
get:
tags:
- metrics
summary: Get All Available Apps
description: Expose All Apps Assosiated with the JWT Token
operationId: getAllApps
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: false
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: false
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: the list of available apps
schema:
$ref: '#/definitions/RollupResponseArray'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/app-health/active-users:
get:
tags:
- metrics
summary: Active Users Data
description: Active Users Data
operationId: getActiveUsersData
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: period
in: query
description: 'granularity period: [ day | week | month | quarter | year | all ]'
required: false
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: active users data
schema:
$ref: '#/definitions/ActiveUserResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/app-health/interactions/notes:
get:
tags:
- metrics
summary: Get Notes Timeseries
description: Get Notes Timeseries
operationId: getNotes
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: notes timeseries data
schema:
$ref: '#/definitions/NotesDataResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/app-health/interactions/surveys:
get:
tags:
- metrics
summary: Get Surveys Timeseries
description: Get Surveys Timeseries
operationId: getSurveys
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: surveys timeseries data
schema:
$ref: '#/definitions/SurveyDataResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/app-health/love-percent:
get:
tags:
- metrics
summary: Love Percent Data
description: Love Percent Data
operationId: getLovePercentData
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: love percent timeseries data
schema:
$ref: '#/definitions/LovePercentResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/app-health/ratings:
get:
tags:
- metrics
summary: Star Ratings Data
description: Star Ratings Data
operationId: getRatings
produces:
- application/json
- application/xml
- text/csv
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: star ratings data
schema:
$ref: '#/definitions/RatingsDataResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/app-health/retention:
get:
tags:
- metrics
summary: Retention Data
description: Retention Data
operationId: getRetention
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: period
in: query
description: retention period, should be 'monthly' or 'daily'
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: retention data
schema:
$ref: '#/definitions/RetentionResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/fan-signals/counts:
get:
tags:
- metrics
summary: Fan Signals Counts Data
description: Fan Signals Counts Data
operationId: getFSCounts
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: fs counts data
schema:
$ref: '#/definitions/FanSignalsCountsArray'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/fan-signals/net-fan-score:
get:
tags:
- metrics
summary: Net Fan Score Data
description: Net Fan Score Data
operationId: getNFSData
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: net fan score data
schema:
$ref: '#/definitions/NetFanScoreResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/reviews:
get:
tags:
- metrics
summary: fetch app reviews
description: fetch app reviews
operationId: fetchReviews
consumes:
- application/json
produces:
- application/json
- application/xml
- text/csv
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: false
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: false
type: string
- name: page_size
in: query
description: the page size number
default: 100
required: false
type: string
- name: starts_after
in: query
description: the non-inclusive offset in in mongo id format (ex. 5e22085d5379215be800002b)
required: false
type: string
- name: regions
in: query
description: 'regions filter, can be comma-separated like US,CA,.. '
required: false
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: the reviews response
schema:
$ref: '#/definitions/ReviewResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/stats/events:
get:
tags:
- metrics
summary: Event Stats
description: Events Stats
operationId: getEventStats
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: include_all
in: query
description: include apptentive events
required: false
type: boolean
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: event stats data
schema:
$ref: '#/definitions/EventStatsArray'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/stats/event-trend:
get:
tags:
- metrics
summary: Event Trend Stats
description: Events Trend Stats
operationId: getEventTrendStats
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: label
in: query
description: event label
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: event stats trend data
schema:
$ref: '#/definitions/EventStatsTrend'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/stats/notes:
get:
tags:
- metrics
summary: Notes Stats
description: Notes Stats
operationId: getNotesStats
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: notes stats data
schema:
$ref: '#/definitions/NotesStatsArray'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/stats/surveys:
get:
tags:
- metrics
summary: Survey Stats
description: Surveys Stats
operationId: getSurveyStats
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: survey stats data
schema:
$ref: '#/definitions/SurveyStatsArray'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/survey/{survey_id}/stats:
get:
tags:
- metrics
summary: Survey Reporting Quantative Stats
description: Survey Reporting Quantative Stats
operationId: getOneSurveyStats
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: survey_id
in: path
description: the survey id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: false
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: false
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: survey questions stats data
schema:
$ref: '#/definitions/QuestionStatsArray'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/survey/{survey_id}/question/{question_id}/responses:
get:
tags:
- metrics
summary: Survey Reporting Text Responses
description: Survey Reporting Text Responses
operationId: getSurveyResponses
produces:
- application/json
- application/xml
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: survey_id
in: path
description: the survey id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: question_id
in: path
description: the question id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: false
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: false
type: string
- name: page
in: query
description: the page number
default: 0
required: false
type: string
- name: limit
in: query
default: 20
description: the limit of text responses, max limit is 1000
required: false
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: survey responses data
schema:
$ref: '#/definitions/SurveyResponses'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/survey/insights:
get:
tags:
- metrics
summary: fetch survey responses
description: fetch survey responses
operationId: fetch responses
consumes:
- application/json
produces:
- application/json
- application/xml
- text/csv
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: start_date
in: query
description: start date in format of YYYY-MM-DD
required: true
type: string
- name: end_date
in: query
description: end date in format of YYYY-MM-DD
required: true
type: string
- name: page
in: query
description: the page number
default: 0
required: false
type: string
- name: api_key
in: query
description: (optional) you can provide the X-API-KEY as 'api_key' query parameter
required: false
type: string
- name: accept
in: query
description: (optional) you can provide the accept header as 'accept' query parameter
required: false
type: string
responses:
'200':
description: the reviews response
schema:
$ref: '#/definitions/InsightsSurveyResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/gdpr-ccpa/requests:
post:
tags:
- metrics
summary: Triggers GDPR/CCPA request
consumes:
- application/json
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- in: body
name: gdprPayload
description: GDPR/CCPA request payload
schema:
$ref: '#/definitions/POSTGDPRRequest'
description: Triggers GDPR/CCPA request
operationId: postGDPRRequest
produces:
- application/json
security:
- ApiKeyAuth: []
responses:
'201':
description: the request is successfully submitted
schema:
$ref: '#/definitions/POSTGDPRResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
/metrics/v2/apps/{app_id}/gdpr-ccpa/requests/{request_id}:
get:
tags:
- metrics
summary: Fetches GDPR/CCPA request status
description: Fetches GDPR/CCPA request status
operationId: getGDPRRequest
produces:
- application/json
security:
- ApiKeyAuth: []
parameters:
- name: app_id
in: path
description: the application id in mongo id format (ex. 5e22085d5379215be800002b)
required: true
type: string
- name: request_id
in: path
description: the id of submitted GDPR/CCPA request
required: true
type: string
responses:
'200':
description: the gdpr/ccpa request status
schema:
$ref: '#/definitions/GetGDPRStatusResponse'
'400':
description: bad request
schema:
$ref: '#/definitions/ErrorBadRequestResponse'
'401':
description: not authorized
schema:
$ref: '#/definitions/ErrorUnauthorizedResponse'
'404':
description: not found
schema:
$ref: '#/definitions/ErrorNotFoundResponse'
'500':
description: internal server error
schema:
$ref: '#/definitions/ErrorInternalErrorResponse'
definitions:
SurveyDataResponse:
type: object
properties:
total:
type: integer
exa
# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/apptentive/refs/heads/main/openapi/apptentive-metrics-api-openapi.yml