Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status
colourGreen
titleAccurate

Code Block
languagejs
linenumberstrue
{
  "config": { // All clients listen here permanently
    "articleBaseUrl": "http://cloud-storage.com/articles/"
,
 },   "userslegalsUrl": {"http://impossible.am/legalstuff/",
    "user_id_01for7MW": {
   // Clients listen here permanently"facebookPage": "",
      "usernamefacebookGroup": "user", // [default:null]
      "emailinstagramUser": "user@somewhere.com", //
[default:null]      "faqsUrl": "fitnessLevel":
10, // [default:10]  },
    "fitnessBiasforAfterburner": 1, // [default:1]{
      "createdfacebookPage": 987654345, // Unix timestamp (seconds) [default:0]"",
      "maxImpactCreditfacebookGroup": 3, // [default:0]"",
      "impactCreditinstagramUser": 0.9, // [default:0]"",
      "updatedICfaqsUrl": 987654345, // Unix timestamp (seconds) [default:0]
""
    }
  },
  "triggersFiredusers": {
    "triggerIduser_id_01": true, "triggerId_02": true }{ // Clients listen here permanently
      "username": "user", // [default:null]
      "sessionsemail": {
 "user@somewhere.com", // [default:null]
      "for7MWfitnessLevel": 210, // [default:010]
 
      "forAfterburnerfitnessBias": 01, // [default:0]
      },1]
      "totalActivitiescreated": 2987654345, // Unix timestamp (seconds) [default:0]
      "totalActivities7MWmaxImpactCredit": 13, // [default:0]
      "totalActivitiesAFimpactCredit": 10.9, // [default:0]
      "firstActivity7MWupdatedIC": 987654345, // Unix timestamp (seconds) [default:0]
      "firstActivityAFtriggersFired": 987654345 // Unix timestamp (seconds){ "triggerId_01": true, "triggerId_02": true }, // [default:0null]
    }   },"sessions": {
  "visibles": {     "workoutDefsfor7MW": {2, // [default:0]
Workout defs that are visible to the user "forAfterburner": 0 // [default:0]
  "user_id_01": {   },
      "for7MWtotalActivities": {2, // 7MW clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
   [default:0]
      "totalActivities7MW": 1, // [default:0]
      "wktdef1totalActivitiesAF": {1,     // [default:0]
       "recommendedfirstActivity7MW": ""987654345, // NotUnix recommended, just visible //timestamp (seconds) [default:null0]
    
       "lockedfirstActivityAF": true987654345, // NotUnix availabletimestamp to user (unlocked via IAP and/or journey trigger) [default:false]
  	        "lockString": "Finish 6 more workouts before Thurs 9th June"(seconds) [default:0]
      "timedNotifSeqVersion": 0, // Version of timed notif sequence user is on (server use) [default:0]
      "testMode": false, // DisplayedPuts tothe user [default:null]
     app in 'test mode' for this user [default:false]
      "MWInotifTokens": 0.54,{ // [default:0.5]
    APN tokens for the user's devices [default:null]
        "breakdownfor7MW": { "apn_token": true }, // Where 'api_token' is the actual token string
        "epocforAfterburner": 0.1, // [default:0.25]
{ "apn_token": true }
      }
    }
 "cardio": 0.1, // [default:0.25]
 },
  "visibles": {
    "workoutDefs": { // Workout defs that are visible  "metabolic": 0.1, // [default:0.25]to the user
      "user_id_01": { 
        "strengthfor7MW": 0.1{ // [default:0.25]
        7MW clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
   }       "wktdef1":  {
 },           "wktdef2recommended": {"", // Not recommended, just visible // [default:null]
     "recommended": "You need to work on your abs"locked": true, // RecommendedNot andavailable reasonto foruser this(unlocked tovia beIAP shownand/or tojourney user
trigger) [default:false]
  	         "lockedlockString": false, // Available to user
            "lockString": "","Finish 6 more workouts before Thurs 9th June", // Displayed to user [default:null]
            "MWI": 0.54, // [default:0.5]
            "breakdown": {
              "epoc": 0.1, // [default:0.25]
              "cardio": 0.1, // [default:0.25]
              "metabolic": 0.1, // [default:0.25]
              "strength": 0.1 // [default:0.25]
            }
          },
         }, "wktdef2": {
      "forAfterburner": { // Afterburner clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
          "wktdef1": {"recommended": "You need to work on your abs", // Recommended and reason for this to be shown to user
            "recommendedlocked": "", // Not recommended, just visible
  	        "locked": falsefalse, // Available to user
   	         "lockString": "",
            "MWI": 0.54,
            "breakdown": {
              "epoc": 0.1,
              "cardio": 0.1,
              "metabolic": 0.1,
              "strength": 0.1
            }
          },
        },
 "wktdef2": {      "forAfterburner": { // Afterburner clients listen here "recommended": "You need to work on your abs", // Recommended and reason for this to be shown to userpermanently for ChildAdded, ChildChanged and ChildRemoved
          "wktdef1": {
            "lockedrecommended": "", // Not recommended, just visible
  	        "locked": false, // Available to user
   	         "lockString": "",
            "MWI": 0.54,
            "breakdown": {
              "epoc": 0.1,
              "cardio": 0.1,
              "metabolic": 0.1,
              "strength": 0.1
            }
          },
        }  "wktdef2":  {
  }     },     "routinesrecommended": {"You need to work on your  "user_id_01": { 
        "for7MW": { // 7MW clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
          "routine_id_01": {abs", // Recommended and reason for this to be shown to user
            "locked": false, // Available to user
            "lockedlockString": true"",
 // Not available to user (unlocked via IAP and/or journey trigger) [default:false] "MWI": 0.54,
            "lockStringbreakdown": "Finish 6{
more workouts before Thurs 9th June" // Displayed to user [default:null]    "epoc": 0.1,
     },         "cardio":  "routine_id_02": {0.1,
              "lockedmetabolic": true0.1,
              "lockStringstrength": "" // No lock string, so only unlocked via IAP [default:null]0.1
            }
       },   }
       "routine_id_03": { }
      }
     "locked": false, // Available},
    "routines": {
       "lockStringuser_id_01": ""{ 
        "for7MW": }
        },
        "forAfterburner": { /{ // 7MW clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
          "routine_id_0301": {
            "locked": falsetrue, // Not Availableavailable to user (unlocked via IAP and/or journey trigger) [default:false]
   "lockString": ""        "lockString": "Finish 6 }more workouts before Thurs 9th June" // Displayed to }user [default:null]
     }     }
,
 },   "workouts": {     "activitiesroutine_id_02": {
      "user_id_01": { // Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved"locked": true,
            "workout_id_01lockString": {"" // Clients post new activity to here with auto id, server listens No lock string, so only unlocked via IAP [default:null]
          },
          "workoutDefIdroutine_id_03": "wktdef1", // [no default]{
            "finishlocked": 987654345false, // Unix timestamp (seconds) [default:0]Available
            "iterationslockString": 1.5, // Number of times it was performed [default:1]""
          }
       "exertion": 0.5, // [default:0.5]
  },
        "finalHeartRateBPMforAfterburner": 160,{ // [default:140]7MW clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
 "finalHeartRateDelay": 0, // Length of delay (in secs) after the workout before the HR was measured (0 if they didn't press the 'start again' button) [default:0]
		  "app": "7MW" // Short code of the app the activity was performed in: 7MW, AF, etc [default:null]
        }
  "routine_id_03": {
            "locked": false, // Available
            "lockString": ""
          }
        }
      }
    }
 
  },

   "resultsworkouts": {
      ""activities": {
      "user_id_01": { // Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
        "workout_id_01": { // Clients Serverpost postsnew workoutactivity resultsto here with auto id, server listens
          "workoutDefId": "wktdef1", // [no default]
          "finish": 987654345, // Unix timestamp (seconds) // [no default:0]
          "AWIiterations": 01.15, // Number of times it was performed [default:0.51]
          "responseDurationexertion": 34560.5, // [default: 0.5]
          "intensityfinalHeartRateBPM": 0.9160, // [default:0.5140]
		  "app": "7MW", // Short code of the app the activity was performed in: 7MW, AF, etc [no default]
          "responses": { // [no default]
            "cardio": {
              "stress": 43,   "finalHeartRateDelay": 0, // Length of delay (in secs) after the workout before the HR was measured (0 if they didn't press the 'start again' button) [default:0]
		  "app": "7MW" // Short code of the app the activity was performed in: 7MW, AF, etc [default:null]
        }
      }
 "magnitudeProduct": 0.6,  },
    "results": {
      "halflifeProductuser_id_01": 0.3,
      { // Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
        "durationworkout_id_01": 5678,
    { // Server posts workout results here
          "volumeworkoutDefId": 3456
  "wktdef1", // [no default]
         }, "finish": 987654345, // Unix timestamp (seconds) //      "strength": {
  [no default]
           "stressAWI": 430.1,    // [default:0.5]
          "magnitudeProductresponseDuration": 0.63456, // [default:  0]
          "halflifeProductintensity": 0.39, // [default:0.5]
		  "app": "7MW", // Short code of the app the  "duration"activity was performed in: 56787MW, AF, etc [no default]
          "volumeresponses": 3456{ //            },[no default]
            "epoccardio": {
              "stress": 43,
              "magnitudeProduct": 0.6,
              "halflifeProduct": 0.3,
              "duration": 5678,
              "volume": 3456
            },
            "metabolicstrength": {
              "stress": 43,
              "magnitudeProduct": 0.6,
              "halflifeProduct": 0.3,
              "duration": 5678,
              "volume": 3456
            },
            "epoc": {
   },           "muscleGroupsstress": 43,
 {             "uppermagnitudeProduct": 0.36, //
[default: 0.3]             "lowerhalflifeProduct": 0.3, //
[default: 0.3]             "coreduration": 0.4 // [default: 0.3]5678,
              }"volume": 3456
       }     },
 }     }   },   "afterburnmetabolic": {
 
  "user_id_01": { // Clients listen here permanently       "startstress": 34567898743,
 // Unix timestamp (seconds) // [no default]       "responsemagnitudeProduct": { // [default:null] 0.6,
              "resolutionhalflifeProduct": 600, // Secs0.3,
              "epoc": [0.6,0.5,0.3,0.2,0.1,0.0]duration": 5678,
              "volume": 3456
            }
          },
          "muscleGroups": {
            "upper": 0.3, // [default: 0.3]
            "lower": 0.3, // [default: 0.3]
            "core": 0.4 // [default: 0.3]
          }
        }
      }
    }
  },
  "afterburn": {
    "user_id_01": { // Clients listen here permanently
      "start": 345678987, // Unix timestamp (seconds) // [no default]
      "response": { // [default:null]
        "resolution": 600, // Secs
        "epoc": [0.6,0.5,0.3,0.2,0.1,0.0],
        "cardio": [0.6,0.5,0.3,0.2,0.1,0.0],
        "strength": [0.6,0.5,0.3,0.2,0.1,0.0],
        "metabolic": [0.6,0.5,0.3,0.2,0.1,0.0]
      },
      "impactCredit": { // [default:null]
        "resolution": 600, // Secs
        "futureCredit": 0.9,
        "pending": [0.0,0.1,0.2,0.3,0.4,0.5]
      },
      "messages": [ // Messages displayed below the radar chart [default:null]
        {"t":0,"body":"Restoring body temperature", "detail": ""},
        "cardio{"t":120,"body": [0.6,0.5,0.3,0.2,0.1,0.0"Replenishing glycogen stores", "detail": "detail/glycogen"}
      ],
      "notifications":  "strength": [0.6,0.5,0.3,0.2,0.1,0.0],[ // [default:null]
        "metabolic{"t":6000,"body": [0.6,0.5,0.3,0.2,0.1,0.0]
      },"Great workout! You're still burning calories and building strength."},
        {"impactCreditt": { // [default:null]
        "resolution": 600, // Secs
 14400,"body":"Fitness test unlocked! You're ready to take another fitness test."}
      ]
    }
 "futureCredit": 0.9 },
  "timelineArticles": {
    "pendinguser_id_01": [0.0,0.1,0.2,0.3,0.4,0.5]
      },
      "messages": [ // Messages displayed below the radar chart [default:null]{ // Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
      "article_id_01": {
        {"tdate":0,"body":"Restoring body temperature", "detail": ""},
   4567890987, // Unix timestamp (seconds) // [no default]
     {"t":120,"body":"Replenishing glycogen stores", "detailtitle": "detail/glycogen"}
      ],Post title", // [no default]
        "notificationsread": [false, // [default:nulltrue]
        {"tlocation":6000,"body":"Great workout! You're still burning calories and building strength."},
        {"t":14400,"body":"Fitness test unlocked! You're ready to take another fitness test."}
      ]
    }
  },
  "timelineArticles": {
    "user_id_01": { // Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved "post/location.html", // [no default]
		"icon": "default", // [default:"default"]
        "appMask": "7MW,AF", // [default: all apps]
        "article_id_01promptRating": {true // [default:false]
      "date": 4567890987, // Unix timestamp (seconds) // [no default]
   }
    }
  },
  "definitions": {
    "titleroutines": "Post title",{ // [no default]
  Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
      "readroutine_id_01": false, // [default:true]{
        "locationtitle": "post/location.htmlThe Wonder Routine", // [no default]
		"icon": "default", // [default:"default"]
        "appMaskimage": "wonder-routine"7MW,AF" // [default: all apps"default-routine"]
      }  "desc": "Big long }description",   },// [default:null]
  "definitions": {     "routinesappStoreId7MW": {"routine01", // Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
      "routine_id_01": { StoreKit product id [default:null]
        "in7MW": true, // For server use [default:false]
        "titleinAfterburner": "6 Week Wedding Routine", // [no defaultfalse, // For server use [default:false]
        "imagelockedIn7MW": "some_image"false, // For server use [default:"default-routine"false]
        "desclockedInAfterburner": "Big long description"false, // For server use [default:nullfalse]
        "appStoreId7MWvideo": "routine01", // StoreKit product id [default:null]
        "in7MWminFitnessLevel": true4, // For server use [default:false1]
        "inAfterburnerworkoutDefs": false,{ // For[no serverdefault]
use [default:false]         "workoutDefswktdef1": {
 [ // [no default]        "type": 1,  {// [default:1]
            "idtitle": "wktDef01Aerobic", // [no default]
          },  "image": "abs",        {// [default:"default"]
            "iddesc": "wktDef02Aerobic Basic Movement", // [default:null]
        }    "breakDuration": 5, //   ]
   // [default:10]
  }     },     "exerciseDefsappStoreId7MW": {"workout01", // StoreKit Clientsproduct listen here permanently for ChildAdded, ChildChanged and ChildRemovedid [default:null]
            "exdef1locked": {false, // For server use     "behaviour[default:false]
			"MWI": 10.54, // [default:1]0.5]
            "titleexercises": "Cruches",[ // [no default]
              {
   "video": "01-Crunches.mp4", // [no default]         "imageid": "absexdef1", // [default:"no default"]
        "desc": "A crunch begins with lying face up on the floor with knees bent. The movement begins by curling the shoulders towards the pelvis. The hands can be behind or beside the neck or crossed over the chest. Injury can be caused by pushing against the head or neck with hands.", // [default:null]"duration": 20 // [no default]
              },
              {
                "subtitleid": "Target your abs for a balanced set of stomach muscles.", // [default:null]"exdef2",
                "calPerSecduration": 5,15
// [default:0]         "skill": 0.2, // [default:0.5]
 },
       "strength": 0.7, // [default:0.5]    {
    "cardio": 0.1, // [default:0.5]         "epocid": 0.4, // [default:0.5]"exdef3",
                "metabolicduration": 0.4, // [default:0.5]10
          "upper": 0.5, // [default:0.5]
 },
       "core": 0.5, // [default:0.5]    {
    "lower": 0.5, // [default:0.5]         "needsHalfwaySwapid": "exdef4",
false // [default:false]       },       "exdef2duration": 5
   {          "behaviour": 1},
           "title": "Squats",  {
      "video": "02-Squats.mp4",         "imageid": "absexdef5",
        "desc": "Squats are an excellent exercise for training the lower body and core muscles, if done regularly they help to define thighs and buttocks.",
 "duration": 10
              }
      "subtitle": "Train your lower body and core."],
        "calPerSec": 4,   "adaptiveStress": {
    "skill": 0.2,         "strength": 0.62,    // [default:1]
    "cardio": 0.3,         "epoccardio": 0.49,    // [default:1]
    "metabolic": 0.6,         "uppermetabolic": 0.56,    // [default:1]
    "core": 0.5,         "lowerepoc": 0.5,6         "needsHalfwaySwap": true// [default:1]
       }     },
    "workoutDefs": { // Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
  "muscleStress": {
    "wktdef1": {         "typeupper": 110, // [default:1]
              "titlelower": "Aerobic"10, // [no default:1]
              "imagecore": "abs",10 // [default:"default"]1]
            }
"desc": "Aerobic Basic Movement", // [default:null]      }
     "breakDuration": 5, // // [default:10]
		"appStoreId7MW: "workout01", // StoreKit product id [default:null]}
      }
    },
    "in7MWexerciseDefs": true,{ // For server use [default:false]
  Clients listen here permanently for ChildAdded, ChildChanged and ChildRemoved
      "inAfterburnerexdef1": false, // For server use [default:false]{
        "exercisesbehaviour": [1, // [no default:1]
        "title":  {
   "Cruches", // [no default]
        "idvideo": "exdef101-Crunches.mp4", // [no default]
   
        "durationimage": 20"abs", // [no default:"default"]
        "desc": "A },crunch begins with lying face up on the floor with knees {bent. The movement begins by curling the shoulders towards the pelvis. The hands "id": "exdef2",
            "duration": 15
          },
     can be behind or beside the neck or crossed over the chest. Injury can be caused by pushing against the head or neck with hands.", // [default:null]
    {    "subtitle": "Target your abs for a balanced set of "id": "exdef3stomach muscles.",    // [default:null]
        "durationcalPerSec": 5, 10
// [default:0]
         }"skill": 0.2,   // [default:0.5]
       { "strength": 0.7, // [default:0.5]
        "idcardio": "exdef4"0.1,   // [default:0.5]
         "durationepoc": 0.4, // [default:0.5]
        "metabolic":  },
0.4, // [default:0.5]
         {
   "upper": 0.5, // [default:0.5]
        "idcore": "exdef5"0.5,    // [default:0.5]
        "durationlower": 10
 0.5, // [default:0.5]
        "needsHalfwaySwap": }false // [default:false]
      ]},

       "adaptiveStressexdef2": {
 
        "strengthbehaviour": 0.2, // [default:1]
1,
         "cardiotitle": 0.9, // [default:1]
"Squats",
         "metabolicvideo": 0.6, // [default:1]
 "02-Squats.mp4",
        "image": "abs",
        "epocdesc": 0.6 // [default:1]
        },
        "muscleStress": {
  "Squats are an excellent exercise for training the lower body and core muscles, if done regularly they help to define thighs and buttocks.",
        "uppersubtitle": "Train 10,your // [default:1]
 lower body and core.",
        "lowercalPerSec": 10, // [default:1]
 4,
        "coreskill": 10 // [default:1]0.2,
        }
      },"strength": 0.6,
        "wktdef2cardio": {0.3,
        "typeepoc": 10.4,
        "titlemetabolic": "Thai Boxing"0.6,
        "imageupper": "abs"0.5,
        "desccore": "Boxing With Kicking"0.5,
        "breakDurationlower": 4,
		"appStoreId7MW: "", // StoreKit product id0.5,
        "in7MWneedsHalfwaySwap": false,true
// For server use   }
     "inAfterburner": true},
// For server use "journeyTriggers": {
      "exercisesforAfterburner": [{
         "trigger01": {

           "idcategory": "exdef5achievement",
          "triggerType":  "durationactiveDaysInWeeks":,
15          "condition1": }4,           {
 // 4 active days
          "idcondition2": "exdef3"8, // every week for 8 weeks
      "duration": 10   "actions": [
      },      {"actionType":"postArticle","articleId":"article_id_01","data":"e.g. url parameters"},
  {             "id": "exdef1",
            "duration": 5{"actionType":"unlockWorkout","workoutDefId":"workoutDef_id_01","articleId":"article_id_02","data":""}
           }]
        ]},
        "stresstrigger02": {
          "strengthcategory": 0.2"education",
          "cardiotriggerType": 0.9,
          "metabolictotalActivities": 0.6,
          "epoccondition1": 0.6
        },10, // 10 activities
          "muscleStresscondition2": {0,           "upper": 10,// Not used
          "loweractions": [
10,            "core": 10
{"actionType":"postArticle","articleId":"article_id_01","data":"e.g. url parameters"}
       }   ]
   }     },
     "journeyTriggers: {},
      "forAfterburnerfor7MW": {
        "trigger01": {
          "category": "achievement",
          "triggerType": "activeDaysInWeeks",
          "condition1": 4, // 4 active days
          "condition2": 8, // every week for 8 weeks
          "actions": [
            {"actionType":"postArticle","articleId":"article_id_01","data":"e.g. url parameters"},
            {"actionType":"unlockWorkout","workoutDefId":"workoutDef_id_01","articleId":"article_id_02","data":""}
          ]
        },
        "trigger02": {
          "category": "education",
          "triggerType": "totalActivities",
          "condition1": 10, // 10 activities
          "condition2": 0, // Not used
          "actions": [
            {"actionType":"postArticle","articleId":"article_id_01","data":"e.g. url parameters"}
          ]
        }
      },
      "for7MW": {
   }
    "trigger01": {
          "category": "achievement",
   timedNotifs": {
      "triggerTypeforAfterburner": "activeDaysInWeeks",
 {
        "condition1notif01": 4, // 4 active days{
          "condition2deltaHours": 824, // everyDelta weekafter forAPN 8token weeksreg that the notif        "actions":is delivered [no  default]
          {"actionTypeseqVersion":"postArticle","articleId":"article_id_01","data":"e.g. url parameters"},
            {"actionType":"unlockWorkout","workoutDefId":"workoutDef_id_01","articleId":"article_id_02","data":""} 0, // Sequence version to allow future updates without flooding existing users [default:0]
          "title": "Title of ]notification", // [default:""]
      },    "body": "Body of notification"  "trigger02": {// [no default]
        },
 "category": "education",    },
      "triggerTypefor7MW": "totalActivities",
 {
        "condition1notif01": 10, // 10 activities{
          "condition2deltaHours": 024, // Not used
          "actionsseqVersion": [
0, 
          {"actionTypetitle": "postArticle","articleId":"article_id_01","data":"e.g. url parameters"}Title of notification",
          "body": "Body of ]notification"
        },
      }
    }
  },
  "receipts": {
    "user_id_01": {
      "receipt_auto_id_01": {
        "receipt": "receipt_data", // Written by the client after an IAP purchase
        "validation": { // Written by the server after the receipt has been processed
          "validationDate": 3456789, // Timestamp [default:0]
          "isValid": true [default:false]
        }
      }
    }
  },
}

...