Create, update, or delete KPIs for your institution

The modifyKpis mutation allows you to create new KPIs or update existing KPIs.

The mutation accepts a single kpis argument, which should be an array of KpiInput objects.

mutation {  
  modifyKpis(  
    kpis: # [KpiInput] Array of KpiInput objects  
  )  
}

KpiInput

The KpiInput object contains all the attributes for the KPI you want to create or update. If you provide a uuid for an existing KPI at your institution, it will be updated with the attributes provided. However, if you provide a new uuid, a new record will be created with the attributes provided.

mutation {
  modifyKpis(
    kpis: [
      {
        uuid: "cfc559be-a810-40b7-9ba1-d5240e88db81", # New UUID creates a new record
        #...
      },
      {
        uuid: "cfc559be-a810-40b7-9ba1-d5240e88db81", # Existing UUID updates an existing record
        #...
      }
    ]
  )
}

athleteFacing [Boolean]

The athleteFacing attribute designates whether or not athletes can view their performance history for the KPI from their individual account (defaults to true).

description [String]

The description attribute allows you to provide instructions or notes about the KPI for athletes and coaches.

delete [Boolean]

The delete attribute allows you to flag a KPI for deletion (only applicable for existing KPIs). Note that deletion happens asynchronously, so it may take a few seconds for the delete operations to actually occur.

exerciseName* [String]

The exerciseName attribute is the name of the exercise or movement being evaluated as part of the KPI.

measurementType* [String]

The measurementType attribute indicates the variable dimension of measurement for the KPI. For example, a Back Squat 1 Rep Max uses weight and reps as parameters of it's evaluation, but weight is the primary variable that is being tested, while "1 rep" is constant.

Allowed values are "calories", "distance", "heart_rate", "height", "reps", "speed", "time", "watts", and "weight".

Note: The measurementType attribute forces a true value for the measure[type] attribute that corresponds to the selected measurement type. For example, if the measurementType is "weight", then the measureWeight attribute is forced to be true. Other measure[type] attributes can also be true, but the one corresponding to the measurementType must be true.

name* [String]

The name attribute is the name of the KPI, e.g. "Back Squat 1RM."

uuid* [String]

The uuid attribute is the KPI's unique identifier. It must conform to the standard UUID string format.

--Calories--

measureCalories [Boolean]

The measureCalories attribute indicates whether or not the KPI includes a calories dimension.

caloriesMeasurement [Float]

The caloriesMeasurement attribute specifies the value of the calories dimension, e.g. the number calories on a ski erg machine.

--Distance--

measureDistance [Boolean]

The measureDistance attribute indicates whether or not the KPI includes a distance dimension.

distanceMeasurement [Float]

The distanceMeasurement attribute specifies the value of the distance dimension, e.g. the distance jumped.

distanceMeasurementUnit [String]

The distanceMeasurementUnit attribute specifies the unit of measurement for the distance value. Allowed values are "centimeters", "feet", "inches", "kilometers", "meters", "miles", and "yards".

--Heart Rate--

measureHeartRate [Boolean]

The measureHeartRate attribute indicates whether or not the KPI includes a heart rate dimension.

heartRateMeasurement [Float]

The heartRateMeasurement attribute specifies the value of the heart rate dimension, e.g. an anaerobic threshold (heart rate measurements are always measured in beats per minute).

--Height--

measureHeight [Boolean]

The measureHeight attribute indicates whether or not the KPI includes a height dimension.

heightMeasurement [Float]

The heightMeasurement attribute specifies the value of the height dimension, e.g. the height used for a box jump.

heightMeasurementUnit [String]

The heightMeasurementUnit attribute specifies the unit of measurement for the height value. Allowed values are "centimeters", "feet", "inches", and "meters".

--Reps--

measureReps [Boolean]

The measureReps attribute indicates whether or not the KPI includes a repetitions dimension.

repsMeasurement [Float]

The repsMeasurement attribute specifies the number of repetitions for the exercise.

--Speed--

measureSpeed [Boolean]

The measureSpeed attribute indicates whether or not the KPI includes a speed dimension.

speedMeasurement [Float]

The speedMeasurement attribute specifies the value of the speed dimension, e.g. the speed of a sprint.

speedMeasurementUnit [String]

The speedMeasurementUnit attribute specifies the unit of measurement for the speed value. Allowed values are "feet_per_second", "kilometers_per_hour", "meters_per_second", and "meters_per_minute", "miles_per_hour", "yards_per_second", and "yards_per_minute".

--Time--

measureTime [Boolean]

The measureTime attribute indicates whether or not the KPI includes a time dimension.

timeMeasurement [Float]

The timeMeasurement attribute specifies the value of the time dimension in seconds.

--Watts--

measureWatts [Boolean]

The measureWatts attribute indicates whether or not the KPI includes a watts dimension.

wattsMeasurement [Float]

The wattsMeasurement attribute specifies the value of the watts dimension, e.g. the watts output of a stationary bike.

--Weight--

measureWeight [Boolean]

The measureWeight attribute indicates whether or not the KPI includes a weight dimension.

weightMeasurement [Float]

The weightMeasurement attribute specifies the value of the weight dimension, e.g. the weight on the bar.

weightMeasurementUnit [String]

The weightMeasurementUnit attribute specifies the unit of measurement for the weight value. Allowed values are "pounds" and "kilograms".

Sample Mutation

Putting it all together, a sample mutation might look something like the following:

mutation {
  modifyKpis(
    kpis: [
      {
        uuid: "bc7ec5fe-8508-4c11-bbd1-29be86a1f77e",
        name: "Bench Press 1RM",
        measurementType: "weight",
        exerciseName: "Bench Press",
        measureReps: true,
        repsMeasurement: 1
      },
      {
        uuid: "8ec74779-49ed-431c-a3eb-9271a4f22336",
        name: "Back Squat 1RM",
        measurementType: "weight",
        exerciseName: "Back Squat"
        measureReps: true,
        repsMeasurement: 1
      }
    ]
  ) {
    kpis {
      persisted,
      uuid
    }
  }
}

This would return a JSON response like the following:

{
  "data": {
    "modifyKpis": {
      "kpis": [
        {
          "persisted": true,
          "uuid": "bc7ec5fe-8508-4c11-bbd1-29be86a1f77e"
        },
        {
          "persisted": true,
          "uuid": "8ec74779-49ed-431c-a3eb-9271a4f22336"
        }
      ]
    }
  }
}

* indicates required attribute