generated: '2026-07-15' method: generated source: openapi/trainingpeaks-openapi.yml description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 49 by_action_class: connected: 34 acting: 15 by_consequence: read: 34 write: 15 human_in_the_loop_required: 0 operations: - path: /v1/info/version method: get operationId: getVersion x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/athlete/profile method: get operationId: getAthleteProfile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/athlete/zones method: get operationId: getAthleteZones x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/athlete/zones/{zoneType} method: get operationId: getAthleteZonesByType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/coach/profile method: get operationId: getCoachProfile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/coach/athletes method: get operationId: getCoachAthletes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/coach/athletes/zones method: get operationId: getCoachAthleteZones x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/coach/athletes/zones/{zoneType} method: get operationId: getCoachAthleteZonesByType x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/coach/assistants method: get operationId: getCoachAssistants x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/coach/assistants/{assistantId} method: get operationId: getCoachAssistant x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/coach/assistants/{assistantId}/athletes method: get operationId: getCoachAssistantAthletes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v3/file method: post operationId: uploadFile x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v2/metrics/{metricId} method: get operationId: getMetric x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/metrics/{startDate}/{endDate} method: get operationId: getMetricsByDateRange x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/metrics/{athleteId}/{startDate}/{endDate} method: get operationId: getAthleteMetrics x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/metrics method: post operationId: createMetric x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/athletes/{athleteId}/nutrition method: get operationId: getNutrition x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/athletes/{athleteId}/nutrition method: post operationId: createNutrition x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/athletes/{athleteId}/nutrition/{nutritionId} method: put operationId: updateNutrition x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/athletes/{athleteId}/nutrition/{nutritionId} method: delete operationId: deleteNutrition x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v2/workouts/{startDate}/{endDate} method: get operationId: getWorkouts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/{athleteId}/{startDate}/{endDate} method: get operationId: getAthleteWorkouts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/changed method: get operationId: getChangedWorkouts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/{athleteId}/changed method: get operationId: getChangedWorkoutsForAthlete x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/wod/{date} method: get operationId: getWorkoutOfTheDay x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/wod/file/{workoutId}/ method: get operationId: getWorkoutOfTheDayFile x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/plan method: post operationId: createWorkout x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v2/workouts/plan/{id} method: put operationId: updateWorkout x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v2/workouts/id/{id} method: get operationId: getWorkoutById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/id/{id} method: delete operationId: deleteWorkoutById x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v2/workouts/{athleteId}/id/{id} method: get operationId: getAthleteWorkoutById x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/{athleteId}/id/{id} method: delete operationId: deleteAthleteWorkoutById x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v2/workouts/id/{id}/meanmaxes method: get operationId: getWorkoutMeanMax x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/{athleteId}/id/{id}/meanmaxes method: get operationId: getAthleteWorkoutMeanMax x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/id/{id}/timeinzones method: get operationId: getWorkoutTimeInZones x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/{athleteId}/id/{id}/timeinzones method: get operationId: getAthleteWorkoutTimeInZones x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/id/{id}/details method: get operationId: getWorkoutDetails x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/{athleteId}/id/{id}/details method: get operationId: getAthleteWorkoutDetails x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/workouts/{athleteId}/id/{workoutId}/comment method: post operationId: createWorkoutComment x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v2/athletes/{athleteId}/strength-workouts method: get operationId: getStrengthWorkouts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/events/next method: get operationId: getNextEvent x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/events/{date} method: get operationId: getEventsByDate x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/events method: post operationId: createEvent x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v2/athletes/{athleteId}/routes method: get operationId: getRoutes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v2/athlete/{athleteId}/routes method: post operationId: createRoute x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/webhook/subscriptions method: get operationId: getWebhookSubscriptions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /v1/webhook/subscriptions method: post operationId: createWebhookSubscription x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/webhook/subscriptions/{subscriptionId} method: put operationId: updateWebhookSubscription x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /v1/webhook/subscriptions/{subscriptionId} method: delete operationId: deleteWebhookSubscription x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required