{ "kind": "open-flow-workflow", "version": 1, "name": "Create, Update, and Read a Strava Activity", "content": { "modelVersion": 14, "document": { "bindings": {}, "graph": { "nodes": { "n_49137c092c7f0d26": { "name": "Create an activity", "kind": "start", "inputDefs": [] }, "n_9280d234db5a098f": { "inputs": { "startDate": { "kind": "value", "value": "YOUR_START_TIME" } }, "name": "Configure start time", "kind": "task", "task": { "inputs": [ { "jsonSchema": { "type": "string" }, "nullable": false, "handle": "startDate" } ], "outputs": [ { "jsonSchema": { "type": "string", "minLength": 1, "description": "Event start time." }, "nullable": false, "handle": "startDate" } ], "name": "Configure start time", "moduleId": "n_4a189d943eba21c8", "capabilities": [ { "kind": "connector", "mode": "independent", "actions": [] } ] } }, "n_663c95cca0f15a32": { "inputs": { "name": { "kind": "value", "value": "Morning Run" }, "type": { "kind": "value", "value": "Run" }, "sportType": { "kind": "value", "value": "Run" }, "startDateLocal": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_9280d234db5a098f", "output": "startDate" } ] }, "elapsedTime": { "kind": "value", "value": 3600 }, "distance": { "kind": "value", "value": 1000 } }, "name": "Create the run", "kind": "task", "task": { "inputs": [ { "description": "Activity name.", "jsonSchema": { "type": "string", "minLength": 1, "description": "Activity name." }, "nullable": false, "handle": "name" }, { "description": "Legacy activity type.", "jsonSchema": { "type": "string", "description": "Legacy activity type." }, "nullable": true, "handle": "type", "value": null }, { "description": "Activity sport type.", "jsonSchema": { "type": "string", "description": "Activity sport type." }, "nullable": false, "handle": "sportType" }, { "description": "Event start time.", "jsonSchema": { "type": "string", "minLength": 1, "description": "Event start time." }, "nullable": false, "handle": "startDateLocal" }, { "description": "The total time spent on the activity, in seconds.", "jsonSchema": { "type": "integer", "exclusiveMinimum": 0, "description": "The total time spent on the activity, in seconds." }, "nullable": false, "handle": "elapsedTime" }, { "description": "Activity Description.", "jsonSchema": { "type": "string", "description": "Activity Description." }, "nullable": true, "handle": "description", "value": null }, { "description": "Activity distance, unit is meters.", "jsonSchema": { "type": "number", "exclusiveMinimum": 0, "description": "Activity distance, unit is meters." }, "nullable": true, "handle": "distance", "value": null }, { "description": "Whether to mark it as a trainer activity.", "jsonSchema": { "type": "boolean", "description": "Whether to mark it as a trainer activity." }, "nullable": true, "handle": "trainer", "value": null }, { "description": "Whether to mark as commuting.", "jsonSchema": { "type": "boolean", "description": "Whether to mark as commuting." }, "nullable": true, "handle": "commute", "value": null } ], "outputs": [ { "description": "Strava activity object.", "jsonSchema": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "external_id": { "type": [ "string", "null" ], "description": "External activity ID." }, "upload_id": { "anyOf": [ { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Upload task ID." }, { "type": "string", "minLength": 1, "description": "Upload task ID." } ], "description": "Upload task ID." }, { "type": "null" } ], "description": "Upload task ID." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "name": { "type": "string", "description": "Activity name." }, "distance": { "type": "number", "description": "Activity distance, unit is meters." }, "moving_time": { "type": "integer", "description": "Movement time in seconds." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "total_elevation_gain": { "type": "number", "description": "Cumulative climb, in meters." }, "type": { "type": "string", "description": "Legacy activity type." }, "sport_type": { "type": "string", "description": "Sports type." }, "start_date": { "type": "string", "description": "UTC start time." }, "start_date_local": { "type": "string", "description": "Local start time." }, "timezone": { "type": "string", "description": "Event time zone." }, "utc_offset": { "type": "number", "description": "Time zone offset in seconds." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "max_watts": { "type": [ "integer", "null" ], "description": "Maximum power." }, "average_heartrate": { "type": [ "number", "null" ], "description": "Average heart rate." }, "max_heartrate": { "type": [ "number", "null" ], "description": "Maximum heart rate." }, "kilojoules": { "type": [ "number", "null" ], "description": "Total work, unit is kilojoules." }, "trainer": { "type": "boolean", "description": "Whether it is a riding platform or trainer activity." }, "commute": { "type": "boolean", "description": "Whether it is a commuting activity." }, "manual": { "type": "boolean", "description": "Whether it is created manually." }, "private": { "type": "boolean", "description": "Whether it is a private event." }, "flagged": { "type": "boolean", "description": "Whether it is marked." }, "gear_id": { "type": [ "string", "null" ], "description": "Equipment ID." }, "map": { "type": "object", "properties": { "id": { "type": "string", "description": "Map object ID." }, "polyline": { "type": [ "string", "null" ], "description": "Complete trajectory polyline." }, "summary_polyline": { "type": [ "string", "null" ], "description": "Summary trajectory polyline." }, "resource_state": { "type": "integer", "description": "Resource status." } }, "additionalProperties": true, "description": "Track map object." }, "description": { "type": [ "string", "null" ], "description": "Activity Description." }, "calories": { "type": [ "number", "null" ], "description": "Burn calories." }, "has_kudoed": { "type": "boolean", "description": "Whether the current user has liked it." }, "hide_from_home": { "type": "boolean", "description": "Whether to hide it on the homepage." }, "gear": { "type": "object", "properties": { "id": { "type": "string", "description": "Equipment ID." }, "primary": { "type": "boolean", "description": "Whether it is the main equipment." }, "name": { "type": "string", "description": "Equipment name." }, "resource_state": { "type": "integer", "description": "Resource status." }, "distance": { "type": "number", "description": "The accumulated mileage of the equipment, in meters." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava gear summary." }, "segment_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of segment results included in the activity." }, "laps": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Circle name." }, "distance": { "type": "number", "description": "Circle distance in meters." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "total_elevation_gain": { "type": "number", "description": "Circle climb, in meters." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "lap_index": { "type": "integer", "description": "Segment number." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment object." }, "description": "Activity circle list." }, "best_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of best results from the event." }, "photos": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Photo abstract." } }, "required": [ "id", "name", "distance", "moving_time", "elapsed_time", "total_elevation_gain", "sport_type", "start_date", "start_date_local", "timezone" ], "additionalProperties": true, "description": "Strava activity object." }, "nullable": false, "handle": "output" } ], "name": "Create the run", "executor": { "kind": "connector", "action": "strava.create_activity", "outputMode": "value" } } }, "n_c4fda745148550bb": { "inputs": { "activity": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_663c95cca0f15a32", "output": "output" } ] } }, "name": "Use the activity ID", "kind": "task", "task": { "inputs": [ { "jsonSchema": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "external_id": { "type": [ "string", "null" ], "description": "External activity ID." }, "upload_id": { "anyOf": [ { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Upload task ID." }, { "type": "string", "minLength": 1, "description": "Upload task ID." } ], "description": "Upload task ID." }, { "type": "null" } ], "description": "Upload task ID." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "name": { "type": "string", "description": "Activity name." }, "distance": { "type": "number", "description": "Activity distance, unit is meters." }, "moving_time": { "type": "integer", "description": "Movement time in seconds." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "total_elevation_gain": { "type": "number", "description": "Cumulative climb, in meters." }, "type": { "type": "string", "description": "Legacy activity type." }, "sport_type": { "type": "string", "description": "Sports type." }, "start_date": { "type": "string", "description": "UTC start time." }, "start_date_local": { "type": "string", "description": "Local start time." }, "timezone": { "type": "string", "description": "Event time zone." }, "utc_offset": { "type": "number", "description": "Time zone offset in seconds." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "max_watts": { "type": [ "integer", "null" ], "description": "Maximum power." }, "average_heartrate": { "type": [ "number", "null" ], "description": "Average heart rate." }, "max_heartrate": { "type": [ "number", "null" ], "description": "Maximum heart rate." }, "kilojoules": { "type": [ "number", "null" ], "description": "Total work, unit is kilojoules." }, "trainer": { "type": "boolean", "description": "Whether it is a riding platform or trainer activity." }, "commute": { "type": "boolean", "description": "Whether it is a commuting activity." }, "manual": { "type": "boolean", "description": "Whether it is created manually." }, "private": { "type": "boolean", "description": "Whether it is a private event." }, "flagged": { "type": "boolean", "description": "Whether it is marked." }, "gear_id": { "type": [ "string", "null" ], "description": "Equipment ID." }, "map": { "type": "object", "properties": { "id": { "type": "string", "description": "Map object ID." }, "polyline": { "type": [ "string", "null" ], "description": "Complete trajectory polyline." }, "summary_polyline": { "type": [ "string", "null" ], "description": "Summary trajectory polyline." }, "resource_state": { "type": "integer", "description": "Resource status." } }, "additionalProperties": true, "description": "Track map object." }, "description": { "type": [ "string", "null" ], "description": "Activity Description." }, "calories": { "type": [ "number", "null" ], "description": "Burn calories." }, "has_kudoed": { "type": "boolean", "description": "Whether the current user has liked it." }, "hide_from_home": { "type": "boolean", "description": "Whether to hide it on the homepage." }, "gear": { "type": "object", "properties": { "id": { "type": "string", "description": "Equipment ID." }, "primary": { "type": "boolean", "description": "Whether it is the main equipment." }, "name": { "type": "string", "description": "Equipment name." }, "resource_state": { "type": "integer", "description": "Resource status." }, "distance": { "type": "number", "description": "The accumulated mileage of the equipment, in meters." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava gear summary." }, "segment_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of segment results included in the activity." }, "laps": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Circle name." }, "distance": { "type": "number", "description": "Circle distance in meters." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "total_elevation_gain": { "type": "number", "description": "Circle climb, in meters." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "lap_index": { "type": "integer", "description": "Segment number." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment object." }, "description": "Activity circle list." }, "best_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of best results from the event." }, "photos": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Photo abstract." } }, "required": [ "id", "name", "distance", "moving_time", "elapsed_time", "total_elevation_gain", "sport_type", "start_date", "start_date_local", "timezone" ], "additionalProperties": true, "description": "Strava activity object." }, "nullable": false, "handle": "activity" } ], "outputs": [ { "jsonSchema": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Activity ID." }, { "type": "string", "minLength": 1, "description": "Activity ID." } ], "description": "Activity ID." }, "nullable": false, "handle": "id" } ], "name": "Use the activity ID", "moduleId": "n_0b161fef041aa7d2", "capabilities": [ { "kind": "connector", "mode": "independent", "actions": [] } ] } }, "n_47cfc9587ab03350": { "inputs": { "id": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_c4fda745148550bb", "output": "id" } ] }, "description": { "kind": "value", "value": "Morning run in the park" } }, "name": "Configure the description", "kind": "task", "task": { "inputs": [ { "jsonSchema": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Activity ID." }, { "type": "string", "minLength": 1, "description": "Activity ID." } ], "description": "Activity ID." }, "nullable": false, "handle": "id" }, { "jsonSchema": { "type": "string" }, "nullable": false, "handle": "description" } ], "outputs": [ { "jsonSchema": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Activity ID." }, { "type": "string", "minLength": 1, "description": "Activity ID." } ], "description": "Activity ID." }, "nullable": false, "handle": "id" }, { "jsonSchema": { "type": "object", "properties": { "commute": { "type": "boolean", "description": "Whether to mark as commuting." }, "trainer": { "type": "boolean", "description": "Whether to mark it as a trainer activity." }, "hideFromHome": { "type": "boolean", "description": "Whether to hide this activity on the home page." }, "description": { "type": "string", "description": "Activity Description." }, "name": { "type": "string", "description": "Activity name." }, "type": { "type": "string", "description": "Legacy activity type." }, "sportType": { "type": "string", "description": "Activity sport type." }, "gearId": { "type": "string", "description": "Associated equipment ID, passing none can clear the current equipment." } }, "additionalProperties": false, "description": "Updateable activity fields." }, "nullable": false, "handle": "activity" } ], "name": "Configure the description", "moduleId": "n_99c38b51aae2a56e", "capabilities": [ { "kind": "connector", "mode": "independent", "actions": [] } ] } }, "n_07efddd448f67da0": { "inputs": { "activityId": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_47cfc9587ab03350", "output": "id" } ] }, "activity": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_47cfc9587ab03350", "output": "activity" } ] } }, "name": "Update the run", "kind": "task", "task": { "inputs": [ { "description": "Activity ID.", "jsonSchema": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Activity ID." }, { "type": "string", "minLength": 1, "description": "Activity ID." } ], "description": "Activity ID." }, "nullable": false, "handle": "activityId" }, { "description": "Updateable activity fields.", "jsonSchema": { "type": "object", "properties": { "commute": { "type": "boolean", "description": "Whether to mark as commuting." }, "trainer": { "type": "boolean", "description": "Whether to mark it as a trainer activity." }, "hideFromHome": { "type": "boolean", "description": "Whether to hide this activity on the home page." }, "description": { "type": "string", "description": "Activity Description." }, "name": { "type": "string", "description": "Activity name." }, "type": { "type": "string", "description": "Legacy activity type." }, "sportType": { "type": "string", "description": "Activity sport type." }, "gearId": { "type": "string", "description": "Associated equipment ID, passing none can clear the current equipment." } }, "additionalProperties": false, "description": "Updateable activity fields." }, "nullable": false, "handle": "activity" } ], "outputs": [ { "description": "Strava activity object.", "jsonSchema": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "external_id": { "type": [ "string", "null" ], "description": "External activity ID." }, "upload_id": { "anyOf": [ { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Upload task ID." }, { "type": "string", "minLength": 1, "description": "Upload task ID." } ], "description": "Upload task ID." }, { "type": "null" } ], "description": "Upload task ID." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "name": { "type": "string", "description": "Activity name." }, "distance": { "type": "number", "description": "Activity distance, unit is meters." }, "moving_time": { "type": "integer", "description": "Movement time in seconds." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "total_elevation_gain": { "type": "number", "description": "Cumulative climb, in meters." }, "type": { "type": "string", "description": "Legacy activity type." }, "sport_type": { "type": "string", "description": "Sports type." }, "start_date": { "type": "string", "description": "UTC start time." }, "start_date_local": { "type": "string", "description": "Local start time." }, "timezone": { "type": "string", "description": "Event time zone." }, "utc_offset": { "type": "number", "description": "Time zone offset in seconds." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "max_watts": { "type": [ "integer", "null" ], "description": "Maximum power." }, "average_heartrate": { "type": [ "number", "null" ], "description": "Average heart rate." }, "max_heartrate": { "type": [ "number", "null" ], "description": "Maximum heart rate." }, "kilojoules": { "type": [ "number", "null" ], "description": "Total work, unit is kilojoules." }, "trainer": { "type": "boolean", "description": "Whether it is a riding platform or trainer activity." }, "commute": { "type": "boolean", "description": "Whether it is a commuting activity." }, "manual": { "type": "boolean", "description": "Whether it is created manually." }, "private": { "type": "boolean", "description": "Whether it is a private event." }, "flagged": { "type": "boolean", "description": "Whether it is marked." }, "gear_id": { "type": [ "string", "null" ], "description": "Equipment ID." }, "map": { "type": "object", "properties": { "id": { "type": "string", "description": "Map object ID." }, "polyline": { "type": [ "string", "null" ], "description": "Complete trajectory polyline." }, "summary_polyline": { "type": [ "string", "null" ], "description": "Summary trajectory polyline." }, "resource_state": { "type": "integer", "description": "Resource status." } }, "additionalProperties": true, "description": "Track map object." }, "description": { "type": [ "string", "null" ], "description": "Activity Description." }, "calories": { "type": [ "number", "null" ], "description": "Burn calories." }, "has_kudoed": { "type": "boolean", "description": "Whether the current user has liked it." }, "hide_from_home": { "type": "boolean", "description": "Whether to hide it on the homepage." }, "gear": { "type": "object", "properties": { "id": { "type": "string", "description": "Equipment ID." }, "primary": { "type": "boolean", "description": "Whether it is the main equipment." }, "name": { "type": "string", "description": "Equipment name." }, "resource_state": { "type": "integer", "description": "Resource status." }, "distance": { "type": "number", "description": "The accumulated mileage of the equipment, in meters." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava gear summary." }, "segment_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of segment results included in the activity." }, "laps": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Circle name." }, "distance": { "type": "number", "description": "Circle distance in meters." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "total_elevation_gain": { "type": "number", "description": "Circle climb, in meters." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "lap_index": { "type": "integer", "description": "Segment number." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment object." }, "description": "Activity circle list." }, "best_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of best results from the event." }, "photos": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Photo abstract." } }, "required": [ "id", "name", "distance", "moving_time", "elapsed_time", "total_elevation_gain", "sport_type", "start_date", "start_date_local", "timezone" ], "additionalProperties": true, "description": "Strava activity object." }, "nullable": false, "handle": "output" } ], "name": "Update the run", "executor": { "kind": "connector", "action": "strava.update_activity", "outputMode": "value" } } }, "n_9f53e43c90052ab1": { "inputs": { "activityId": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_c4fda745148550bb", "output": "id" } ] } }, "name": "Read the same run", "kind": "task", "task": { "inputs": [ { "description": "Activity ID.", "jsonSchema": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Activity ID." }, { "type": "string", "minLength": 1, "description": "Activity ID." } ], "description": "Activity ID." }, "nullable": false, "handle": "activityId" }, { "description": "Whether to return all road segment scores.", "jsonSchema": { "type": "boolean", "description": "Whether to return all road segment scores." }, "nullable": true, "handle": "includeAllEfforts", "value": null } ], "outputs": [ { "description": "Strava activity object.", "jsonSchema": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "external_id": { "type": [ "string", "null" ], "description": "External activity ID." }, "upload_id": { "anyOf": [ { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Upload task ID." }, { "type": "string", "minLength": 1, "description": "Upload task ID." } ], "description": "Upload task ID." }, { "type": "null" } ], "description": "Upload task ID." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "name": { "type": "string", "description": "Activity name." }, "distance": { "type": "number", "description": "Activity distance, unit is meters." }, "moving_time": { "type": "integer", "description": "Movement time in seconds." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "total_elevation_gain": { "type": "number", "description": "Cumulative climb, in meters." }, "type": { "type": "string", "description": "Legacy activity type." }, "sport_type": { "type": "string", "description": "Sports type." }, "start_date": { "type": "string", "description": "UTC start time." }, "start_date_local": { "type": "string", "description": "Local start time." }, "timezone": { "type": "string", "description": "Event time zone." }, "utc_offset": { "type": "number", "description": "Time zone offset in seconds." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "max_watts": { "type": [ "integer", "null" ], "description": "Maximum power." }, "average_heartrate": { "type": [ "number", "null" ], "description": "Average heart rate." }, "max_heartrate": { "type": [ "number", "null" ], "description": "Maximum heart rate." }, "kilojoules": { "type": [ "number", "null" ], "description": "Total work, unit is kilojoules." }, "trainer": { "type": "boolean", "description": "Whether it is a riding platform or trainer activity." }, "commute": { "type": "boolean", "description": "Whether it is a commuting activity." }, "manual": { "type": "boolean", "description": "Whether it is created manually." }, "private": { "type": "boolean", "description": "Whether it is a private event." }, "flagged": { "type": "boolean", "description": "Whether it is marked." }, "gear_id": { "type": [ "string", "null" ], "description": "Equipment ID." }, "map": { "type": "object", "properties": { "id": { "type": "string", "description": "Map object ID." }, "polyline": { "type": [ "string", "null" ], "description": "Complete trajectory polyline." }, "summary_polyline": { "type": [ "string", "null" ], "description": "Summary trajectory polyline." }, "resource_state": { "type": "integer", "description": "Resource status." } }, "additionalProperties": true, "description": "Track map object." }, "description": { "type": [ "string", "null" ], "description": "Activity Description." }, "calories": { "type": [ "number", "null" ], "description": "Burn calories." }, "has_kudoed": { "type": "boolean", "description": "Whether the current user has liked it." }, "hide_from_home": { "type": "boolean", "description": "Whether to hide it on the homepage." }, "gear": { "type": "object", "properties": { "id": { "type": "string", "description": "Equipment ID." }, "primary": { "type": "boolean", "description": "Whether it is the main equipment." }, "name": { "type": "string", "description": "Equipment name." }, "resource_state": { "type": "integer", "description": "Resource status." }, "distance": { "type": "number", "description": "The accumulated mileage of the equipment, in meters." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava gear summary." }, "segment_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of segment results included in the activity." }, "laps": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Circle name." }, "distance": { "type": "number", "description": "Circle distance in meters." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "total_elevation_gain": { "type": "number", "description": "Circle climb, in meters." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "lap_index": { "type": "integer", "description": "Segment number." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment object." }, "description": "Activity circle list." }, "best_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of best results from the event." }, "photos": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Photo abstract." } }, "required": [ "id", "name", "distance", "moving_time", "elapsed_time", "total_elevation_gain", "sport_type", "start_date", "start_date_local", "timezone" ], "additionalProperties": true, "description": "Strava activity object." }, "nullable": false, "handle": "output" } ], "name": "Read the same run", "executor": { "kind": "connector", "action": "strava.get_activity", "outputMode": "value" } } }, "n_6435d7e361bd82c8": { "name": "Strava activity", "kind": "outputs", "outputDefs": [ { "jsonSchema": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "external_id": { "type": [ "string", "null" ], "description": "External activity ID." }, "upload_id": { "anyOf": [ { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Upload task ID." }, { "type": "string", "minLength": 1, "description": "Upload task ID." } ], "description": "Upload task ID." }, { "type": "null" } ], "description": "Upload task ID." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "name": { "type": "string", "description": "Activity name." }, "distance": { "type": "number", "description": "Activity distance, unit is meters." }, "moving_time": { "type": "integer", "description": "Movement time in seconds." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "total_elevation_gain": { "type": "number", "description": "Cumulative climb, in meters." }, "type": { "type": "string", "description": "Legacy activity type." }, "sport_type": { "type": "string", "description": "Sports type." }, "start_date": { "type": "string", "description": "UTC start time." }, "start_date_local": { "type": "string", "description": "Local start time." }, "timezone": { "type": "string", "description": "Event time zone." }, "utc_offset": { "type": "number", "description": "Time zone offset in seconds." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "max_watts": { "type": [ "integer", "null" ], "description": "Maximum power." }, "average_heartrate": { "type": [ "number", "null" ], "description": "Average heart rate." }, "max_heartrate": { "type": [ "number", "null" ], "description": "Maximum heart rate." }, "kilojoules": { "type": [ "number", "null" ], "description": "Total work, unit is kilojoules." }, "trainer": { "type": "boolean", "description": "Whether it is a riding platform or trainer activity." }, "commute": { "type": "boolean", "description": "Whether it is a commuting activity." }, "manual": { "type": "boolean", "description": "Whether it is created manually." }, "private": { "type": "boolean", "description": "Whether it is a private event." }, "flagged": { "type": "boolean", "description": "Whether it is marked." }, "gear_id": { "type": [ "string", "null" ], "description": "Equipment ID." }, "map": { "type": "object", "properties": { "id": { "type": "string", "description": "Map object ID." }, "polyline": { "type": [ "string", "null" ], "description": "Complete trajectory polyline." }, "summary_polyline": { "type": [ "string", "null" ], "description": "Summary trajectory polyline." }, "resource_state": { "type": "integer", "description": "Resource status." } }, "additionalProperties": true, "description": "Track map object." }, "description": { "type": [ "string", "null" ], "description": "Activity Description." }, "calories": { "type": [ "number", "null" ], "description": "Burn calories." }, "has_kudoed": { "type": "boolean", "description": "Whether the current user has liked it." }, "hide_from_home": { "type": "boolean", "description": "Whether to hide it on the homepage." }, "gear": { "type": "object", "properties": { "id": { "type": "string", "description": "Equipment ID." }, "primary": { "type": "boolean", "description": "Whether it is the main equipment." }, "name": { "type": "string", "description": "Equipment name." }, "resource_state": { "type": "integer", "description": "Resource status." }, "distance": { "type": "number", "description": "The accumulated mileage of the equipment, in meters." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava gear summary." }, "segment_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of segment results included in the activity." }, "laps": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Circle name." }, "distance": { "type": "number", "description": "Circle distance in meters." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "total_elevation_gain": { "type": "number", "description": "Circle climb, in meters." }, "average_speed": { "type": "number", "description": "Average speed in meters per second." }, "max_speed": { "type": "number", "description": "Maximum speed in meters per second." }, "lap_index": { "type": "integer", "description": "Segment number." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment object." }, "description": "Activity circle list." }, "best_efforts": { "type": "array", "items": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment score name." }, "activity": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated activity objects." }, "athlete": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Associated athlete objects." }, "elapsed_time": { "type": "integer", "description": "The total time taken, in seconds." }, "moving_time": { "type": "integer", "description": "Movement time, in seconds." }, "start_date": { "type": [ "string", "null" ], "description": "Start time." }, "start_date_local": { "type": [ "string", "null" ], "description": "Local start time." }, "distance": { "type": "number", "description": "Distance in meters." }, "average_cadence": { "type": [ "number", "null" ], "description": "Average cadence." }, "average_watts": { "type": [ "number", "null" ], "description": "average power." }, "kom_rank": { "type": [ "integer", "null" ], "description": "KOM ranking." }, "pr_rank": { "type": [ "integer", "null" ], "description": "Personal record ranking." }, "hidden": { "type": "boolean", "description": "Whether to hide." }, "segment": { "type": "object", "properties": { "id": { "anyOf": [ { "type": "integer", "exclusiveMinimum": 0, "description": "Strava resource ID." }, { "type": "string", "minLength": 1, "description": "Strava resource ID." } ], "description": "Strava resource ID." }, "resource_state": { "type": "integer", "description": "Resource status." }, "name": { "type": "string", "description": "Road segment name." }, "activity_type": { "type": [ "string", "null" ], "description": "Applicable activity types." }, "distance": { "type": "number", "description": "The length of the road segment in meters." }, "average_grade": { "type": "number", "description": "average slope." }, "maximum_grade": { "type": "number", "description": "maximum slope." }, "elevation_high": { "type": "number", "description": "Maximum altitude, in meters." }, "elevation_low": { "type": "number", "description": "Minimum altitude, in meters." }, "start_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "Starting point coordinates." }, "end_latlng": { "type": [ "array", "null" ], "items": { "type": "number", "description": "Coordinate value." }, "minItems": 2, "maxItems": 2, "description": "End point coordinates." }, "climb_category": { "type": [ "integer", "null" ], "description": "Climb classification." }, "city": { "type": [ "string", "null" ], "description": "City." }, "state": { "type": [ "string", "null" ], "description": "state or region." }, "country": { "type": [ "string", "null" ], "description": "nation." }, "private": { "type": "boolean", "description": "Whether it is a private section." }, "starred": { "type": "boolean", "description": "Whether the current user has favorited this road segment." }, "hazardous": { "type": "boolean", "description": "Whether it is marked as risky." } }, "required": [ "id", "name" ], "additionalProperties": true, "description": "Strava segment summary." } }, "required": [ "id" ], "additionalProperties": true, "description": "Strava segment score object." }, "description": "List of best results from the event." }, "photos": { "type": "object", "additionalProperties": { "description": "A raw Strava field value." }, "description": "Photo abstract." } }, "required": [ "id", "name", "distance", "moving_time", "elapsed_time", "total_elevation_gain", "sport_type", "start_date", "start_date_local", "timezone" ], "additionalProperties": true, "description": "Strava activity object." }, "nullable": false, "handle": "activity" } ], "outputMappings": { "activity": { "kind": "sources", "sources": [ { "kind": "node", "nodeId": "n_9f53e43c90052ab1", "output": "output" } ] } } } }, "edges": [ { "source": "n_49137c092c7f0d26", "target": "n_9280d234db5a098f" }, { "source": "n_9280d234db5a098f", "target": "n_663c95cca0f15a32" }, { "source": "n_663c95cca0f15a32", "target": "n_c4fda745148550bb" }, { "source": "n_c4fda745148550bb", "target": "n_47cfc9587ab03350" }, { "source": "n_47cfc9587ab03350", "target": "n_07efddd448f67da0" }, { "source": "n_07efddd448f67da0", "target": "n_9f53e43c90052ab1" }, { "source": "n_9f53e43c90052ab1", "target": "n_6435d7e361bd82c8" } ] } }, "modules": { "n_4a189d943eba21c8": { "name": "Configure start time", "imports": [], "source": "export default function plan({startDate}){if(typeof startDate!=='string'||!/(?:Z|[+-]\\d\\d:\\d\\d)$/i.test(startDate.trim())||!Number.isFinite(Date.parse(startDate)))throw Error('Enter an ISO start date and time with Z or a UTC offset');return{startDate:new Date(startDate).toISOString()}}\n" }, "n_0b161fef041aa7d2": { "name": "Use the activity ID", "imports": [], "source": "export default function activityId({activity}){const id=activity?.id;if(!(Number.isSafeInteger(id)&&id>0)&&!(typeof id==='string'&&/^\\d+$/.test(id)&&Number(id)>0))throw Error('Strava returned no valid activity ID');return{id}}\n" }, "n_99c38b51aae2a56e": { "name": "Configure the description", "imports": [], "source": "export default function update({id,description}){return{id,activity:{description}}}\n" } } }, "presentation": { "designer": { "version": 1, "flow": { "direction": "vertical" } } } }