Exploring Experience programs and schemas
Experience Programs establish a referential data structure essential for other products and services. For example, Profiles use one or more Experience Programs — each containing data schemas that map program-specific data in feedback records to new tables — to increase the speed at which data can be processed.
Explore the Experience programs available for your instance and their schemas requesting the programs
and programRecordSchemas
nodes, respectively.
Example: Exploring Experience programs
query experiencePrograms {
programs(
first: 3
){
nodes {
name
id
createdBy
createdOn
description
status
responsesCount
__typename
}
}
}
Sample response
{
"data": {
"programs": {
"nodes": [
{
"name": "Contact Center transactional agent interaction",
"id": "6688cde1-3d7f-4486-b9ec-076c73d51364",
"createdBy": "_medallia_system_test",
"createdOn": "2021-07-23 04:57:02",
"description": "Program: Contact Center transactional agent interaction. Created by Merlin Spell",
"status": "ACTIVE",
"responsesCount": 0,
"__typename": "Program"
},
{
"name": "Retail Store e-receipt",
"id": "9a3317f9-dc77-4430-bced-b35d976d1d31",
"createdBy": "_medallia_system_test",
"createdOn": "2021-07-23 04:56:07",
"description": "Program: Retail Store e-receipt. Created by Merlin Spell",
"status": "ACTIVE",
"responsesCount": 0,
"__typename": "Program"
},
{
"name": "Wealth Management Client Onboarding",
"id": "abbb51a8-7792-4c41-b731-c873b492dd72",
"createdBy": "_medallia_system_test",
"createdOn": "2021-07-23 04:56:56",
"description": "Program: Wealth Management Client Onboarding. Created by Merlin Spell",
"status": "ACTIVE",
"responsesCount": 0,
"__typename": "Program"
}
]
}
},
"errors": null,
"_links": null,
"_allowed": [
"POST",
"GET"
]
}
Example: Exploring Experience program schemas
query recordSchemas {
programRecordSchemas(
first:3
){
nodes {
name
id
attributes {
nodes {
key
name
type
containsPii
}
}
}
}
}
Sample response
{
"data": {
"programRecordSchemas": {
"nodes": [
{
"name": "B2B Onboarding program",
"id": "ea891440-f715-43dd-a275-44cbd353dae9",
"attributes": {
"nodes": [
{
"key": "q_bp_b2b_ltr_scale",
"name": "Likelihood to Recommend",
"type": "ENUM",
"containsPii": false
},
{
"key": "timestamp",
"name": "Creationdate",
"type": "DATETIME",
"containsPii": false
}
]
}
},
{
"name": "B2B Onsite Service program",
"id": "cdf759c8-3bef-4c13-afca-159fb8bcc750",
"attributes": {
"nodes": [
{
"key": "q_bp_svc_ltr_scale",
"name": "Likelihood to Recommend Service",
"type": "ENUM",
"containsPii": false
},
{
"key": "timestamp",
"name": "Creationdate",
"type": "DATETIME",
"containsPii": false
}
]
}
},
{
"name": "B2B Project program",
"id": "3d69e34d-1eb6-458a-a726-53826937eab5",
"attributes": {
"nodes": [
{
"key": "q_bp_proj_ltr_scale",
"name": "Likelihood to Recommend Project",
"type": "ENUM",
"containsPii": false
},
{
"key": "timestamp",
"name": "Creationdate",
"type": "DATETIME",
"containsPii": false
}
]
}
}
]
}
},
"errors": null,
"_links": null,
"_allowed": [
"POST",
"GET"
]
}
Filters and pagination for schemas
Use a filter like the one shown below to get all fields for a specific program. By defining the parameter first
on the internal attributes
node — and not on the programRecordSchemas
— you get the data of all fields.
query experienceProgramSchema {
programRecordSchemas(
ids: "51c1a508-cf61-4be7-901c-87f3989ab7e1"
) {
nodes {
name
id
attributes(
first: 300
after: null,
) {
nodes {
key
name
type
containsPii
}
pageInfo {
endCursor
hasNextPage
}
totalCount
}
}
}
}
The endCursor
returned in the previous response should be added as part of the pagination of the attributes in the next query. For example, if the response contains the following pagination information:
[...]
"pageInfo": {
"hasNextPage": true,
"endCursor": "xWSJSCIGh9+8WBydu4cOW5xdK9Q"
}
[...]
The programRecordSchemas
query to get the next set of data looks like this:
query experienceProgramSchema {
programRecordSchemas(
ids: "51c1a508-cf61-4be7-901c-87f3989ab7e1"
) {
nodes {
name
id
attributes(
first: 300
after: "xWSJSCIGh9+8WBydu4cOW5xdK9Q",
) {
nodes {
key
name
type
containsPii
}
pageInfo {
endCursor
hasNextPage
}
totalCount
}
}
}
}
The query below is used to get the first 50 Experience programs and the first 50 fields for each program.
query getProgramSchemas {
programRecordSchemas(
first: 50
after: null
) {
totalCount
nodes {
id
name
attributes(first: 50, after: null) {
totalCount
pageInfo {
endCursor
hasNextPage
}
nodes {
containsPii
key
name
type
}
}
}
}
}
The next query below has additional pagination elements, it fetches the first 50 Experience programs and the first 100 fields for each program.
query getProgramSchemas {
programRecordSchemas(
first: 50
after: null
) {
totalCount
pageInfo {
endCursor
hasNextPage
}
nodes {
id
name
attributes(first: 100, after: null) {
totalCount
pageInfo {
endCursor
hasNextPage
}
nodes {
key
name
type
}
}
}
}
}