{
  "openapi": "3.1.0",
  "info": {
    "title": "AI Fitness API (aifitnessapi.com)",
    "version": "1.0.0",
    "summary": "Verified fitness and health API reference data as read-only JSON.",
    "description": "Read-only JSON over the datasets AIFitnessAPI publishes at https://aifitnessapi.com/datasets: HealthKit type identifiers and metadata keys, Health Connect record types and permission strings, Wear OS Health Services data types, Google Health API data types, the HealthKit to Health Connect matrix, Bluetooth fitness GATT characteristic fields, pose-estimation keypoint maps, health and fitness MCP servers, dated ecosystem changes, the glossary, and the API directory.\n\n- No key and no sign-up. GET only; nothing is written and no user data is involved.\n- Every response is a static file built from the CC BY 4.0 downloads and regenerated on each deploy. Collections are served whole, with no pagination.\n- Every response carries `source` (the page carrying the sourced claims), `license`, `attribution` and `verified` (the date and what it means).\n- `null` means the source does not state it or it could not be verified. It never means zero, and it is never a guess.\n\nThe same data answers MCP tool calls at https://aifitnessapi.com/mcp (Streamable HTTP, stateless, read-only): healthkit_type, health_data_cross_platform, fitness_api_changes, fitness_api_glossary.",
    "license": {
      "name": "CC BY 4.0",
      "identifier": "CC-BY-4.0"
    },
    "contact": {
      "name": "AIFitnessAPI",
      "url": "https://aifitnessapi.com/about"
    }
  },
  "jsonSchemaDialect": "https://spec.openapis.org/oas/3.1/dialect/base",
  "servers": [
    {
      "url": "https://aifitnessapi.com"
    }
  ],
  "externalDocs": {
    "description": "Developer documentation",
    "url": "https://aifitnessapi.com/developers"
  },
  "tags": [
    {
      "name": "Discovery",
      "description": "The index and this document"
    },
    {
      "name": "API directory"
    },
    {
      "name": "Apple HealthKit"
    },
    {
      "name": "Android Health Connect"
    },
    {
      "name": "Wear OS Health Services"
    },
    {
      "name": "Cross-platform"
    },
    {
      "name": "Ecosystem changes"
    },
    {
      "name": "Glossary"
    },
    {
      "name": "Google Health API"
    },
    {
      "name": "Bluetooth GATT"
    },
    {
      "name": "MCP servers"
    },
    {
      "name": "Pose estimation"
    }
  ],
  "paths": {
    "/api/v1": {
      "get": {
        "operationId": "getIndex",
        "tags": [
          "Discovery"
        ],
        "summary": "Every collection, with its count, verified date and item URL template",
        "responses": {
          "200": {
            "description": "The discovery document",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiIndex"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/openapi.json": {
      "get": {
        "operationId": "getOpenApi",
        "tags": [
          "Discovery"
        ],
        "summary": "This OpenAPI 3.1 document",
        "responses": {
          "200": {
            "description": "The OpenAPI document",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/apis": {
      "get": {
        "operationId": "listApis",
        "tags": [
          "API directory"
        ],
        "summary": "API directory: every row",
        "description": "One row per product in the directory at /apis: how the vendor bills developers, what each end user must own or pay for, and what approval gates a launch, each quoted from the linked source page. No prices, by design.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/apis"
        },
        "responses": {
          "200": {
            "description": "24 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApisCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/apis/{id}": {
      "get": {
        "operationId": "getApi",
        "tags": [
          "API directory"
        ],
        "summary": "API directory: one row by id",
        "description": "One row per product in the directory at /apis: how the vendor bills developers, what each end user must own or pay for, and what approval gates a launch, each quoted from the linked source page. No prices, by design. The single-item response adds fields the collection leaves out.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "fitbit",
                "garmin",
                "oura",
                "whoop",
                "strava",
                "polar",
                "healthkit",
                "health-connect",
                "terra",
                "junction",
                "rook",
                "spike",
                "nutritionix",
                "edamam",
                "usda-fdc",
                "open-food-facts",
                "exercisedb",
                "wger",
                "kinestex",
                "sency",
                "quickpose",
                "mediapipe",
                "movenet",
                "apple-vision"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/healthkit/types": {
      "get": {
        "operationId": "listHealthkitTypes",
        "tags": [
          "Apple HealthKit"
        ],
        "summary": "HealthKit type identifiers: every row",
        "description": "Every identifier in HealthKit's four families (quantity, category, characteristic, workout activity type), read from Apple's documentation JSON. aggregation and unitFamily are derived from Apple's prose and are null where Apple does not state them.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/healthkit-identifiers"
        },
        "responses": {
          "200": {
            "description": "241 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthkitTypesCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/healthkit/types/{identifier}": {
      "get": {
        "operationId": "getHealthkitType",
        "tags": [
          "Apple HealthKit"
        ],
        "summary": "HealthKit type identifiers: one row by identifier",
        "description": "Every identifier in HealthKit's four families (quantity, category, characteristic, workout activity type), read from Apple's documentation JSON. aggregation and unitFamily are derived from Apple's prose and are null where Apple does not state them.",
        "parameters": [
          {
            "name": "identifier",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "activeEnergyBurned",
                "appleExerciseTime",
                "appleMoveTime",
                "appleSleepingBreathingDisturbances",
                "appleSleepingWristTemperature",
                "appleStandTime",
                "appleWalkingSteadiness",
                "atrialFibrillationBurden",
                "basalBodyTemperature",
                "basalEnergyBurned",
                "bloodAlcoholContent",
                "bloodGlucose",
                "bloodPressureDiastolic",
                "bloodPressureSystolic",
                "bodyFatPercentage",
                "bodyMass",
                "bodyMassIndex",
                "bodyTemperature",
                "crossCountrySkiingSpeed",
                "cyclingCadence",
                "cyclingFunctionalThresholdPower",
                "cyclingPower",
                "cyclingSpeed",
                "dietaryBiotin",
                "dietaryCaffeine",
                "dietaryCalcium",
                "dietaryCarbohydrates",
                "dietaryChloride",
                "dietaryCholesterol",
                "dietaryChromium",
                "dietaryCopper",
                "dietaryEnergyConsumed",
                "dietaryFatMonounsaturated",
                "dietaryFatPolyunsaturated",
                "dietaryFatSaturated",
                "dietaryFatTotal",
                "dietaryFiber",
                "dietaryFolate",
                "dietaryIodine",
                "dietaryIron",
                "dietaryMagnesium",
                "dietaryManganese",
                "dietaryMolybdenum",
                "dietaryNiacin",
                "dietaryPantothenicAcid",
                "dietaryPhosphorus",
                "dietaryPotassium",
                "dietaryProtein",
                "dietaryRiboflavin",
                "dietarySelenium",
                "dietarySodium",
                "dietarySugar",
                "dietaryThiamin",
                "dietaryVitaminA",
                "dietaryVitaminB12",
                "dietaryVitaminB6",
                "dietaryVitaminC",
                "dietaryVitaminD",
                "dietaryVitaminE",
                "dietaryVitaminK",
                "dietaryWater",
                "dietaryZinc",
                "distanceCrossCountrySkiing",
                "distanceCycling",
                "distanceDownhillSnowSports",
                "distancePaddleSports",
                "distanceRowing",
                "distanceSkatingSports",
                "distanceSwimming",
                "distanceWalkingRunning",
                "distanceWheelchair",
                "electrodermalActivity",
                "environmentalAudioExposure",
                "environmentalSoundReduction",
                "estimatedWorkoutEffortScore",
                "flightsClimbed",
                "forcedExpiratoryVolume1",
                "forcedVitalCapacity",
                "headphoneAudioExposure",
                "heartRate",
                "heartRateRecoveryOneMinute",
                "heartRateVariabilityRMSSD",
                "heartRateVariabilitySDNN",
                "height",
                "inhalerUsage",
                "insulinDelivery",
                "leanBodyMass",
                "nikeFuel",
                "numberOfAlcoholicBeverages",
                "numberOfTimesFallen",
                "oxygenSaturation",
                "paddleSportsSpeed",
                "peakExpiratoryFlowRate",
                "peripheralPerfusionIndex",
                "physicalEffort",
                "pushCount",
                "respiratoryRate",
                "restingHeartRate",
                "rowingSpeed",
                "runningGroundContactTime",
                "runningPower",
                "runningSpeed",
                "runningStrideLength",
                "runningVerticalOscillation",
                "sixMinuteWalkTestDistance",
                "stairAscentSpeed",
                "stairDescentSpeed",
                "stepCount",
                "swimmingStrokeCount",
                "timeInDaylight",
                "underwaterDepth",
                "uvExposure",
                "vo2Max",
                "waistCircumference",
                "walkingAsymmetryPercentage",
                "walkingDoubleSupportPercentage",
                "walkingHeartRateAverage",
                "walkingSpeed",
                "walkingStepLength",
                "waterTemperature",
                "workoutEffortScore",
                "appleStandHour",
                "appleWalkingSteadinessEvent",
                "audioExposureEvent",
                "bleedingAfterMenopause",
                "cervicalMucusQuality",
                "contraceptive",
                "environmentalAudioExposureEvent",
                "handwashingEvent",
                "headphoneAudioExposureEvent",
                "highHeartRateEvent",
                "hypertensionEvent",
                "infrequentMenstrualCycles",
                "intermenstrualBleeding",
                "irregularHeartRhythmEvent",
                "irregularMenstrualCycles",
                "lactation",
                "lowCardioFitnessEvent",
                "lowHeartRateEvent",
                "menopausalState",
                "menstrualFlow",
                "mindfulSession",
                "ovulationTestResult",
                "persistentIntermenstrualBleeding",
                "pregnancy",
                "pregnancyTestResult",
                "progesteroneTestResult",
                "prolongedMenstrualPeriods",
                "sexualActivity",
                "sleepAnalysis",
                "toothbrushingEvent",
                "activityMoveMode",
                "biologicalSex",
                "bloodType",
                "dateOfBirth",
                "fitzpatrickSkinType",
                "wheelchairUse",
                "americanFootball",
                "archery",
                "australianFootball",
                "badminton",
                "barre",
                "baseball",
                "basketball",
                "bowling",
                "boxing",
                "cardioDance",
                "climbing",
                "cooldown",
                "coreTraining",
                "cricket",
                "crossCountrySkiing",
                "crossTraining",
                "curling",
                "cycling",
                "dance",
                "danceInspiredTraining",
                "discSports",
                "downhillSkiing",
                "elliptical",
                "equestrianSports",
                "fencing",
                "fishing",
                "fitnessGaming",
                "flexibility",
                "functionalStrengthTraining",
                "golf",
                "gymnastics",
                "handball",
                "handCycling",
                "highIntensityIntervalTraining",
                "hiking",
                "hockey",
                "hunting",
                "jumpRope",
                "kickboxing",
                "lacrosse",
                "martialArts",
                "mindAndBody",
                "mixedCardio",
                "mixedMetabolicCardioTraining",
                "other",
                "paddleSports",
                "pickleball",
                "pilates",
                "play",
                "preparationAndRecovery",
                "racquetball",
                "rowing",
                "rugby",
                "running",
                "sailing",
                "skatingSports",
                "snowboarding",
                "snowSports",
                "soccer",
                "socialDance",
                "softball",
                "squash",
                "stairClimbing",
                "stairs",
                "stepTraining",
                "surfingSports",
                "swimBikeRun",
                "swimming",
                "tableTennis",
                "taiChi",
                "tennis",
                "trackAndField",
                "traditionalStrengthTraining",
                "transition",
                "underwaterDiving",
                "volleyball",
                "walking",
                "waterFitness",
                "waterPolo",
                "waterSports",
                "wheelchairRunPace",
                "wheelchairWalkPace",
                "wrestling",
                "yoga"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthkitTypeResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/healthkit/metadata-keys": {
      "get": {
        "operationId": "listHealthkitMetadataKeys",
        "tags": [
          "Apple HealthKit"
        ],
        "summary": "HealthKit metadata keys: every row",
        "description": "Every HKMetadataKey constant on Apple's Metadata Keys collection and its workout sub-collection. valueType is read from Apple's own sentence, which ships beside it in valueTypeEvidence; both are null where Apple does not say.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/healthkit-metadata-keys"
        },
        "responses": {
          "200": {
            "description": "67 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthkitMetadataKeysCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/healthkit/metadata-keys/{swiftName}": {
      "get": {
        "operationId": "getHealthkitMetadataKey",
        "tags": [
          "Apple HealthKit"
        ],
        "summary": "HealthKit metadata keys: one row by swiftName",
        "description": "Every HKMetadataKey constant on Apple's Metadata Keys collection and its workout sub-collection. valueType is read from Apple's own sentence, which ships beside it in valueTypeEvidence; both are null where Apple does not say.",
        "parameters": [
          {
            "name": "swiftName",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "HKMetadataKeyExternalUUID",
                "HKMetadataKeyTimeZone",
                "HKMetadataKeyWasUserEntered",
                "HKMetadataKeyQuantityClampedToLowerBound",
                "HKMetadataKeyQuantityClampedToUpperBound",
                "HKMetadataKeyDateOfEarliestDataUsedForEstimate",
                "HKMetadataKeySessionEstimate",
                "HKMetadataKeyDeviceSerialNumber",
                "HKMetadataKeyUDIDeviceIdentifier",
                "HKMetadataKeyUDIProductionIdentifier",
                "HKMetadataKeyDigitalSignature",
                "HKMetadataKeyDeviceName",
                "HKMetadataKeyDeviceManufacturerName",
                "HKMetadataKeyDevicePlacementSide",
                "HKMetadataKeyAppleDeviceCalibrated",
                "HKMetadataKeySyncIdentifier",
                "HKMetadataKeySyncVersion",
                "HKMetadataKeyWasTakenInLab",
                "HKMetadataKeyReferenceRangeLowerLimit",
                "HKMetadataKeyReferenceRangeUpperLimit",
                "HKMetadataKeyBarometricPressure",
                "HKMetadataKeyWeatherCondition",
                "HKMetadataKeyWeatherHumidity",
                "HKMetadataKeyWeatherTemperature",
                "HKMetadataKeyActivityType",
                "HKMetadataKeyAppleFitnessPlusSession",
                "HKMetadataKeyCoachedWorkout",
                "HKMetadataKeyGroupFitness",
                "HKMetadataKeyIndoorWorkout",
                "HKMetadataKeyWorkoutBrandName",
                "HKMetadataKeyCyclingFunctionalThresholdPowerTestType",
                "HKMetadataKeyFitnessMachineDuration",
                "HKMetadataKeyCrossTrainerDistance",
                "HKMetadataKeyIndoorBikeDistance",
                "HKMetadataKeyAverageMETs",
                "HKMetadataKeyPhysicalEffortEstimationType",
                "HKMetadataKeyAlpineSlopeGrade",
                "HKMetadataKeyElevationAscended",
                "HKMetadataKeyElevationDescended",
                "HKMetadataKeyAverageSpeed",
                "HKMetadataKeyMaximumSpeed",
                "HKMetadataKeySwimmingLocationType",
                "HKMetadataKeySwimmingStrokeStyle",
                "HKMetadataKeyLapLength",
                "HKMetadataKeySWOLFScore",
                "HKMetadataKeyWaterSalinity",
                "HKMetadataKeyVO2MaxValue",
                "HKMetadataKeyLowCardioFitnessEventThreshold",
                "HKMetadataKeyUserMotionContext",
                "HKMetadataKeyFoodType",
                "HKMetadataKeyBodyTemperatureSensorLocation",
                "HKMetadataKeyHeartRateSensorLocation",
                "HKMetadataKeyHeartRateMotionContext",
                "HKMetadataKeyHeartRateRecoveryActivityDuration",
                "HKMetadataKeyHeartRateRecoveryActivityType",
                "HKMetadataKeyHeartRateRecoveryMaxObservedRecoveryHeartRate",
                "HKMetadataKeyHeartRateRecoveryTestType",
                "HKMetadataKeyVO2MaxTestType",
                "HKMetadataKeyAudioExposureLevel",
                "HKMetadataKeyAudioExposureDuration",
                "HKMetadataKeyHeadphoneGain",
                "HKMetadataKeyBloodGlucoseMealTime",
                "HKMetadataKeyInsulinDeliveryReason",
                "HKMetadataKeyMenstrualCycleStart",
                "HKMetadataKeySexualActivityProtectionUsed",
                "HKMetadataKeyAlgorithmVersion",
                "HKMetadataKeyAppleECGAlgorithmVersion"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthkitMetadataKeyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/health-connect/records": {
      "get": {
        "operationId": "listHealthConnectRecords",
        "tags": [
          "Android Health Connect"
        ],
        "summary": "Health Connect record types: every row",
        "description": "Every record class in Google's Health Connect data-types table, joined to its Jetpack reference page: shape, unit class, mandatory fields, the read and write permission strings, and aggregate metrics.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/health-connect"
        },
        "responses": {
          "200": {
            "description": "42 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthConnectRecordsCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/health-connect/records/{className}": {
      "get": {
        "operationId": "getHealthConnectRecord",
        "tags": [
          "Android Health Connect"
        ],
        "summary": "Health Connect record types: one row by className",
        "description": "Every record class in Google's Health Connect data-types table, joined to its Jetpack reference page: shape, unit class, mandatory fields, the read and write permission strings, and aggregate metrics.",
        "parameters": [
          {
            "name": "className",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "ActiveCaloriesBurnedRecord",
                "ActivityIntensityRecord",
                "BasalBodyTemperatureRecord",
                "BasalMetabolicRateRecord",
                "BloodGlucoseRecord",
                "BloodPressureRecord",
                "BodyFatRecord",
                "BodyTemperatureRecord",
                "BodyWaterMassRecord",
                "BoneMassRecord",
                "CervicalMucusRecord",
                "CyclingPedalingCadenceRecord",
                "DistanceRecord",
                "ElevationGainedRecord",
                "ExerciseSessionRecord",
                "FloorsClimbedRecord",
                "HeartRateRecord",
                "HeartRateVariabilityRmssdRecord",
                "HeightRecord",
                "HydrationRecord",
                "IntermenstrualBleedingRecord",
                "LeanBodyMassRecord",
                "MenstruationFlowRecord",
                "MenstruationPeriodRecord",
                "MindfulnessSessionRecord",
                "NutritionRecord",
                "OvulationTestRecord",
                "OxygenSaturationRecord",
                "PlannedExerciseSessionRecord",
                "PowerRecord",
                "RespiratoryRateRecord",
                "RestingHeartRateRecord",
                "SexualActivityRecord",
                "SkinTemperatureRecord",
                "SleepSessionRecord",
                "SpeedRecord",
                "StepsRecord",
                "StepsCadenceRecord",
                "TotalCaloriesBurnedRecord",
                "Vo2MaxRecord",
                "WeightRecord",
                "WheelchairPushesRecord"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthConnectRecordResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/health-connect/permissions": {
      "get": {
        "operationId": "listHealthConnectPermissions",
        "tags": [
          "Android Health Connect"
        ],
        "summary": "Health Connect permission strings: every row",
        "description": "Every constant on Android's framework HealthPermissions reference: the manifest string, Google's description, protection level, availability, and the record classes whose data-types row names it.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/health-connect/permissions"
        },
        "responses": {
          "200": {
            "description": "219 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthConnectPermissionsCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/health-connect/permissions/{constant}": {
      "get": {
        "operationId": "getHealthConnectPermission",
        "tags": [
          "Android Health Connect"
        ],
        "summary": "Health Connect permission strings: one row by constant",
        "description": "Every constant on Android's framework HealthPermissions reference: the manifest string, Google's description, protection level, availability, and the record classes whose data-types row names it.",
        "parameters": [
          {
            "name": "constant",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "READ_ACTIVE_CALORIES_BURNED",
                "READ_ACTIVITY_INTENSITY",
                "READ_ALCOHOL_CONSUMPTION",
                "READ_BASAL_BODY_TEMPERATURE",
                "READ_BASAL_METABOLIC_RATE",
                "READ_BLOOD_GLUCOSE",
                "READ_BLOOD_PRESSURE",
                "READ_BODY_FAT",
                "READ_BODY_TEMPERATURE",
                "READ_BODY_WATER_MASS",
                "READ_BONE_MASS",
                "READ_CERVICAL_MUCUS",
                "READ_DISTANCE",
                "READ_ELEVATION_GAINED",
                "READ_EXERCISE",
                "READ_EXERCISE_ROUTES",
                "READ_FLOORS_CLIMBED",
                "READ_HEALTH_DATA_HISTORY",
                "READ_HEALTH_DATA_IN_BACKGROUND",
                "READ_HEART_RATE",
                "READ_HEART_RATE_VARIABILITY",
                "READ_HEIGHT",
                "READ_HYDRATION",
                "READ_INTERMENSTRUAL_BLEEDING",
                "READ_LEAN_BODY_MASS",
                "READ_MEDICAL_DATA_ALLERGIES_INTOLERANCES",
                "READ_MEDICAL_DATA_CONDITIONS",
                "READ_MEDICAL_DATA_LABORATORY_RESULTS",
                "READ_MEDICAL_DATA_MEDICATIONS",
                "READ_MEDICAL_DATA_PERSONAL_DETAILS",
                "READ_MEDICAL_DATA_PRACTITIONER_DETAILS",
                "READ_MEDICAL_DATA_PREGNANCY",
                "READ_MEDICAL_DATA_PROCEDURES",
                "READ_MEDICAL_DATA_SOCIAL_HISTORY",
                "READ_MEDICAL_DATA_VACCINES",
                "READ_MEDICAL_DATA_VISITS",
                "READ_MEDICAL_DATA_VITAL_SIGNS",
                "READ_MENSTRUAL_CYCLE_PHASE",
                "READ_MENSTRUATION",
                "READ_MINDFULNESS",
                "READ_NUTRITION",
                "READ_OVULATION_TEST",
                "READ_OXYGEN_SATURATION",
                "READ_PLANNED_EXERCISE",
                "READ_POWER",
                "READ_RESPIRATORY_RATE",
                "READ_RESTING_HEART_RATE",
                "READ_SEXUAL_ACTIVITY",
                "READ_SKIN_TEMPERATURE",
                "READ_SLEEP",
                "READ_SPEED",
                "READ_STEPS",
                "READ_SYMPTOM_ABDOMINAL_PAIN",
                "READ_SYMPTOM_ACNE",
                "READ_SYMPTOM_BACK_PAIN",
                "READ_SYMPTOM_BLOATING",
                "READ_SYMPTOM_BRAIN_FOG",
                "READ_SYMPTOM_BREAST_TENDERNESS",
                "READ_SYMPTOM_BRITTLE_NAILS",
                "READ_SYMPTOM_BURNING_MOUTH",
                "READ_SYMPTOM_CHEST_PAIN",
                "READ_SYMPTOM_CHEST_TIGHTNESS",
                "READ_SYMPTOM_CHILLS",
                "READ_SYMPTOM_CONSTIPATION",
                "READ_SYMPTOM_COUGH",
                "READ_SYMPTOM_CRAMPS",
                "READ_SYMPTOM_CRAVINGS",
                "READ_SYMPTOM_DEHYDRATION",
                "READ_SYMPTOM_DIARRHEA",
                "READ_SYMPTOM_DIFFICULTY_SWALLOWING",
                "READ_SYMPTOM_DIZZINESS",
                "READ_SYMPTOM_DRY_SKIN",
                "READ_SYMPTOM_EARACHES",
                "READ_SYMPTOM_FATIGUE",
                "READ_SYMPTOM_FEVER",
                "READ_SYMPTOM_GENERALIZED_BODY_ACHE",
                "READ_SYMPTOM_HAIR_LOSS",
                "READ_SYMPTOM_HEADACHE",
                "READ_SYMPTOM_HEARTBURN",
                "READ_SYMPTOM_HEART_PALPITATIONS",
                "READ_SYMPTOM_HOT_FLASHES",
                "READ_SYMPTOM_INSOMNIA",
                "READ_SYMPTOM_JOINT_PAIN",
                "READ_SYMPTOM_JOINT_STIFFNESS",
                "READ_SYMPTOM_LOSS_OF_APPETITE",
                "READ_SYMPTOM_LOSS_OF_CONSCIOUSNESS",
                "READ_SYMPTOM_LOWER_BACK_PAIN",
                "READ_SYMPTOM_MEMORY_LAPSE",
                "READ_SYMPTOM_MOOD_CHANGE",
                "READ_SYMPTOM_MUSCLE_PAIN",
                "READ_SYMPTOM_NAUSEA",
                "READ_SYMPTOM_NIGHT_SWEATS",
                "READ_SYMPTOM_PELVIC_PAIN",
                "READ_SYMPTOM_RAPID_POUNDING_OR_FLUTTERING_HEARTBEAT",
                "READ_SYMPTOM_REDUCED_CAPACITY_FOR_EXERCISE",
                "READ_SYMPTOM_RUNNY_NOSE",
                "READ_SYMPTOM_SHORTNESS_OF_BREATH",
                "READ_SYMPTOM_SKIPPED_HEARTBEAT",
                "READ_SYMPTOM_SLEEPINESS",
                "READ_SYMPTOM_SLEEP_CHANGES",
                "READ_SYMPTOM_SNEEZING",
                "READ_SYMPTOM_SNORE",
                "READ_SYMPTOM_SORE_THROAT",
                "READ_SYMPTOM_STOMACH_ACHE",
                "READ_SYMPTOM_STUFFY_NOSE",
                "READ_SYMPTOM_UNEXPLAINED_WEIGHT_CHANGES",
                "READ_SYMPTOM_VAGINAL_DRYNESS",
                "READ_SYMPTOM_VAGINAL_ITCHINESS",
                "READ_SYMPTOM_VOMITING",
                "READ_SYMPTOM_WATER_RETENTION",
                "READ_SYMPTOM_WHEEZING",
                "READ_TOTAL_CALORIES_BURNED",
                "READ_VO2_MAX",
                "READ_WEIGHT",
                "READ_WHEELCHAIR_PUSHES",
                "START_ONBOARDING",
                "WRITE_ACTIVE_CALORIES_BURNED",
                "WRITE_ACTIVITY_INTENSITY",
                "WRITE_ALCOHOL_CONSUMPTION",
                "WRITE_BASAL_BODY_TEMPERATURE",
                "WRITE_BASAL_METABOLIC_RATE",
                "WRITE_BLOOD_GLUCOSE",
                "WRITE_BLOOD_PRESSURE",
                "WRITE_BODY_FAT",
                "WRITE_BODY_TEMPERATURE",
                "WRITE_BODY_WATER_MASS",
                "WRITE_BONE_MASS",
                "WRITE_CERVICAL_MUCUS",
                "WRITE_DEVICE_UDI",
                "WRITE_DISTANCE",
                "WRITE_ELEVATION_GAINED",
                "WRITE_EXERCISE",
                "WRITE_EXERCISE_ROUTE",
                "WRITE_FLOORS_CLIMBED",
                "WRITE_HEART_RATE",
                "WRITE_HEART_RATE_VARIABILITY",
                "WRITE_HEIGHT",
                "WRITE_HYDRATION",
                "WRITE_INTERMENSTRUAL_BLEEDING",
                "WRITE_LEAN_BODY_MASS",
                "WRITE_MEDICAL_DATA",
                "WRITE_MENSTRUAL_CYCLE_PHASE",
                "WRITE_MENSTRUATION",
                "WRITE_MINDFULNESS",
                "WRITE_NUTRITION",
                "WRITE_OVULATION_TEST",
                "WRITE_OXYGEN_SATURATION",
                "WRITE_PLANNED_EXERCISE",
                "WRITE_POWER",
                "WRITE_RESPIRATORY_RATE",
                "WRITE_RESTING_HEART_RATE",
                "WRITE_SEXUAL_ACTIVITY",
                "WRITE_SKIN_TEMPERATURE",
                "WRITE_SLEEP",
                "WRITE_SPEED",
                "WRITE_STEPS",
                "WRITE_SYMPTOM_ABDOMINAL_PAIN",
                "WRITE_SYMPTOM_ACNE",
                "WRITE_SYMPTOM_BACK_PAIN",
                "WRITE_SYMPTOM_BLOATING",
                "WRITE_SYMPTOM_BRAIN_FOG",
                "WRITE_SYMPTOM_BREAST_TENDERNESS",
                "WRITE_SYMPTOM_BRITTLE_NAILS",
                "WRITE_SYMPTOM_BURNING_MOUTH",
                "WRITE_SYMPTOM_CHEST_PAIN",
                "WRITE_SYMPTOM_CHEST_TIGHTNESS",
                "WRITE_SYMPTOM_CHILLS",
                "WRITE_SYMPTOM_CONSTIPATION",
                "WRITE_SYMPTOM_COUGH",
                "WRITE_SYMPTOM_CRAMPS",
                "WRITE_SYMPTOM_CRAVINGS",
                "WRITE_SYMPTOM_DEHYDRATION",
                "WRITE_SYMPTOM_DIARRHEA",
                "WRITE_SYMPTOM_DIFFICULTY_SWALLOWING",
                "WRITE_SYMPTOM_DIZZINESS",
                "WRITE_SYMPTOM_DRY_SKIN",
                "WRITE_SYMPTOM_EARACHES",
                "WRITE_SYMPTOM_FATIGUE",
                "WRITE_SYMPTOM_FEVER",
                "WRITE_SYMPTOM_GENERALIZED_BODY_ACHE",
                "WRITE_SYMPTOM_HAIR_LOSS",
                "WRITE_SYMPTOM_HEADACHE",
                "WRITE_SYMPTOM_HEARTBURN",
                "WRITE_SYMPTOM_HEART_PALPITATIONS",
                "WRITE_SYMPTOM_HOT_FLASHES",
                "WRITE_SYMPTOM_INSOMNIA",
                "WRITE_SYMPTOM_JOINT_PAIN",
                "WRITE_SYMPTOM_JOINT_STIFFNESS",
                "WRITE_SYMPTOM_LOSS_OF_APPETITE",
                "WRITE_SYMPTOM_LOSS_OF_CONSCIOUSNESS",
                "WRITE_SYMPTOM_LOWER_BACK_PAIN",
                "WRITE_SYMPTOM_MEMORY_LAPSE",
                "WRITE_SYMPTOM_MOOD_CHANGE",
                "WRITE_SYMPTOM_MUSCLE_PAIN",
                "WRITE_SYMPTOM_NAUSEA",
                "WRITE_SYMPTOM_NIGHT_SWEATS",
                "WRITE_SYMPTOM_PELVIC_PAIN",
                "WRITE_SYMPTOM_RAPID_POUNDING_OR_FLUTTERING_HEARTBEAT",
                "WRITE_SYMPTOM_REDUCED_CAPACITY_FOR_EXERCISE",
                "WRITE_SYMPTOM_RUNNY_NOSE",
                "WRITE_SYMPTOM_SHORTNESS_OF_BREATH",
                "WRITE_SYMPTOM_SKIPPED_HEARTBEAT",
                "WRITE_SYMPTOM_SLEEPINESS",
                "WRITE_SYMPTOM_SLEEP_CHANGES",
                "WRITE_SYMPTOM_SNEEZING",
                "WRITE_SYMPTOM_SNORE",
                "WRITE_SYMPTOM_SORE_THROAT",
                "WRITE_SYMPTOM_STOMACH_ACHE",
                "WRITE_SYMPTOM_STUFFY_NOSE",
                "WRITE_SYMPTOM_UNEXPLAINED_WEIGHT_CHANGES",
                "WRITE_SYMPTOM_VAGINAL_DRYNESS",
                "WRITE_SYMPTOM_VAGINAL_ITCHINESS",
                "WRITE_SYMPTOM_VOMITING",
                "WRITE_SYMPTOM_WATER_RETENTION",
                "WRITE_SYMPTOM_WHEEZING",
                "WRITE_TOTAL_CALORIES_BURNED",
                "WRITE_VO2_MAX",
                "WRITE_WEIGHT",
                "WRITE_WHEELCHAIR_PUSHES"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthConnectPermissionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/wear-os/data-types": {
      "get": {
        "operationId": "listWearOsDataTypes",
        "tags": [
          "Wear OS Health Services"
        ],
        "summary": "Wear OS Health Services data types: every row",
        "description": "Every DataType constant on Google's Jetpack reference for Wear OS Health Services. permission is set only where Google's permissions table names the constant, with that table row in permissionEvidence.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/wear-os-data-types"
        },
        "responses": {
          "200": {
            "description": "65 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WearOsDataTypesCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/wear-os/data-types/{name}": {
      "get": {
        "operationId": "getWearOsDataType",
        "tags": [
          "Wear OS Health Services"
        ],
        "summary": "Wear OS Health Services data types: one row by name",
        "description": "Every DataType constant on Google's Jetpack reference for Wear OS Health Services. permission is set only where Google's permissions table names the constant, with that table row in permissionEvidence.",
        "parameters": [
          {
            "name": "name",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "ABSOLUTE_ELEVATION",
                "ABSOLUTE_ELEVATION_STATS",
                "ACTIVE_EXERCISE_DURATION_TOTAL",
                "CALORIES",
                "CALORIES_DAILY",
                "CALORIES_TOTAL",
                "DECLINE_DISTANCE",
                "DECLINE_DISTANCE_TOTAL",
                "DECLINE_DURATION",
                "DECLINE_DURATION_TOTAL",
                "DISTANCE",
                "DISTANCE_DAILY",
                "DISTANCE_TOTAL",
                "ELEVATION_GAIN",
                "ELEVATION_GAIN_DAILY",
                "ELEVATION_GAIN_TOTAL",
                "ELEVATION_LOSS",
                "ELEVATION_LOSS_TOTAL",
                "FLAT_GROUND_DISTANCE",
                "FLAT_GROUND_DISTANCE_TOTAL",
                "FLAT_GROUND_DURATION",
                "FLAT_GROUND_DURATION_TOTAL",
                "FLOORS",
                "FLOORS_DAILY",
                "FLOORS_TOTAL",
                "GOLF_SHOT_COUNT",
                "GOLF_SHOT_COUNT_TOTAL",
                "GROUND_CONTACT_TIME",
                "GROUND_CONTACT_TIME_STATS",
                "HEART_RATE_BPM",
                "HEART_RATE_BPM_STATS",
                "INCLINE_DISTANCE",
                "INCLINE_DISTANCE_TOTAL",
                "INCLINE_DURATION",
                "INCLINE_DURATION_TOTAL",
                "LOCATION",
                "PACE",
                "PACE_STATS",
                "REP_COUNT",
                "REP_COUNT_TOTAL",
                "RESTING_EXERCISE_DURATION",
                "RESTING_EXERCISE_DURATION_TOTAL",
                "RUNNING_STEPS",
                "RUNNING_STEPS_TOTAL",
                "SPEED",
                "SPEED_STATS",
                "STEPS",
                "STEPS_DAILY",
                "STEPS_PER_MINUTE",
                "STEPS_PER_MINUTE_STATS",
                "STEPS_TOTAL",
                "STRIDE_LENGTH",
                "STRIDE_LENGTH_STATS",
                "SWIMMING_LAP_COUNT",
                "SWIMMING_LAP_COUNT_TOTAL",
                "SWIMMING_STROKES",
                "SWIMMING_STROKES_TOTAL",
                "VERTICAL_OSCILLATION",
                "VERTICAL_OSCILLATION_STATS",
                "VERTICAL_RATIO",
                "VERTICAL_RATIO_STATS",
                "VO2_MAX",
                "VO2_MAX_STATS",
                "WALKING_STEPS",
                "WALKING_STEPS_TOTAL"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WearOsDataTypeResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/matrix": {
      "get": {
        "operationId": "listMatrixRows",
        "tags": [
          "Cross-platform"
        ],
        "summary": "HealthKit to Health Connect type matrix: every row",
        "description": "One row per common health metric: the Apple HealthKit type identifier, the Android Health Connect record type, and the cross-platform gotcha where one exists. Narrow on purpose: only cells verified against both vendors' documentation.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/matrix"
        },
        "responses": {
          "200": {
            "description": "10 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatrixRowsCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matrix/{id}": {
      "get": {
        "operationId": "getMatrixRow",
        "tags": [
          "Cross-platform"
        ],
        "summary": "HealthKit to Health Connect type matrix: one row by id",
        "description": "One row per common health metric: the Apple HealthKit type identifier, the Android Health Connect record type, and the cross-platform gotcha where one exists. Narrow on purpose: only cells verified against both vendors' documentation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "heart-rate",
                "hrv",
                "vo2-max",
                "blood-oxygen",
                "sleep",
                "steps",
                "workouts",
                "gps-route",
                "calories",
                "body-composition"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatrixRowResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/changes": {
      "get": {
        "operationId": "listChanges",
        "tags": [
          "Ecosystem changes"
        ],
        "summary": "Dated ecosystem changes: every row",
        "description": "Dated deprecations, deadlines and term changes, newest first. status grades the evidence: confirmed means the vendor's own words are quoted on the linked page; reported means the claim could not be confirmed on an official page. Date precision is kept as sourced.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/changes"
        },
        "responses": {
          "200": {
            "description": "19 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangesCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/changes/{id}": {
      "get": {
        "operationId": "getChange",
        "tags": [
          "Ecosystem changes"
        ],
        "summary": "Dated ecosystem changes: one row by id",
        "description": "Dated deprecations, deadlines and term changes, newest first. status grades the evidence: confirmed means the vendor's own words are quoted on the linked page; reported means the claim could not be confirmed on an official page. Date precision is kept as sourced.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "2026-12-31-google-fit-apis-end-of-documented-support",
                "2026-11-03-terra-legacy-widget-endpoint-deprecation",
                "2026-10-30-fitbit-web-api-turn-off",
                "2026-10-22-garmin-connect-personal-api-and-starter-enterprise-access",
                "2026-10-22-sahha-replaces-its-free-plan-with-a-30-day-free-trial",
                "2026-09-30-fitbit-web-api-end-of-support",
                "2026-09-27-this-site-served-http-402-for-five-days",
                "2026-09-09-ftc-rescinds-its-2021-health-app-breach-policy-statement",
                "2026-06-01-strava-developer-terms-standard-tier-subscription",
                "2026-05-15-fitbit-accounts-google-account-consolidation-gate-reported",
                "2026-04-01-whoop-membership-restructuring",
                "2026-03-30-exercisedb-becomes-ascendapi-with-free-v1-and-v2-tiers",
                "2026-03-01-nutritionix-open-free-tier-reportedly-curtailed",
                "2025-12-15-oura-personal-access-tokens-deprecated",
                "2025-06-30-ant-membership-and-certification-programs-discontinued-reported",
                "2024-07-01-strava-tightened-its-developer-program",
                "2024-06-01-movenet-no-model-updates-observed-since-2024",
                "2024-05-01-google-fit-new-developer-sign-ups-closed",
                "2023-04-15-mediapipe-pose-landmarker-weights-last-modification"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/glossary": {
      "get": {
        "operationId": "listGlossaryTerms",
        "tags": [
          "Glossary"
        ],
        "summary": "Fitness and health API glossary: every row",
        "description": "The site's controlled vocabulary: each term's definition, its section, the one page that is its canonical explanation, and its stable fragment id on /glossary.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/glossary"
        },
        "responses": {
          "200": {
            "description": "45 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlossaryTermsCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/glossary/{slug}": {
      "get": {
        "operationId": "getGlossaryTerm",
        "tags": [
          "Glossary"
        ],
        "summary": "Fitness and health API glossary: one row by slug",
        "description": "The site's controlled vocabulary: each term's definition, its section, the one page that is its canonical explanation, and its stable fragment id on /glossary.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "hrv",
                "sdnn",
                "rmssd",
                "vo2-max",
                "spo2",
                "sleep-stages",
                "active-vs-total-calories",
                "measured-vs-estimated",
                "healthkit",
                "health-connect",
                "health-data-aggregator",
                "exercise-database-api",
                "fitness-api",
                "oauth",
                "webhook",
                "401-vs-403",
                "rate-limit-429",
                "refresh-token-rotation",
                "pose-estimation",
                "2d-vs-3d-pose",
                "rep-counting",
                "form-feedback",
                "on-device-vs-cloud-inference",
                "deduplication",
                "day-boundary-problem",
                "late-arriving-data",
                "idempotent-ingestion",
                "backfill",
                "metric-versioning",
                "health-connect-record",
                "aggregate-metric",
                "changes-token",
                "health-connect-permission",
                "getsdkstatus",
                "audio-session-category",
                "audio-ducking",
                "audio-focus",
                "avspeechsynthesizer",
                "hkliveworkoutbuilder",
                "workoutkit",
                "health-services",
                "phi",
                "general-wellness-policy",
                "rag-grounding",
                "guardrails"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlossaryTermResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/google-health-api/data-types": {
      "get": {
        "operationId": "listGoogleHealthDataTypes",
        "tags": [
          "Google Health API"
        ],
        "summary": "Google Health API data types: every row",
        "description": "Every data type in Google's Google Health API data-types table, joined to the v4 discovery document: record type, storage resolution, operations and the methods they map to, scopes, fields, rollup fields and the Fitbit Web API predecessor. methods, scopes and dataPointProperty are derived and keep their evidence; flags names the kinds of disagreement between Google's own pages.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/google-health-api"
        },
        "responses": {
          "200": {
            "description": "44 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleHealthDataTypesCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/google-health-api/data-types/{dataType}": {
      "get": {
        "operationId": "getGoogleHealthDataType",
        "tags": [
          "Google Health API"
        ],
        "summary": "Google Health API data types: one row by dataType",
        "description": "Every data type in Google's Google Health API data-types table, joined to the v4 discovery document: record type, storage resolution, operations and the methods they map to, scopes, fields, rollup fields and the Fitbit Web API predecessor. methods, scopes and dataPointProperty are derived and keep their evidence; flags names the kinds of disagreement between Google's own pages.",
        "parameters": [
          {
            "name": "dataType",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "active-energy-burned",
                "active-minutes",
                "active-zone-minutes",
                "activity-level",
                "altitude",
                "blood-glucose",
                "body-fat",
                "calories-in-heart-rate-zone",
                "core-body-temperature",
                "daily-heart-rate-variability",
                "daily-heart-rate-zones",
                "daily-oxygen-saturation",
                "daily-respiratory-rate",
                "daily-resting-heart-rate",
                "daily-sleep-temperature-derivations",
                "daily-vo2-max",
                "distance",
                "electrocardiogram",
                "exercise",
                "floors",
                "food",
                "food-measurement-unit",
                "heart-rate",
                "heart-rate-variability",
                "height",
                "hydration-log",
                "irregular-rhythm-notification",
                "menstrual-period",
                "moods",
                "nutrition-log",
                "ovulation-test",
                "oxygen-saturation",
                "respiratory-rate-sleep-summary",
                "run-vo2-max",
                "sedentary-period",
                "skin-temperature-sensors",
                "sleep",
                "steps",
                "swim-lengths-data",
                "symptoms",
                "time-in-heart-rate-zone",
                "total-calories",
                "vo2-max",
                "weight"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoogleHealthDataTypeResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/bluetooth/gatt-fields": {
      "get": {
        "operationId": "listBluetoothGattFields",
        "tags": [
          "Bluetooth GATT"
        ],
        "summary": "Bluetooth fitness GATT characteristic fields: every row",
        "description": "One row per structure field of the GATT characteristics this site covers for fitness and health devices, read from the Bluetooth SIG's public repository; a struct's fields are rows under it, and a characteristic with no published structure is one row. CC BY 4.0 covers this compilation and its derived columns only: the UUIDs, identifiers, names, types and sizes are the SIG's, restated as facts, and presentIf and unitEvidence quote its lines; the SIG's descriptions are left out, and its notice is carried in sourceTerms (the collection response and the dataset) and summed up in licenseNote on every response.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/bluetooth-fitness"
        },
        "responses": {
          "200": {
            "description": "378 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BluetoothGattFieldsCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/bluetooth/gatt-fields/{id}": {
      "get": {
        "operationId": "getBluetoothGattField",
        "tags": [
          "Bluetooth GATT"
        ],
        "summary": "Bluetooth fitness GATT characteristic fields: one row by id",
        "description": "One row per structure field of the GATT characteristics this site covers for fitness and health devices, read from the Bluetooth SIG's public repository; a struct's fields are rows under it, and a characteristic with no published structure is one row. CC BY 4.0 covers this compilation and its derived columns only: the UUIDs, identifiers, names, types and sizes are the SIG's, restated as facts, and presentIf and unitEvidence quote its lines; the SIG's descriptions are left out, and its notice is carried in sourceTerms (the collection response and the dataset) and summed up in licenseNote on every response.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "0x2A08.1",
                "0x2A08.2",
                "0x2A08.3",
                "0x2A08.4",
                "0x2A08.5",
                "0x2A08.6",
                "0x2A0D.1",
                "0x2A0E.1",
                "0x2A18.1",
                "0x2A18.2",
                "0x2A18.3",
                "0x2A18.4",
                "0x2A18.5",
                "0x2A18.6",
                "0x2A18.6.1",
                "0x2A18.6.2",
                "0x2A18.7",
                "0x2A1C.1",
                "0x2A1C.2",
                "0x2A1C.3",
                "0x2A1C.4",
                "0x2A1C.5",
                "0x2A1D.1",
                "0x2A1E.1",
                "0x2A1E.2",
                "0x2A1E.3",
                "0x2A1E.4",
                "0x2A1E.5",
                "0x2A21.1",
                "0x2A34.1",
                "0x2A34.2",
                "0x2A34.3",
                "0x2A34.4",
                "0x2A34.5",
                "0x2A34.6",
                "0x2A34.7",
                "0x2A34.7.1",
                "0x2A34.7.2",
                "0x2A34.8",
                "0x2A34.9",
                "0x2A34.10",
                "0x2A34.11",
                "0x2A34.12",
                "0x2A35.1",
                "0x2A35.2",
                "0x2A35.3",
                "0x2A35.4",
                "0x2A35.5",
                "0x2A35.6",
                "0x2A35.7",
                "0x2A35.8",
                "0x2A35.9",
                "0x2A35.10",
                "0x2A35.11",
                "0x2A36.1",
                "0x2A36.2",
                "0x2A36.3",
                "0x2A36.4",
                "0x2A36.5",
                "0x2A36.6",
                "0x2A36.7",
                "0x2A36.8",
                "0x2A36.9",
                "0x2A37.1",
                "0x2A37.2",
                "0x2A37.3",
                "0x2A37.4",
                "0x2A37.5",
                "0x2A38.1",
                "0x2A39.1",
                "0x2A49.1",
                "0x2A51.1",
                "0x2A52.1",
                "0x2A52.2",
                "0x2A52.3",
                "0x2A53.1",
                "0x2A53.2",
                "0x2A53.3",
                "0x2A53.4",
                "0x2A53.5",
                "0x2A54.1",
                "0x2A55.1",
                "0x2A55.2",
                "0x2A5B.1",
                "0x2A5B.2",
                "0x2A5B.2.1",
                "0x2A5B.2.2",
                "0x2A5B.3",
                "0x2A5B.3.1",
                "0x2A5B.3.2",
                "0x2A5C.1",
                "0x2A5D.1",
                "0x2A5E",
                "0x2A5F",
                "0x2A60",
                "0x2A63.1",
                "0x2A63.2",
                "0x2A63.3",
                "0x2A63.4",
                "0x2A63.5",
                "0x2A63.5.1",
                "0x2A63.5.2",
                "0x2A63.6",
                "0x2A63.6.1",
                "0x2A63.6.2",
                "0x2A63.7",
                "0x2A63.7.1",
                "0x2A63.7.2",
                "0x2A63.8",
                "0x2A63.8.1",
                "0x2A63.8.2",
                "0x2A63.9",
                "0x2A63.9.1",
                "0x2A63.9.2",
                "0x2A63.10",
                "0x2A63.11",
                "0x2A63.12",
                "0x2A64.1",
                "0x2A64.2",
                "0x2A64.2.1",
                "0x2A64.2.2",
                "0x2A64.3",
                "0x2A64.4",
                "0x2A64.5",
                "0x2A65.1",
                "0x2A66.1",
                "0x2A66.2",
                "0x2A7E.1",
                "0x2A7F.1",
                "0x2A80.1",
                "0x2A81.1",
                "0x2A82.1",
                "0x2A83.1",
                "0x2A84.1",
                "0x2A85.1",
                "0x2A85.2",
                "0x2A85.3",
                "0x2A86.1",
                "0x2A86.2",
                "0x2A86.3",
                "0x2A87.1",
                "0x2A88.1",
                "0x2A89.1",
                "0x2A8A.1",
                "0x2A8B.1",
                "0x2A8B.2",
                "0x2A8B.3",
                "0x2A8B.4",
                "0x2A8C.1",
                "0x2A8D.1",
                "0x2A8E.1",
                "0x2A8F.1",
                "0x2A90.1",
                "0x2A91.1",
                "0x2A92.1",
                "0x2A93.1",
                "0x2A94.1",
                "0x2A94.2",
                "0x2A95.1",
                "0x2A96.1",
                "0x2A97.1",
                "0x2A98.1",
                "0x2A9B.1",
                "0x2A9C.1",
                "0x2A9C.2",
                "0x2A9C.3",
                "0x2A9C.4",
                "0x2A9C.5",
                "0x2A9C.6",
                "0x2A9C.7",
                "0x2A9C.8",
                "0x2A9C.9",
                "0x2A9C.10",
                "0x2A9C.11",
                "0x2A9C.12",
                "0x2A9C.13",
                "0x2A9D.1",
                "0x2A9D.2",
                "0x2A9D.3",
                "0x2A9D.4",
                "0x2A9D.5",
                "0x2A9D.6",
                "0x2A9E.1",
                "0x2AA2.1",
                "0x2AA7.1",
                "0x2AA7.1.1",
                "0x2AA7.1.2",
                "0x2AA7.1.3",
                "0x2AA7.1.4",
                "0x2AA7.1.5",
                "0x2AA7.1.6",
                "0x2AA7.1.7",
                "0x2AA7.1.8",
                "0x2AA8.1",
                "0x2AA8.2",
                "0x2AA8.2.1",
                "0x2AA8.2.2",
                "0x2AA8.3",
                "0x2AA9.1",
                "0x2AA9.2",
                "0x2AA9.3",
                "0x2AAA.1",
                "0x2AAA.2",
                "0x2AAA.3",
                "0x2AAA.4",
                "0x2AAB.1",
                "0x2AAB.2",
                "0x2AAC.1",
                "0x2AAC.2",
                "0x2AAC.3",
                "0x2ACC",
                "0x2ACD.1",
                "0x2ACD.2",
                "0x2ACD.3",
                "0x2ACD.4",
                "0x2ACD.5",
                "0x2ACD.6",
                "0x2ACD.7",
                "0x2ACD.8",
                "0x2ACD.9",
                "0x2ACD.10",
                "0x2ACD.11",
                "0x2ACD.12",
                "0x2ACD.13",
                "0x2ACD.14",
                "0x2ACD.15",
                "0x2ACD.16",
                "0x2ACD.17",
                "0x2ACD.18",
                "0x2ACD.19",
                "0x2ACE.1",
                "0x2ACE.2",
                "0x2ACE.3",
                "0x2ACE.4",
                "0x2ACE.5",
                "0x2ACE.6",
                "0x2ACE.7",
                "0x2ACE.8",
                "0x2ACE.9",
                "0x2ACE.10",
                "0x2ACE.11",
                "0x2ACE.12",
                "0x2ACE.13",
                "0x2ACE.14",
                "0x2ACE.15",
                "0x2ACE.16",
                "0x2ACE.17",
                "0x2ACE.18",
                "0x2ACE.19",
                "0x2ACE.20",
                "0x2ACE.21",
                "0x2ACF.1",
                "0x2ACF.2",
                "0x2ACF.3",
                "0x2ACF.4",
                "0x2ACF.5",
                "0x2ACF.6",
                "0x2ACF.7",
                "0x2ACF.8",
                "0x2ACF.9",
                "0x2ACF.10",
                "0x2ACF.11",
                "0x2ACF.12",
                "0x2ACF.13",
                "0x2AD0.1",
                "0x2AD0.2",
                "0x2AD0.3",
                "0x2AD0.4",
                "0x2AD0.5",
                "0x2AD0.6",
                "0x2AD0.7",
                "0x2AD0.8",
                "0x2AD0.9",
                "0x2AD0.10",
                "0x2AD0.11",
                "0x2AD0.12",
                "0x2AD0.13",
                "0x2AD1.1",
                "0x2AD1.2",
                "0x2AD1.3",
                "0x2AD1.4",
                "0x2AD1.5",
                "0x2AD1.6",
                "0x2AD1.7",
                "0x2AD1.8",
                "0x2AD1.9",
                "0x2AD1.10",
                "0x2AD1.11",
                "0x2AD1.12",
                "0x2AD1.13",
                "0x2AD1.14",
                "0x2AD1.15",
                "0x2AD1.16",
                "0x2AD1.17",
                "0x2AD2.1",
                "0x2AD2.2",
                "0x2AD2.3",
                "0x2AD2.4",
                "0x2AD2.5",
                "0x2AD2.6",
                "0x2AD2.7",
                "0x2AD2.8",
                "0x2AD2.9",
                "0x2AD2.10",
                "0x2AD2.11",
                "0x2AD2.12",
                "0x2AD2.13",
                "0x2AD2.14",
                "0x2AD2.15",
                "0x2AD2.16",
                "0x2AD3",
                "0x2AD4.1",
                "0x2AD4.2",
                "0x2AD4.3",
                "0x2AD5.1",
                "0x2AD5.2",
                "0x2AD5.3",
                "0x2AD6.1",
                "0x2AD6.2",
                "0x2AD6.3",
                "0x2AD7.1",
                "0x2AD7.2",
                "0x2AD7.3",
                "0x2AD8.1",
                "0x2AD8.2",
                "0x2AD8.3",
                "0x2AD9",
                "0x2ADA",
                "0x2B34.1",
                "0x2B34.2",
                "0x2B34.2.1",
                "0x2B34.2.2",
                "0x2B34.2.3",
                "0x2B34.3",
                "0x2B34.3.1",
                "0x2B34.3.2",
                "0x2B34.3.3",
                "0x2B34.4",
                "0x2B34.5",
                "0x2B34.6",
                "0x2B34.7",
                "0x2B34.8",
                "0x2B35.1",
                "0x2B35.2",
                "0x2B35.3",
                "0x2B35.4",
                "0x2B35.5",
                "0x2B35.6",
                "0x2B35.7",
                "0x2B36.1",
                "0x2B36.2",
                "0x2B36.3",
                "0x2B36.4",
                "0x2B36.5",
                "0x2B46.1",
                "0x2B47.1",
                "0x2B48.1",
                "0x2B49.1",
                "0x2B4A.1",
                "0x2B4B.1",
                "0x2B4C.1",
                "0x2B4C.2",
                "0x2B4C.3",
                "0x2B4D.1",
                "0x2B4D.2",
                "0x2B4D.3",
                "0x2B4D.4",
                "0x2B4D.5",
                "0x2B4E.1",
                "0x2B4E.2",
                "0x2B4E.3",
                "0x2B4E.4",
                "0x2B4E.5",
                "0x2B4E.6",
                "0x2B4E.7",
                "0x2B4E.8",
                "0x2B4F.1",
                "0x2B50.1"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BluetoothGattFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/mcp-servers": {
      "get": {
        "operationId": "listMcpServers",
        "tags": [
          "MCP servers"
        ],
        "summary": "Health and fitness MCP servers: every row",
        "description": "Every latest-version entry in the official MCP Registry whose name, title or description matches a health or fitness data-source term, copied from the registry unchanged, with npm and PyPI facts for the packages it names. matchedTerms and publisherIsVendor are derived and keep their evidence. Descriptions are the publishers' own words; repositories were not read and no server was run.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/health-mcp-servers"
        },
        "responses": {
          "200": {
            "description": "176 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServersCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/mcp-servers/{id}": {
      "get": {
        "operationId": "getMcpServer",
        "tags": [
          "MCP servers"
        ],
        "summary": "Health and fitness MCP servers: one row by id",
        "description": "Every latest-version entry in the official MCP Registry whose name, title or description matches a health or fitness data-source term, copied from the registry unchanged, with npm and PyPI facts for the packages it names. matchedTerms and publisherIsVendor are derived and keep their evidence. Descriptions are the publishers' own words; repositories were not read and no server was run.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "ai-com-mcp-strava",
                "ai-iamcoach-coach",
                "ai-povver-mcp-server",
                "ai-rippd-rippd",
                "ai-smithery-eliu243-oura-mcp-server",
                "ai-smithery-eliu243-oura-mcp-server-2",
                "ai-smithery-eliu243-oura-mcp-server-eliu",
                "ai-smithery-fitaf-ai-fitaf-ai-mcp",
                "ai-smithery-fitaf-ai-fitaf-mcp",
                "ai-wellnessproject-wellness-project",
                "app-apick-business",
                "app-athletediary-athlete-diary",
                "app-evertrain-evertrain",
                "app-framezone-framezone",
                "app-health-os-health-os",
                "app-movemate-movemate",
                "app-onlinefitness-coach",
                "app-pumpx-pumpx",
                "app-railway-up-wod-api-production-wod-coach",
                "app-somvia-health",
                "app-tectonicplates-tectonic-plates",
                "app-wemoveat-moveat",
                "app-ymove-exercise-api",
                "br-com-trainerconnect-personal-trainer",
                "coach-freddy-freddy",
                "com-aim-journal-aim",
                "com-cyclingcoachai-cycling-coach-ai",
                "com-garminmcp-garmin",
                "com-getsimma-simma",
                "com-gymnavigator-coach",
                "com-justgains-mcp-server",
                "com-kompetic-joti",
                "com-lifttrackapp-lifttrack",
                "com-missingmcp-garmin",
                "com-missingmcp-whoop",
                "com-myoamigo-myoamigo",
                "com-olyport-cdc-places",
                "com-pacelabintervals-workouts",
                "com-pack4back-nutrition",
                "com-parameterfit-parameter",
                "com-repsworkout-reps",
                "com-rhylthyme-rhylthyme",
                "com-rirlift-rirlift",
                "com-tredict-mcp-server",
                "com-weight-forecast-weight-forecast",
                "dev-anatome-anatome",
                "fitness-depot-strength-programs",
                "fr-runningworkout-running-workout",
                "io-github-abhaymettu-bodylog",
                "io-github-akutishevsky-withings",
                "io-github-almostjacked-fitness-tools",
                "io-github-almostjacked-health-mcp",
                "io-github-andronaft-health-os",
                "io-github-anthesiallc-meddata",
                "io-github-antvsl-oura-mcp",
                "io-github-anup-shesh-garmin-local-mcp",
                "io-github-arjanlig-strava-mcp",
                "io-github-asherlc-dofek",
                "io-github-ashwanthramkl-whoop-mcp",
                "io-github-berkkilicoglu-google-health-fitbit-mcp",
                "io-github-briangaoo-totem",
                "io-github-briangaoo-whoop-mcp",
                "io-github-cdutr-sisrun-mcp",
                "io-github-chenhunghan-garmin-mcp-app",
                "io-github-chrisdoc-hevy-mcp",
                "io-github-cowerxdev-apitoolcalls",
                "io-github-cphoskins-cronometer",
                "io-github-csjoblom-musclesworked",
                "io-github-csoai-org-fitness-ai-mcp",
                "io-github-csoai-org-sleep-tracker-ai-mcp",
                "io-github-csoai-org-workout-planner-ai-mcp",
                "io-github-cunicopia-dev-whoop-postgres-mcp",
                "io-github-cyanheads-cdc-health-mcp-server",
                "io-github-davidmosiah-apple-health-mcp",
                "io-github-davidmosiah-fitbitmcp",
                "io-github-davidmosiah-garminmcp",
                "io-github-davidmosiah-google-health-mcp",
                "io-github-davidmosiah-ouramcp",
                "io-github-davidmosiah-polarmcp",
                "io-github-davidmosiah-samsung-health-mcp",
                "io-github-davidmosiah-strava-mcp",
                "io-github-davidmosiah-wellness-cgm-mcp",
                "io-github-davidmosiah-whoop-mcp",
                "io-github-davidmosiah-withingsmcp",
                "io-github-dengxuhui-igpsport-mcp",
                "io-github-deugene-connect-iq-mcp",
                "io-github-diecoscai-hevy-mcp",
                "io-github-dropflyai-fitfly-engine",
                "io-github-dynamicsninja-garminconnect",
                "io-github-endurancetools-garmin-mcp",
                "io-github-fino-wind-vaultbeat",
                "io-github-fino-wind-vaultbeat-apple-health",
                "io-github-fmp-projects-fitness-ai-connector",
                "io-github-futureweb-intervals-mcp-server",
                "io-github-gabrielmahia-kenya-health-mcp",
                "io-github-goodturnstudio-planmyworkout",
                "io-github-goodturnstudio-syncmycycle",
                "io-github-googlarz-suunto-mcp",
                "io-github-hhopke-intervals-icu-mcp",
                "io-github-imgrund-hybridlog",
                "io-github-jefflitt1-health4ai",
                "io-github-jenwein-mifit",
                "io-github-jezue-fitatu-api",
                "io-github-jordanburke-oura-ring-mcp-server",
                "io-github-krumjahn-health-analyzer-mcp",
                "io-github-leo-runningcoach-coachleo",
                "io-github-ljcl-strava-mcp",
                "io-github-lkennedyshare-hybriqx-workout-adaptation",
                "io-github-mason-levyy-mfp-mcp",
                "io-github-mbrionesalvarez-caddie-mcp",
                "io-github-mcp-dir-garmin-mcp",
                "io-github-mcp-dir-mfit-mcp",
                "io-github-mcp-dir-whoop-mcp",
                "io-github-millerchou-strava-mcp-bridge",
                "io-github-mitchhankins01-oura-ring-mcp",
                "io-github-mrfentmen-suunto-mcp",
                "io-github-mrfentmen-wger-mcp",
                "io-github-musette-cc-musette-mcp",
                "io-github-nasseralbusaidi-macrofactor-mcp",
                "io-github-naymevg-health-mcp",
                "io-github-neiltron-apple-health-mcp",
                "io-github-nftechie-transition-mcp",
                "io-github-osjayaprakash-oura-ring-python-mcp",
                "io-github-pablo-albaladejo-kaiord",
                "io-github-partymola-fitbit-mcp",
                "io-github-partymola-google-health-mcp",
                "io-github-partymola-withings-mcp",
                "io-github-philipad-health-export-mcp",
                "io-github-pipeworx-io-wger",
                "io-github-pranciskus-garmin-workouts-mcp",
                "io-github-proscar87-oura-mcp",
                "io-github-r-huijts-strava-mcp",
                "io-github-rajdeepmondaldotcom-whoop-mcp",
                "io-github-rajdeepmondaldotcom-whoop-mcp-server",
                "io-github-roian6-health-bridge",
                "io-github-rwestergren-cronometer-api-mcp",
                "io-github-rwestergren-hevy-mcp-remote",
                "io-github-shashankswe2020-ux-whoop",
                "io-github-shkyyy18-mi-fitness-data-bridge",
                "io-github-shrek9999-atena",
                "io-github-shrynshjn-health-partner",
                "io-github-slaat-garmin-connect-workouts-mcp",
                "io-github-snoozelieb-coach-mcp",
                "io-github-soma-intelligence-open-health-sync",
                "io-github-souravpn-whoop-mcp",
                "io-github-stumason-polar-flow-server",
                "io-github-thebriangao-totem",
                "io-github-westvegh-tally-workout",
                "io-github-wmarceau-fitness-influencer",
                "io-github-yadheedhya06-mcp-server-whoop",
                "io-github-yasuakiomokawa-oura-mcp",
                "io-github-yuridivonis-whoop-mcp-server",
                "io-github-zayden16-whoop-mcp-server",
                "io-github-zsadigzade-trainbud",
                "io-toolforest-toolforest",
                "io-usefulapi-fitbit",
                "io-usefulapi-oura",
                "io-usefulapi-vital",
                "io-usefulapi-whoop",
                "is-k01-synthetic-health-data",
                "life-twyn-twyn",
                "link-smirnov-mcp-oura",
                "me-passport-mcp",
                "me-phor-phorme-training",
                "me-pulsai-garmin",
                "mobile-upfit-upfit",
                "no-sladd-mcp",
                "org-ghurt-ghurt",
                "org-memoryapi-health",
                "plus-gym-gym-plus",
                "run-stas-stas",
                "tech-skeletonarmy-marrow",
                "tools-pacing-mcp",
                "training-stats-garmin",
                "uk-slate-hq-slate",
                "xyz-perpvue-mcp"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    },
    "/api/v1/pose/keypoints": {
      "get": {
        "operationId": "listPoseKeypoints",
        "tags": [
          "Pose estimation"
        ],
        "summary": "Pose-estimation keypoint maps: every row",
        "description": "Every point of each pose-estimation keypoint scheme this site maps, with its index and name exactly as the model's own source spells them (Apple Vision's named joints have no index, so theirs is null), the source file and the SHA-256 of the bytes read. crosswalkKey is derived (the name lowercased, everything outside a-z0-9 removed), and points are joined across schemes on it and nothing else.",
        "externalDocs": {
          "description": "The page presenting this data",
          "url": "https://aifitnessapi.com/pose-keypoints"
        },
        "responses": {
          "200": {
            "description": "321 rows",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PoseKeypointsCollection"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/pose/keypoints/{id}": {
      "get": {
        "operationId": "getPoseKeypoint",
        "tags": [
          "Pose estimation"
        ],
        "summary": "Pose-estimation keypoint maps: one row by id",
        "description": "Every point of each pose-estimation keypoint scheme this site maps, with its index and name exactly as the model's own source spells them (Apple Vision's named joints have no index, so theirs is null), the source file and the SHA-256 of the bytes read. crosswalkKey is derived (the name lowercased, everything outside a-z0-9 removed), and points are joined across schemes on it and nothing else.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Case-sensitive. The enum is the complete list of ids this edition serves.",
            "schema": {
              "type": "string",
              "enum": [
                "blazepose-33.0",
                "blazepose-33.1",
                "blazepose-33.2",
                "blazepose-33.3",
                "blazepose-33.4",
                "blazepose-33.5",
                "blazepose-33.6",
                "blazepose-33.7",
                "blazepose-33.8",
                "blazepose-33.9",
                "blazepose-33.10",
                "blazepose-33.11",
                "blazepose-33.12",
                "blazepose-33.13",
                "blazepose-33.14",
                "blazepose-33.15",
                "blazepose-33.16",
                "blazepose-33.17",
                "blazepose-33.18",
                "blazepose-33.19",
                "blazepose-33.20",
                "blazepose-33.21",
                "blazepose-33.22",
                "blazepose-33.23",
                "blazepose-33.24",
                "blazepose-33.25",
                "blazepose-33.26",
                "blazepose-33.27",
                "blazepose-33.28",
                "blazepose-33.29",
                "blazepose-33.30",
                "blazepose-33.31",
                "blazepose-33.32",
                "ml-kit.0",
                "ml-kit.1",
                "ml-kit.2",
                "ml-kit.3",
                "ml-kit.4",
                "ml-kit.5",
                "ml-kit.6",
                "ml-kit.7",
                "ml-kit.8",
                "ml-kit.9",
                "ml-kit.10",
                "ml-kit.11",
                "ml-kit.12",
                "ml-kit.13",
                "ml-kit.14",
                "ml-kit.15",
                "ml-kit.16",
                "ml-kit.17",
                "ml-kit.18",
                "ml-kit.19",
                "ml-kit.20",
                "ml-kit.21",
                "ml-kit.22",
                "ml-kit.23",
                "ml-kit.24",
                "ml-kit.25",
                "ml-kit.26",
                "ml-kit.27",
                "ml-kit.28",
                "ml-kit.29",
                "ml-kit.30",
                "ml-kit.31",
                "ml-kit.32",
                "coco-17.0",
                "coco-17.1",
                "coco-17.2",
                "coco-17.3",
                "coco-17.4",
                "coco-17.5",
                "coco-17.6",
                "coco-17.7",
                "coco-17.8",
                "coco-17.9",
                "coco-17.10",
                "coco-17.11",
                "coco-17.12",
                "coco-17.13",
                "coco-17.14",
                "coco-17.15",
                "coco-17.16",
                "halpe-26.0",
                "halpe-26.1",
                "halpe-26.2",
                "halpe-26.3",
                "halpe-26.4",
                "halpe-26.5",
                "halpe-26.6",
                "halpe-26.7",
                "halpe-26.8",
                "halpe-26.9",
                "halpe-26.10",
                "halpe-26.11",
                "halpe-26.12",
                "halpe-26.13",
                "halpe-26.14",
                "halpe-26.15",
                "halpe-26.16",
                "halpe-26.17",
                "halpe-26.18",
                "halpe-26.19",
                "halpe-26.20",
                "halpe-26.21",
                "halpe-26.22",
                "halpe-26.23",
                "halpe-26.24",
                "halpe-26.25",
                "coco-wholebody-133.0",
                "coco-wholebody-133.1",
                "coco-wholebody-133.2",
                "coco-wholebody-133.3",
                "coco-wholebody-133.4",
                "coco-wholebody-133.5",
                "coco-wholebody-133.6",
                "coco-wholebody-133.7",
                "coco-wholebody-133.8",
                "coco-wholebody-133.9",
                "coco-wholebody-133.10",
                "coco-wholebody-133.11",
                "coco-wholebody-133.12",
                "coco-wholebody-133.13",
                "coco-wholebody-133.14",
                "coco-wholebody-133.15",
                "coco-wholebody-133.16",
                "coco-wholebody-133.17",
                "coco-wholebody-133.18",
                "coco-wholebody-133.19",
                "coco-wholebody-133.20",
                "coco-wholebody-133.21",
                "coco-wholebody-133.22",
                "coco-wholebody-133.23",
                "coco-wholebody-133.24",
                "coco-wholebody-133.25",
                "coco-wholebody-133.26",
                "coco-wholebody-133.27",
                "coco-wholebody-133.28",
                "coco-wholebody-133.29",
                "coco-wholebody-133.30",
                "coco-wholebody-133.31",
                "coco-wholebody-133.32",
                "coco-wholebody-133.33",
                "coco-wholebody-133.34",
                "coco-wholebody-133.35",
                "coco-wholebody-133.36",
                "coco-wholebody-133.37",
                "coco-wholebody-133.38",
                "coco-wholebody-133.39",
                "coco-wholebody-133.40",
                "coco-wholebody-133.41",
                "coco-wholebody-133.42",
                "coco-wholebody-133.43",
                "coco-wholebody-133.44",
                "coco-wholebody-133.45",
                "coco-wholebody-133.46",
                "coco-wholebody-133.47",
                "coco-wholebody-133.48",
                "coco-wholebody-133.49",
                "coco-wholebody-133.50",
                "coco-wholebody-133.51",
                "coco-wholebody-133.52",
                "coco-wholebody-133.53",
                "coco-wholebody-133.54",
                "coco-wholebody-133.55",
                "coco-wholebody-133.56",
                "coco-wholebody-133.57",
                "coco-wholebody-133.58",
                "coco-wholebody-133.59",
                "coco-wholebody-133.60",
                "coco-wholebody-133.61",
                "coco-wholebody-133.62",
                "coco-wholebody-133.63",
                "coco-wholebody-133.64",
                "coco-wholebody-133.65",
                "coco-wholebody-133.66",
                "coco-wholebody-133.67",
                "coco-wholebody-133.68",
                "coco-wholebody-133.69",
                "coco-wholebody-133.70",
                "coco-wholebody-133.71",
                "coco-wholebody-133.72",
                "coco-wholebody-133.73",
                "coco-wholebody-133.74",
                "coco-wholebody-133.75",
                "coco-wholebody-133.76",
                "coco-wholebody-133.77",
                "coco-wholebody-133.78",
                "coco-wholebody-133.79",
                "coco-wholebody-133.80",
                "coco-wholebody-133.81",
                "coco-wholebody-133.82",
                "coco-wholebody-133.83",
                "coco-wholebody-133.84",
                "coco-wholebody-133.85",
                "coco-wholebody-133.86",
                "coco-wholebody-133.87",
                "coco-wholebody-133.88",
                "coco-wholebody-133.89",
                "coco-wholebody-133.90",
                "coco-wholebody-133.91",
                "coco-wholebody-133.92",
                "coco-wholebody-133.93",
                "coco-wholebody-133.94",
                "coco-wholebody-133.95",
                "coco-wholebody-133.96",
                "coco-wholebody-133.97",
                "coco-wholebody-133.98",
                "coco-wholebody-133.99",
                "coco-wholebody-133.100",
                "coco-wholebody-133.101",
                "coco-wholebody-133.102",
                "coco-wholebody-133.103",
                "coco-wholebody-133.104",
                "coco-wholebody-133.105",
                "coco-wholebody-133.106",
                "coco-wholebody-133.107",
                "coco-wholebody-133.108",
                "coco-wholebody-133.109",
                "coco-wholebody-133.110",
                "coco-wholebody-133.111",
                "coco-wholebody-133.112",
                "coco-wholebody-133.113",
                "coco-wholebody-133.114",
                "coco-wholebody-133.115",
                "coco-wholebody-133.116",
                "coco-wholebody-133.117",
                "coco-wholebody-133.118",
                "coco-wholebody-133.119",
                "coco-wholebody-133.120",
                "coco-wholebody-133.121",
                "coco-wholebody-133.122",
                "coco-wholebody-133.123",
                "coco-wholebody-133.124",
                "coco-wholebody-133.125",
                "coco-wholebody-133.126",
                "coco-wholebody-133.127",
                "coco-wholebody-133.128",
                "coco-wholebody-133.129",
                "coco-wholebody-133.130",
                "coco-wholebody-133.131",
                "coco-wholebody-133.132",
                "openpose-body-25.0",
                "openpose-body-25.1",
                "openpose-body-25.2",
                "openpose-body-25.3",
                "openpose-body-25.4",
                "openpose-body-25.5",
                "openpose-body-25.6",
                "openpose-body-25.7",
                "openpose-body-25.8",
                "openpose-body-25.9",
                "openpose-body-25.10",
                "openpose-body-25.11",
                "openpose-body-25.12",
                "openpose-body-25.13",
                "openpose-body-25.14",
                "openpose-body-25.15",
                "openpose-body-25.16",
                "openpose-body-25.17",
                "openpose-body-25.18",
                "openpose-body-25.19",
                "openpose-body-25.20",
                "openpose-body-25.21",
                "openpose-body-25.22",
                "openpose-body-25.23",
                "openpose-body-25.24",
                "openpose-coco-18.0",
                "openpose-coco-18.1",
                "openpose-coco-18.2",
                "openpose-coco-18.3",
                "openpose-coco-18.4",
                "openpose-coco-18.5",
                "openpose-coco-18.6",
                "openpose-coco-18.7",
                "openpose-coco-18.8",
                "openpose-coco-18.9",
                "openpose-coco-18.10",
                "openpose-coco-18.11",
                "openpose-coco-18.12",
                "openpose-coco-18.13",
                "openpose-coco-18.14",
                "openpose-coco-18.15",
                "openpose-coco-18.16",
                "openpose-coco-18.17",
                "apple-vision-2d.leftEar",
                "apple-vision-2d.leftEye",
                "apple-vision-2d.rightEar",
                "apple-vision-2d.rightEye",
                "apple-vision-2d.neck",
                "apple-vision-2d.nose",
                "apple-vision-2d.leftShoulder",
                "apple-vision-2d.leftElbow",
                "apple-vision-2d.leftWrist",
                "apple-vision-2d.rightShoulder",
                "apple-vision-2d.rightElbow",
                "apple-vision-2d.rightWrist",
                "apple-vision-2d.root",
                "apple-vision-2d.leftHip",
                "apple-vision-2d.leftKnee",
                "apple-vision-2d.leftAnkle",
                "apple-vision-2d.rightHip",
                "apple-vision-2d.rightKnee",
                "apple-vision-2d.rightAnkle",
                "apple-vision-3d.topHead",
                "apple-vision-3d.centerHead",
                "apple-vision-3d.centerShoulder",
                "apple-vision-3d.leftShoulder",
                "apple-vision-3d.rightShoulder",
                "apple-vision-3d.leftElbow",
                "apple-vision-3d.rightElbow",
                "apple-vision-3d.leftWrist",
                "apple-vision-3d.rightWrist",
                "apple-vision-3d.leftHip",
                "apple-vision-3d.rightHip",
                "apple-vision-3d.leftKnee",
                "apple-vision-3d.rightKnee",
                "apple-vision-3d.leftAnkle",
                "apple-vision-3d.rightAnkle",
                "apple-vision-3d.root",
                "apple-vision-3d.spine"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The row",
            "headers": {
              "Access-Control-Allow-Origin": {
                "description": "Always *: any origin may read the response.",
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "description": "Always \"public, max-age=3600, stale-while-revalidate=86400\".",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PoseKeypointResponse"
                }
              }
            }
          },
          "404": {
            "description": "No item has this id. Ids are case-sensitive. The body is the site's HTML not-found page, not JSON, so check the status code."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Verified": {
        "type": "object",
        "required": [
          "date",
          "meaning"
        ],
        "description": "When the data was last verified or read from its primary source, and what that date means for this response",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "meaning": {
            "type": "string"
          }
        }
      },
      "DatasetRef": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "version",
          "json",
          "csv"
        ],
        "description": "The published dataset edition this response is served from",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "json": {
            "type": "string",
            "format": "uri"
          },
          "csv": {
            "type": "string",
            "format": "uri"
          },
          "isBasedOn": {
            "oneOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                }
              }
            ],
            "description": "The vendor documentation a generated dataset is read from: one URL, or the list of them where it was read from several"
          }
        }
      },
      "Excluded": {
        "type": "object",
        "required": [
          "id",
          "reason"
        ],
        "description": "A dataset row the collection does not serve, and why",
        "properties": {
          "id": {
            "type": "string"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "ApiIndex": {
        "type": "object",
        "required": [
          "name",
          "apiVersion",
          "self",
          "docs",
          "openapi",
          "license",
          "attribution",
          "verified",
          "rules",
          "mcp",
          "collections"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "description": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "docs": {
            "type": "string",
            "format": "uri"
          },
          "openapi": {
            "type": "string",
            "format": "uri"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "rules": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mcp": {
            "type": "object",
            "required": [
              "url",
              "transport",
              "tools"
            ],
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "transport": {
                "type": "string",
                "const": "streamable-http"
              },
              "tools": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "name",
                    "description"
                  ],
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "collections": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "title",
                "url",
                "itemUrl",
                "key",
                "count",
                "dataset",
                "source",
                "verified"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "itemUrl": {
                  "type": "string",
                  "description": "URL template for one item"
                },
                "key": {
                  "type": "string"
                },
                "count": {
                  "type": "integer"
                },
                "dataset": {
                  "type": "string"
                },
                "source": {
                  "type": "string",
                  "format": "uri"
                },
                "verified": {
                  "$ref": "#/components/schemas/Verified"
                }
              }
            }
          }
        }
      },
      "Api": {
        "type": "object",
        "required": [
          "id",
          "label",
          "category",
          "devCost",
          "userSideCost",
          "approvalGate",
          "source",
          "page",
          "sourceLastVerified"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Product id, also the slug of the product's directory page (/apis/<id>)"
          },
          "label": {
            "type": "string",
            "description": "The product as the directory names it"
          },
          "category": {
            "type": "string",
            "description": "Directory category: wearable-direct, aggregator, platform-store, nutrition, exercise-content, motion-sdk or pose-model"
          },
          "devCost": {
            "type": "string",
            "description": "How the vendor bills developers: free | free-tier-then-paid | usage-based | contact-sales"
          },
          "userSideCost": {
            "type": [
              "null",
              "string"
            ],
            "description": "What each end user must own or pay for before data flows (null = none documented)"
          },
          "approvalGate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Review/approval gating launch (null = none documented)"
          },
          "source": {
            "type": "string",
            "description": "aifitnessapi.com page carrying the verified claims"
          },
          "page": {
            "type": "string",
            "format": "uri",
            "description": "The product's page in the aifitnessapi.com directory"
          },
          "sourceLastVerified": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "When the source page was last verified; null where the source is not a dated page"
          }
        }
      },
      "ApiDetail": {
        "type": "object",
        "required": [
          "id",
          "label",
          "category",
          "devCost",
          "userSideCost",
          "approvalGate",
          "source",
          "page",
          "sourceLastVerified",
          "coverage",
          "changes"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Product id, also the slug of the product's directory page (/apis/<id>)"
          },
          "label": {
            "type": "string",
            "description": "The product as the directory names it"
          },
          "category": {
            "type": "string",
            "description": "Directory category: wearable-direct, aggregator, platform-store, nutrition, exercise-content, motion-sdk or pose-model"
          },
          "devCost": {
            "type": "string",
            "description": "How the vendor bills developers: free | free-tier-then-paid | usage-based | contact-sales"
          },
          "userSideCost": {
            "type": [
              "null",
              "string"
            ],
            "description": "What each end user must own or pay for before data flows (null = none documented)"
          },
          "approvalGate": {
            "type": [
              "null",
              "string"
            ],
            "description": "Review/approval gating launch (null = none documented)"
          },
          "source": {
            "type": "string",
            "description": "aifitnessapi.com page carrying the verified claims"
          },
          "page": {
            "type": "string",
            "format": "uri",
            "description": "The product's page in the aifitnessapi.com directory"
          },
          "sourceLastVerified": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "When the source page was last verified; null where the source is not a dated page"
          },
          "coverage": {
            "type": "array",
            "description": "Every page on aifitnessapi.com that covers the product, grouped by section, most relevant first",
            "items": {
              "type": "object",
              "required": [
                "section",
                "url",
                "pages"
              ],
              "properties": {
                "section": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                },
                "pages": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "title",
                      "url"
                    ],
                    "properties": {
                      "title": {
                        "type": "string"
                      },
                      "url": {
                        "type": "string",
                        "format": "uri"
                      }
                    }
                  }
                }
              }
            }
          },
          "changes": {
            "type": "array",
            "description": "Tracked ecosystem changes that name the product (rows of /api/v1/changes)",
            "items": {
              "type": "object",
              "required": [
                "id",
                "date",
                "title",
                "status",
                "url"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "date": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "ApisCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "id",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 24
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Api"
            }
          }
        }
      },
      "ApiResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "id"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/ApiDetail"
          }
        }
      },
      "HealthkitType": {
        "type": "object",
        "required": [
          "identifier",
          "objcConstant",
          "family",
          "group",
          "abstract",
          "aggregation",
          "unitFamily",
          "valueEnum",
          "iosIntroduced",
          "watchosIntroduced",
          "deprecated",
          "iosDeprecated",
          "deprecationNote",
          "renamedTo",
          "appleDocumented",
          "appleDocs"
        ],
        "properties": {
          "identifier": {
            "type": "string",
            "description": "Swift case name within its family"
          },
          "objcConstant": {
            "type": "string",
            "description": "The equivalent Objective-C constant"
          },
          "family": {
            "type": "string",
            "description": "Which of the four HealthKit identifier types this is a case of"
          },
          "group": {
            "type": "string",
            "description": "Apple's own topic grouping for the type"
          },
          "abstract": {
            "type": [
              "null",
              "string"
            ],
            "description": "Apple's one-line description, verbatim; null where Apple ships none"
          },
          "aggregation": {
            "type": [
              "null",
              "string"
            ],
            "description": "DERIVED, quantity types only: cumulative or discrete per Apple's prose; null where unstated or not applicable"
          },
          "unitFamily": {
            "type": [
              "null",
              "string"
            ],
            "description": "DERIVED, quantity types only: the unit family Apple names in prose"
          },
          "valueEnum": {
            "type": [
              "null",
              "string"
            ],
            "description": "Category types only: the HKCategoryValue enum that decodes the sample"
          },
          "iosIntroduced": {
            "type": "string",
            "description": "iOS version the type was introduced in"
          },
          "watchosIntroduced": {
            "type": "string",
            "description": "watchOS version the type was introduced in"
          },
          "deprecated": {
            "type": "string",
            "description": "yes when any platform entry in Apple's availability data carries a deprecatedAt version (or Apple's deprecated flag, which Apple leaves false even on deprecated symbols)"
          },
          "iosDeprecated": {
            "type": [
              "null",
              "string"
            ],
            "description": "iOS version Apple says the type was deprecated in; null when not deprecated on iOS"
          },
          "deprecationNote": {
            "type": [
              "null",
              "string"
            ],
            "description": "Apple's deprecation note, verbatim, with symbol links resolved to their names; null where Apple gives none"
          },
          "renamedTo": {
            "type": [
              "null",
              "string"
            ],
            "description": "The symbol Apple's availability data says the type was renamed to; null where Apple names none"
          },
          "appleDocumented": {
            "type": "string",
            "description": "no when Apple ships the type with neither abstract nor discussion"
          },
          "appleDocs": {
            "type": "string",
            "description": "Apple's reference page for the type — the page the row was read from, under the type's own family path"
          }
        }
      },
      "HealthkitTypesCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "identifier",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 241
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HealthkitType"
            }
          }
        }
      },
      "HealthkitTypeResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "identifier"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/HealthkitType"
          }
        }
      },
      "HealthkitMetadataKey": {
        "type": "object",
        "required": [
          "swiftName",
          "objcName",
          "group",
          "subgroup",
          "valueType",
          "valueTypeEvidence",
          "iosIntroduced",
          "watchosIntroduced",
          "deprecated",
          "abstract",
          "appleDocs",
          "page"
        ],
        "properties": {
          "swiftName": {
            "type": "string",
            "description": "The Swift constant name"
          },
          "objcName": {
            "type": "string",
            "description": "The Objective-C constant name; null where Apple gives none"
          },
          "group": {
            "type": "string",
            "description": "Apple's topic group on the Metadata Keys page"
          },
          "subgroup": {
            "type": [
              "null",
              "string"
            ],
            "description": "The section inside the Workout Metadata Keys sub-collection; null elsewhere"
          },
          "valueType": {
            "type": [
              "null",
              "string"
            ],
            "description": "DERIVED: the value type valueTypeEvidence names; null where Apple does not state it"
          },
          "valueTypeEvidence": {
            "type": [
              "null",
              "string"
            ],
            "description": "Apple's sentence valueType was read from, verbatim"
          },
          "iosIntroduced": {
            "type": "string",
            "description": "iOS version the key was introduced in, per Apple's availability data"
          },
          "watchosIntroduced": {
            "type": "string",
            "description": "watchOS version the key was introduced in, per Apple's availability data"
          },
          "deprecated": {
            "type": "string",
            "description": "yes when Apple's payload marks the key deprecated"
          },
          "abstract": {
            "type": [
              "null",
              "string"
            ],
            "description": "Apple's abstract, verbatim; null where Apple publishes none"
          },
          "appleDocs": {
            "type": "string",
            "description": "Apple's documentation page for the key"
          },
          "page": {
            "type": "string",
            "description": "This site's row for the key"
          }
        }
      },
      "HealthkitMetadataKeysCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "swiftName",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 67
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HealthkitMetadataKey"
            }
          }
        }
      },
      "HealthkitMetadataKeyResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "swiftName"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/HealthkitMetadataKey"
          }
        }
      },
      "HealthConnectRecord": {
        "type": "object",
        "required": [
          "className",
          "qualifiedName",
          "dataType",
          "category",
          "recordShape",
          "unitClass",
          "mandatoryFields",
          "readPermissions",
          "writePermissions",
          "permissionEvidence",
          "aggregateMetrics",
          "addedIn",
          "featureFlag",
          "deprecated",
          "description",
          "googleDocs",
          "sourceUpdated",
          "page"
        ],
        "properties": {
          "className": {
            "type": "string",
            "description": "Jetpack record class name"
          },
          "qualifiedName": {
            "type": "string",
            "description": "The record class's fully qualified Jetpack name"
          },
          "dataType": {
            "type": "string",
            "description": "The data type's name in Google's data-types table"
          },
          "category": {
            "type": "string",
            "description": "Google's category for the data type, as printed on the data-types page"
          },
          "recordShape": {
            "type": "string",
            "description": "Interval, Instantaneous or Series, per Google's table"
          },
          "unitClass": {
            "type": [
              "null",
              "string"
            ],
            "description": "Unit class Google's table names; null where none"
          },
          "mandatoryFields": {
            "type": "string",
            "description": "Fields Google's table lists as mandatory, semicolon-separated"
          },
          "readPermissions": {
            "type": "string",
            "description": "android.permission.health read strings for the class, semicolon-separated"
          },
          "writePermissions": {
            "type": "string",
            "description": "android.permission.health write strings for the class, semicolon-separated"
          },
          "permissionEvidence": {
            "type": "string",
            "description": "The table text the permission strings were read from"
          },
          "aggregateMetrics": {
            "type": [
              "null",
              "string"
            ],
            "description": "AggregateMetric constants on the class, semicolon-separated; null where none"
          },
          "addedIn": {
            "type": "string",
            "description": "Availability as the Jetpack reference prints it"
          },
          "featureFlag": {
            "type": [
              "null",
              "string"
            ],
            "description": "The FEATURE_ constant Google's table names in the row's permissions cell; null where none"
          },
          "deprecated": {
            "type": "string",
            "description": "yes when the class's Jetpack reference marks it deprecated"
          },
          "description": {
            "type": "string",
            "description": "The first paragraph of Google's class description, verbatim"
          },
          "googleDocs": {
            "type": "string",
            "description": "Google's Jetpack reference page the row was read from"
          },
          "sourceUpdated": {
            "type": "string",
            "description": "That page's \"Last updated\" date"
          },
          "page": {
            "type": "string",
            "description": "This site's page for the record"
          }
        }
      },
      "HealthConnectRecordsCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "className",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 42
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HealthConnectRecord"
            }
          }
        }
      },
      "HealthConnectRecordResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "className"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/HealthConnectRecord"
          }
        }
      },
      "HealthConnectPermission": {
        "type": "object",
        "required": [
          "constant",
          "permission",
          "description",
          "protectionLevel",
          "added",
          "records"
        ],
        "properties": {
          "constant": {
            "type": "string",
            "description": "Constant on android.health.connect.HealthPermissions"
          },
          "permission": {
            "type": "string",
            "description": "The manifest string"
          },
          "description": {
            "type": "string",
            "description": "Google's description, verbatim"
          },
          "protectionLevel": {
            "type": "string",
            "description": "Protection level as Google prints it"
          },
          "added": {
            "type": "string",
            "description": "Availability line as Google prints it"
          },
          "records": {
            "type": [
              "null",
              "string"
            ],
            "description": "Record classes whose data-types row names this string, semicolon-separated; null where none"
          }
        }
      },
      "HealthConnectPermissionsCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "constant",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 219
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HealthConnectPermission"
            }
          }
        }
      },
      "HealthConnectPermissionResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "constant"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/HealthConnectPermission"
          }
        }
      },
      "WearOsDataType": {
        "type": "object",
        "required": [
          "name",
          "kotlinType",
          "dataTypeClass",
          "valueType",
          "dataPointClass",
          "permission",
          "permissionEvidence",
          "addedIn",
          "deprecated",
          "description",
          "googleDocs",
          "page"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The DataType companion constant"
          },
          "kotlinType": {
            "type": "string",
            "description": "The declared type exactly as Google prints it"
          },
          "dataTypeClass": {
            "type": "string",
            "description": "DeltaDataType or AggregateDataType, read from kotlinType"
          },
          "valueType": {
            "type": "string",
            "description": "The first type argument of kotlinType"
          },
          "dataPointClass": {
            "type": "string",
            "description": "The data point class kotlinType names"
          },
          "permission": {
            "type": [
              "null",
              "string"
            ],
            "description": "The permission Google's permissions table lists the constant under; null where the table does not name it"
          },
          "permissionEvidence": {
            "type": [
              "null",
              "string"
            ],
            "description": "The permissions-table row the permission was read from"
          },
          "addedIn": {
            "type": "null",
            "description": "The constant's own \"Added in\" label; null where its block prints none. Null in every row of this edition."
          },
          "deprecated": {
            "type": "string",
            "description": "yes when the reference marks the constant deprecated"
          },
          "description": {
            "type": "string",
            "description": "Google's first description paragraph, verbatim"
          },
          "googleDocs": {
            "type": "string",
            "description": "Google's reference anchor for the constant"
          },
          "page": {
            "type": "string",
            "description": "This site's row for the data type"
          }
        }
      },
      "WearOsDataTypesCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "name",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 65
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WearOsDataType"
            }
          }
        }
      },
      "WearOsDataTypeResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "name"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/WearOsDataType"
          }
        }
      },
      "MatrixRow": {
        "type": "object",
        "required": [
          "id",
          "label",
          "appleHealthKit",
          "androidHealthConnect",
          "watchOut",
          "source"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "Stable metric slug used across aifitnessapi.com"
          },
          "label": {
            "type": "string",
            "description": "Human-readable metric name"
          },
          "appleHealthKit": {
            "type": "string",
            "description": "Apple HealthKit type identifier(s) for this metric"
          },
          "androidHealthConnect": {
            "type": "string",
            "description": "Android Health Connect record type(s) for this metric"
          },
          "watchOut": {
            "type": "string",
            "description": "The cross-platform gotcha, where one exists (null = none recorded)"
          },
          "source": {
            "type": "string",
            "description": "aifitnessapi.com page carrying the verified claims for this metric"
          }
        }
      },
      "MatrixRowsCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "id",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 10
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MatrixRow"
            }
          }
        }
      },
      "MatrixRowResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "id"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/MatrixRow"
          }
        }
      },
      "Change": {
        "type": "object",
        "required": [
          "date",
          "sortDate",
          "title",
          "summary",
          "status",
          "source",
          "sourceLabel",
          "verifiedOn",
          "id"
        ],
        "properties": {
          "date": {
            "type": "string",
            "description": "Event date at the precision the source supports (YYYY, YYYY-MM or YYYY-MM-DD)"
          },
          "sortDate": {
            "type": "string",
            "description": "Full ISO date used only for ordering when `date` is fuzzy"
          },
          "title": {
            "type": "string",
            "description": "Short name of the event"
          },
          "summary": {
            "type": "string",
            "description": "What changed, in the words the linked page can support"
          },
          "status": {
            "type": "string",
            "description": "confirmed | reported | watch — the evidence grade, see methodology"
          },
          "source": {
            "type": "string",
            "description": "aifitnessapi.com page carrying the sourced claim"
          },
          "sourceLabel": {
            "type": "string",
            "description": "Title of that page"
          },
          "verifiedOn": {
            "type": "string",
            "description": "Date this entry was last checked against its source page"
          },
          "id": {
            "type": "string",
            "description": "sortDate plus the slugged title, the same rule as the deadlines calendar's event UIDs; it changes only if the entry's date or title is edited"
          }
        }
      },
      "ChangesCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "id",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 19
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Change"
            }
          }
        }
      },
      "ChangeResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "id"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/Change"
          }
        }
      },
      "GlossaryTerm": {
        "type": "object",
        "required": [
          "term",
          "definition",
          "group",
          "href",
          "anchor",
          "id",
          "slug"
        ],
        "properties": {
          "term": {
            "type": "string",
            "description": "The term as it appears in the glossary"
          },
          "definition": {
            "type": "string",
            "description": "The site's definition of the term"
          },
          "group": {
            "type": "string",
            "description": "Glossary section the term belongs to"
          },
          "href": {
            "type": "string",
            "description": "The canonical aifitnessapi.com page explaining this term"
          },
          "anchor": {
            "type": "string",
            "description": "Stable fragment on /glossary, computed by termId() in the source module"
          },
          "id": {
            "type": "string",
            "description": "Absolute, citable URL of the term entry (the JSON-LD DefinedTerm @id)"
          },
          "slug": {
            "type": "string",
            "description": "The term's citable /glossary fragment without its #term- prefix"
          }
        }
      },
      "GlossaryTermsCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "slug",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 45
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GlossaryTerm"
            }
          }
        }
      },
      "GlossaryTermResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "slug"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/GlossaryTerm"
          }
        }
      },
      "GoogleHealthDataType": {
        "type": "object",
        "required": [
          "dataType",
          "name",
          "filterParam",
          "recordType",
          "storageResolution",
          "channel",
          "webhookSupport",
          "trueZerosSupport",
          "operations",
          "methods",
          "scopes",
          "dataPointProperty",
          "dataPointMatch",
          "dataPointEvidence",
          "schema",
          "requiredFields",
          "fields",
          "rollupSchema",
          "rollupFields",
          "fitbitPredecessor",
          "fitbitDescription",
          "compatibleDevices",
          "flags",
          "googleDocs",
          "page"
        ],
        "properties": {
          "dataType": {
            "type": "string",
            "description": "The hyphenated id Google uses in endpoint URLs"
          },
          "name": {
            "type": "string",
            "description": "Google's display name for the data type, as its data-types table prints it"
          },
          "filterParam": {
            "type": "string",
            "description": "The underscored id Google uses as the dataType filter value"
          },
          "recordType": {
            "type": "string",
            "description": "Interval, Sample, Daily, Session or Food, as Google's table prints it"
          },
          "storageResolution": {
            "type": [
              "null",
              "string"
            ],
            "description": "Google's storage resolution; null where the table states none"
          },
          "channel": {
            "type": "string",
            "description": "v4, or v4beta where Google's table tags the row"
          },
          "webhookSupport": {
            "type": "string",
            "description": "yes where Google's table shows the Webhook support badge"
          },
          "trueZerosSupport": {
            "type": "string",
            "description": "yes where Google's table shows the True zeros support badge"
          },
          "operations": {
            "type": "string",
            "description": "The operations Google's table lists, semicolon-separated"
          },
          "methods": {
            "type": "string",
            "description": "DERIVED: the users.dataTypes.dataPoints methods those operations map to"
          },
          "scopes": {
            "type": "string",
            "description": "DERIVED: full scope URLs (Google's documented prefix + the printed suffix)"
          },
          "dataPointProperty": {
            "type": [
              "null",
              "string"
            ],
            "description": "DERIVED: the DataPoint field for the type; null where neither discovery document has one"
          },
          "dataPointMatch": {
            "type": [
              "null",
              "string"
            ],
            "description": "How dataPointProperty was matched: description or kebab-case rule"
          },
          "dataPointEvidence": {
            "type": [
              "null",
              "string"
            ],
            "description": "That field's description in the discovery document, verbatim"
          },
          "schema": {
            "type": [
              "null",
              "string"
            ],
            "description": "The discovery document schema the DataPoint field refers to"
          },
          "requiredFields": {
            "type": [
              "null",
              "string"
            ],
            "description": "Fields whose description opens \"Required.\""
          },
          "fields": {
            "type": [
              "null",
              "string"
            ],
            "description": "Every field of that schema in the discovery document, semicolon-separated"
          },
          "rollupSchema": {
            "type": [
              "null",
              "string"
            ],
            "description": "The *RollupValue schema a rollup of the type returns, where the table lists rollup or dailyRollup"
          },
          "rollupFields": {
            "type": [
              "null",
              "string"
            ],
            "description": "The fields of rollupSchema in the discovery document, semicolon-separated"
          },
          "fitbitPredecessor": {
            "type": [
              "null",
              "string"
            ],
            "description": "The Fitbit Web API data type Google's mapping table maps to this type; null where it has no row"
          },
          "fitbitDescription": {
            "type": [
              "null",
              "string"
            ],
            "description": "The description in Google's Fitbit Web API mapping row for the type, verbatim; null where the row has none"
          },
          "compatibleDevices": {
            "type": [
              "null",
              "string"
            ],
            "description": "The compatible devices Google's table lists for the type, semicolon-separated; null where it lists none"
          },
          "flags": {
            "type": [
              "null",
              "string"
            ],
            "description": "Kinds of disagreement between Google's own pages for this type"
          },
          "googleDocs": {
            "type": "string",
            "description": "Google's REST reference anchor for the type"
          },
          "page": {
            "type": "string",
            "description": "This site's page for the data type"
          }
        }
      },
      "GoogleHealthDataTypesCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "dataType",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 44
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GoogleHealthDataType"
            }
          }
        }
      },
      "GoogleHealthDataTypeResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "dataType"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/GoogleHealthDataType"
          }
        }
      },
      "BluetoothGattField": {
        "type": "object",
        "required": [
          "characteristicUuid",
          "characteristicName",
          "characteristicId",
          "sigService",
          "structurePublished",
          "order",
          "field",
          "parentField",
          "type",
          "size",
          "sizeUnit",
          "offset",
          "offsetVariesWith",
          "presentIf",
          "flagsField",
          "flagBit",
          "flagValue",
          "units",
          "unitEvidence",
          "gssFile",
          "page",
          "id"
        ],
        "properties": {
          "characteristicUuid": {
            "type": "string",
            "description": "The 16-bit UUID as characteristic_uuids.yaml writes it"
          },
          "characteristicName": {
            "type": "string",
            "description": "The characteristic's name in characteristic_uuids.yaml"
          },
          "characteristicId": {
            "type": "string",
            "description": "The characteristic's identifier, e.g. org.bluetooth.characteristic.heart_rate_measurement"
          },
          "sigService": {
            "type": [
              "null",
              "string"
            ],
            "description": "The service a permitted-characteristics file lists it under; null where no file does"
          },
          "structurePublished": {
            "type": "string",
            "description": "yes when the repository has a gss file for the characteristic"
          },
          "order": {
            "type": [
              "null",
              "string"
            ],
            "description": "Position in the structure; \"3.1\" is the first field of the struct at position 3; null where no structure is published"
          },
          "field": {
            "type": [
              "null",
              "string"
            ],
            "description": "The field name, verbatim"
          },
          "parentField": {
            "type": [
              "null",
              "string"
            ],
            "description": "For a struct's field, the structure field it belongs to"
          },
          "type": {
            "type": [
              "null",
              "string"
            ],
            "description": "The gss type (or a struct row's data_type), verbatim"
          },
          "size": {
            "type": [
              "null",
              "string"
            ],
            "description": "The size as published: \"1\", \"0 or 2\", \"variable\", \"0–18\"…"
          },
          "sizeUnit": {
            "type": [
              "null",
              "string"
            ],
            "description": "octets, or bits where the struct is marked size_in_bits"
          },
          "offset": {
            "type": [
              "integer",
              "null"
            ],
            "description": "DERIVED: the sum of the earlier sizes, only where every one is a plain number; relative to the struct for a struct's field"
          },
          "offsetVariesWith": {
            "type": [
              "null",
              "string"
            ],
            "description": "The earlier fields whose size is not a plain number, when offset is null"
          },
          "presentIf": {
            "type": [
              "null",
              "string"
            ],
            "description": "The field's \"Present if …\" line(s), verbatim; null where it has none"
          },
          "flagsField": {
            "type": [
              "null",
              "string"
            ],
            "description": "DERIVED: the flags field presentIf names, when it parses as one flag bit"
          },
          "flagBit": {
            "type": [
              "integer",
              "null"
            ],
            "description": "DERIVED: the bit presentIf names"
          },
          "flagValue": {
            "type": [
              "integer",
              "null"
            ],
            "description": "DERIVED: the value (0 or 1) presentIf requires"
          },
          "units": {
            "type": [
              "null",
              "string"
            ],
            "description": "DERIVED: the org.bluetooth.unit ids in the field's text"
          },
          "unitEvidence": {
            "type": [
              "null",
              "string"
            ],
            "description": "The line each unit id was read from, verbatim"
          },
          "gssFile": {
            "type": [
              "null",
              "string"
            ],
            "description": "The SIG's gss file at the commit read"
          },
          "page": {
            "type": "string",
            "description": "This site's row for the field (or the hub row where the characteristic has no page)"
          },
          "id": {
            "type": "string",
            "description": "The row's id in this API: the characteristic's 16-bit UUID, a dot and the field's order (0x2A37.1; 0x2A18.6.1 for the first field of the struct at position 6), or the UUID alone for a characteristic with no published structure (0x2A5E)"
          }
        }
      },
      "BluetoothGattFieldsCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "id",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 378
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BluetoothGattField"
            }
          }
        }
      },
      "BluetoothGattFieldResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "id"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/BluetoothGattField"
          }
        }
      },
      "McpServer": {
        "type": "object",
        "required": [
          "name",
          "title",
          "description",
          "version",
          "status",
          "registryPublishedOn",
          "registryUpdatedOn",
          "group",
          "dataSources",
          "matchedTerms",
          "publisherIsVendor",
          "publisherEvidence",
          "packages",
          "remotes",
          "secretInputs",
          "packageLatestVersion",
          "packageLastPublished",
          "packageLicense",
          "packageNotFound",
          "repositoryUrl",
          "websiteUrl",
          "registryRecord",
          "page",
          "id"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The registry name, namespace/server"
          },
          "title": {
            "type": [
              "null",
              "string"
            ],
            "description": "The registry title; null where the entry has none"
          },
          "description": {
            "type": "string",
            "description": "The registry description, verbatim"
          },
          "version": {
            "type": "string",
            "description": "The latest version the registry lists"
          },
          "status": {
            "type": "string",
            "description": "The registry's status for that version: active, deprecated or deleted"
          },
          "registryPublishedOn": {
            "type": "string",
            "description": "The registry's publishedAt for that version's record, YYYY-MM-DD"
          },
          "registryUpdatedOn": {
            "type": "string",
            "description": "The registry's updatedAt for that version's record, YYYY-MM-DD"
          },
          "group": {
            "type": "string",
            "description": "The one group the server is listed under on the page"
          },
          "dataSources": {
            "type": "string",
            "description": "Every data source a matched term names"
          },
          "matchedTerms": {
            "type": "string",
            "description": "DERIVED: each matched term and the field it matched in"
          },
          "publisherIsVendor": {
            "type": "string",
            "description": "DERIVED: yes only when the namespace is the vendor's own domain in reverse-DNS form"
          },
          "publisherEvidence": {
            "type": "null",
            "description": "Why publisherIsVendor is yes; null otherwise. Null in every row of this edition."
          },
          "packages": {
            "type": [
              "null",
              "string"
            ],
            "description": "Each package as listed: registry type, identifier, pinned version, transport"
          },
          "remotes": {
            "type": [
              "null",
              "string"
            ],
            "description": "Each remote as listed: transport type and URL"
          },
          "secretInputs": {
            "type": [
              "null",
              "string"
            ],
            "description": "Names (never values) of the environment variables, headers and URL placeholders the entry marks isSecret"
          },
          "packageLatestVersion": {
            "type": [
              "null",
              "string"
            ],
            "description": "npm or PyPI latest version per package"
          },
          "packageLastPublished": {
            "type": [
              "null",
              "string"
            ],
            "description": "npm or PyPI publish date of that version per package"
          },
          "packageLicense": {
            "type": [
              "null",
              "string"
            ],
            "description": "The licence the npm or PyPI metadata states, per package"
          },
          "packageNotFound": {
            "type": [
              "null",
              "string"
            ],
            "description": "Packages npm or PyPI answered 404 for"
          },
          "repositoryUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "The repository URL as the entry lists it (not read)"
          },
          "websiteUrl": {
            "type": [
              "null",
              "string"
            ],
            "description": "The website URL as the entry lists it"
          },
          "registryRecord": {
            "type": "string",
            "description": "The registry API record the row was read from"
          },
          "page": {
            "type": "string",
            "description": "This site's row for the server"
          },
          "id": {
            "type": "string",
            "description": "The server's row anchor on /health-mcp-servers without its server- prefix: the registry name lowercased, each run of other characters replaced by a hyphen"
          }
        }
      },
      "McpServersCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "id",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 176
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpServer"
            }
          }
        }
      },
      "McpServerResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "id"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/McpServer"
          }
        }
      },
      "PoseKeypoint": {
        "type": "object",
        "required": [
          "scheme",
          "schemeName",
          "index",
          "name",
          "altNames",
          "description",
          "group",
          "crosswalkKey",
          "sharedWith",
          "usedBy",
          "source",
          "sourceBranch",
          "sourceSha256",
          "page",
          "id"
        ],
        "properties": {
          "scheme": {
            "type": "string",
            "description": "The scheme's slug on this site"
          },
          "schemeName": {
            "type": "string",
            "description": "The scheme's name"
          },
          "index": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The integer index the source assigns; null for Apple Vision's named joint constants"
          },
          "name": {
            "type": "string",
            "description": "The point's name exactly as the source spells it"
          },
          "altNames": {
            "type": [
              "null",
              "string"
            ],
            "description": "Other spellings of the same index in the cross-checked sources, where they differ"
          },
          "description": {
            "type": [
              "null",
              "string"
            ],
            "description": "The source's own description of the point, verbatim (ML Kit, Apple); null elsewhere"
          },
          "group": {
            "type": [
              "null",
              "string"
            ],
            "description": "Apple's documentation topic group; null elsewhere"
          },
          "crosswalkKey": {
            "type": "string",
            "description": "DERIVED: name lowercased, characters outside a-z0-9 removed"
          },
          "sharedWith": {
            "type": [
              "null",
              "string"
            ],
            "description": "Other schemes with a point of the same crosswalkKey; null when none (unmapped)"
          },
          "usedBy": {
            "type": "string",
            "description": "Models a fetched source ties to the scheme"
          },
          "source": {
            "type": "string",
            "description": "The file or page the names and indices were copied from"
          },
          "sourceBranch": {
            "type": [
              "null",
              "string"
            ],
            "description": "The GitHub branch read; null for documentation pages"
          },
          "sourceSha256": {
            "type": "string",
            "description": "SHA-256 of the source bytes as served"
          },
          "page": {
            "type": "string",
            "description": "This site's row for the point"
          },
          "id": {
            "type": "string",
            "description": "The scheme slug, a dot and the point's index in that scheme (coco-17.5); for Apple Vision's named joints, which have no index, the joint name (apple-vision-2d.leftEar)"
          }
        }
      },
      "PoseKeypointsCollection": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "description",
          "methodology",
          "key",
          "itemUrl",
          "count",
          "excluded",
          "fields",
          "items"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "sourceTerms": {
            "type": "string",
            "description": "The source's own notice, verbatim, where the dataset carries one; present only on such datasets"
          },
          "description": {
            "type": "string"
          },
          "methodology": {
            "type": "string",
            "description": "How the dataset was built, from the dataset itself"
          },
          "key": {
            "type": "string",
            "const": "id",
            "description": "The item field whose value is the id in itemUrl"
          },
          "itemUrl": {
            "type": "string",
            "description": "URL template for one item"
          },
          "count": {
            "type": "integer",
            "const": 321
          },
          "excluded": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Excluded"
            }
          },
          "fields": {
            "type": "object",
            "description": "What each item field means; null where the dataset documents no meaning",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PoseKeypoint"
            }
          }
        }
      },
      "PoseKeypointResponse": {
        "type": "object",
        "required": [
          "apiVersion",
          "self",
          "title",
          "source",
          "verified",
          "license",
          "licenseUrl",
          "attribution",
          "citeAs",
          "dataset",
          "collection",
          "key",
          "id",
          "item"
        ],
        "properties": {
          "apiVersion": {
            "type": "string",
            "const": "v1"
          },
          "self": {
            "type": "string",
            "format": "uri",
            "description": "This response's own URL"
          },
          "title": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri",
            "description": "The aifitnessapi.com page carrying the sourced claims for this data"
          },
          "verified": {
            "$ref": "#/components/schemas/Verified"
          },
          "license": {
            "type": "string",
            "const": "CC-BY-4.0"
          },
          "licenseUrl": {
            "type": "string",
            "format": "uri"
          },
          "attribution": {
            "type": "string",
            "description": "Credit this when you reuse the data (CC BY 4.0's one condition)"
          },
          "citeAs": {
            "type": "string",
            "description": "A ready-made citation for the dataset edition"
          },
          "dataset": {
            "$ref": "#/components/schemas/DatasetRef"
          },
          "licenseNote": {
            "type": "string",
            "description": "What the licence covers, where the dataset limits it (for example, facts restated from a source that is not relicensed); present only on such datasets"
          },
          "collection": {
            "type": "string",
            "format": "uri",
            "description": "The collection this item belongs to"
          },
          "key": {
            "type": "string",
            "const": "id"
          },
          "id": {
            "type": "string"
          },
          "item": {
            "$ref": "#/components/schemas/PoseKeypoint"
          }
        }
      }
    }
  }
}