Skip to main content

Coach Reporting

The core functionality of the Showpad Coach Reporting API service grants admin access to Showpad Coach resources and reporting information for an authorized Showpad account. The responses are JSON-formatted and provide all of the statistics shown on the Showpad Coach Reports page and more. There are several ways to leverage the Showpad Coach Reporting API service, including integration with other service providers, offering alternative presentations of Coach data, and automating procedures.

You can view definitions of all available reporting objects here.

Requests

Base Endpoint

The base endpoint is:

https://{{subdomain}}.showpad.biz/api/learn/reporting/v3/json

Every request needs to be prefixed with the base endpoint.

You can make the following requests with the base endpoint:

HTTP RequestDescription
GET /objectsList all possible objects.
GET /objects/{objectId}/describeDescribe fields and data types within an object.
GET /objects/{objectId}Receive paginated object results from a query.

Object

caution

Do not supply request parameters with this method.

To retrieve a list of all possible objects, you can make this request:

GET https://{{subdomain}}.showpad.biz/api/learn/reporting/v3/json/objects

A successful request will return a status 200 OK and an Object response in the response body.

{
"objects": [
{
"id": "string",
"displayName": "string",
"urls": {
"describe": "string",
"object": "string"
}
}
]
}
Property NameValueDescription
objectslistList of available report types.
objects[].idstringThe API identifier of the object.
objects[].displayNamestringThe display name of the object.
objects[].urls.describestringThe path of the URL to describe the object's fields.

Describe

caution

Do not supply request parameters with this method.

To retrieve the field descriptions and data types within an object, you can use the following request:

GET https://{{subdomain}}.showpad.biz/api/learn/reporting/v3/json/objects/{objectID}/describe

A successful request will return a status 200 OK and a Describe response in the response body.

{
"fields": [
{
"id": "string",
"displayName": "string",
"type": "string",
"options": ["string"]
}
]
}
Property NameValueDescription
fieldslistList of available fields for the chosen object.

See Report Definitions for details about all objects and their available fields.
fields[].idstringThe API identifier of the field.
fields[].displayNamestringThe display name of the field.
fields[].typestringThey type of value that is stored in the field. Possible values are: int, picklist, string, float, percent, and date.
fields[].optionslistThe options that are available for picklists.

Result

GET https://{{subdomain}}.showpad.biz/api/learn/reporting/v3/json/objects/{objectId}

Request Parameters

Parameter NameValueDescription
parametersstringBase64 encoded JSON representing requesting parameters.
{
"totalResults": int,
"pageResults": int,
"timeStamp": date,
"parameters": {
"page": int,
"resultsPerPage": int,
"filters": [
{
"fields": ["string"],
"sort": {
"field": "string",
"direction": "string"
}
}
],
"records": [
{
"field": fieldType,
...
}
]
}
}
Property NameValueDescription
totalResultsintThe total number of results based on the parameters of the query.
pageResultsintThe number of results on the current page.
timeStampdateThe timestamp when the data was most recently calculated.
parameters.pageintThe requested page.
parameters.resultspPerPageintThe total number of results per page.
parameters.filters[].fieldstringThe field being used for a filter.
parameters.filters[].operatorstringThe user-defined operator for a filter. *Possible values for operators will vary based on the field type.
parameters.filters[].valuesstringThe list of values used to filter a field. The fieldType is variable based on the field.
parameters.fieldslistThe list of fields to be included in the result.
parameters.sort.fieldstringThe chosen field for the sort.
parameters.sort.directionstringThe direction of the sort. Possible values are: asc or desc.
records[].fieldfieldTypeAn individual record for the requested data. The fieldType is variable based on the field.

Parameter creation for results request

{
"page": int,
"resultsPerPage": int,
"filters": [
{
"field": "string",
"operator": "string",
"values": [fieldType]
}
],
"fields": ["string"],
"sort": {
"field": "string",
"direction": "string"
}
}
Property NameValueDescription
pageintThe requested page.
resultsPerPageintSet the total number of results per page. *Must be between 1 and 1000.
filters[].fieldstringThe field being used for a filter.
filters[].operatorstringThe user-defined operator for a filter. Possible values for operators will vary based on the field type.
filters[].valueslistThe list of values used to filter a field. The fieldType variable is based on the field.
fieldslistThe list of fields to be included in the result.
sort.fieldstringThe chosen field for the sort.
sort.directionstringThe direction of the sort. Possible values are asc or desc.

Any requests made without specific parameters will be set to the default values. Once the parameters are set, encode the JSON to base64 and pass it as the value for parameters in the request query string.

Operators

OperatorDescriptionAvailable Field Types# of Values.
eqEqual tostring, int, float, percent, date1.
neNot equal tostring, int, float, percent, date1.
coContainsstring1.
bwBegins withstring1.
ncNot containsstring1.
inInpicklistAt least 1.
ltLess thanint, float, percent, date1.
leLess than or equal toint, float, percent, date1.
gtGreater thanint, float, percent, date1.
geGreater than or equal toint, float, percent, date1.
beBetweenint, float, percent, date2.
nbNot betweenint, float, percent, date2.

Example Request

The parameters below will return the first 100 curriculums with the title "Example Curriculum", sorted by Curriculum Title ascending.

{
"page": 1,
"resultsPerPage": 100,
"filters": [
{
"field": "curriculumTitle",
"operator": "eq",
"values": ["Example Curriculum"]
}
],
"fields": [
"curriculumTitle",
"courseCount",
"userCount",
"startCount",
"startPercentage",
"testAverage",
"pitchAverage"
],
"sort": {
"field": "curriculumTitle",
"direction": "asc"
}
}

Compressed and encoded to base64, the above JSON gives the following result:

ewogInBhZ2UiOiAxLAogInJlc3VsdHNQZXJQYWdlIjogMTAwLAogImZpbHRlcnMiOiBbCiB7CiAgICJmaWVsZCIgOiAgImN1cnJpY3VsdW1UaXRsZSIsCiAgICJvcGVyYXRvciIgOiAiZXEiLAogICAidmFsdWVzIjogWwogICAiRXhhbXBsZSBDdXJyaWN1bHVtIgogICBdCiAgfQogXSwKICJmaWVsZHMiOiBbCiAiY3VycmljdWx1bVRpdGxlIiwKICJjb3Vyc2VDb3VudCIsCiAidXNlckNvdW50IiwKICJzdGFydENvdW50IiwKICJzdGFydFBlcmNlbnRhZ2UiLAogInRlc3RBdmVyYWdlIiwKICJwaXRjaEF2ZXJhZ2UiCiAgXSwKICAic29ydCI6IHsKICAiZmllbGQiOiAiY3VycmljdWx1bVRpdGxlIiwKICAiZGlyZWN0aW9uIjogImFzYyIKICB9CiB9

Adding this base64 encoded JSON as the value for parameters, the configuration will be sent to the server. See the full example below.

Example cURL Request

curl -H "Authorization: Bearer xxxxxxxxxxxxxxxxxxx" https://{{subdomain}}.showpad.biz/api/learn/reporting/v3/json/objects/Curriculum?parameters=ewogInBhZ2UiOiAxLAogInJlc3VsdHNQZXJQYWdlIjogMTAwLAogImZpbHRlcnMiOiBbCiB7CiAgICJmaWVsZCIgOiAgImN1cnJpY3VsdW1UaXRsZSIsCiAgICJvcGVyYXRvciIgOiAiZXEiLAogICAidmFsdWVzIjogWwogICAiRXhhbXBsZSBDdXJyaWN1bHVtIgogICBdCiAgfQogXSwKICJmaWVsZHMiOiBbCiAiY3VycmljdWx1bVRpdGxlIiwKICJjb3Vyc2VDb3VudCIsCiAidXNlckNvdW50IiwKICJzdGFydENvdW50IiwKICJzdGFydFBlcmNlbnRhZ2UiLAogInRlc3RBdmVyYWdlIiwKICJwaXRjaEF2ZXJhZ2UiCiAgXSwKICAic29ydCI6IHsKICAiZmllbGQiOiAiY3VycmljdWx1bVRpdGxlIiwKICAiZGlyZWN0aW9uIjogImFzYyIKICB9CiB9