{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "Bikepacking Profile", "type": "object", "required": [ "id", "label", "thresholds", "weights" ], "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "thresholds": { "type": "object", "properties": { "targetDistanceKm": { "type": "number" }, "minDistanceKm": { "type": "number" }, "maxDistanceKm": { "type": "number" }, "maxLoadedGradePercent": { "type": "number" }, "maxWaterGapKm": { "type": "number" }, "maxFoodGapKm": { "type": "number" }, "maxBailoutGapKm": { "type": "number" } } }, "weights": { "type": "object", "properties": { "distance": { "type": "number" }, "climb": { "type": "number" }, "steepness": { "type": "number" }, "poorSurface": { "type": "number" }, "trafficStress": { "type": "number" }, "accessUncertainty": { "type": "number" }, "hikeABikeRisk": { "type": "number" }, "officialCycleRouteBonus": { "type": "number" }, "confirmedGoodBonus": { "type": "number" } } } } }