Skip to content

Output Examples — Activities ​

All examples show default output. Add --json to any command for raw JSON.


fitops activities import-mobile <PATH> ​

bash
fitops activities import-mobile fitops-export.json --json

The response contains formatted activity records under activities. This shortened example shows the import-specific fields:

json
{
  "_meta": {
    "tool": "fitops",
    "version": "0.1.0",
    "generated_at": "2026-11-12T12:00:00+00:00",
    "total_count": 1,
    "filters_applied": {
      "format": "fitops.activities",
      "version": 1,
      "post_to_strava": false
    }
  },
  "activities": [
    {
      "activity_id": 42,
      "strava_activity_id": null,
      "origin": "fitops-mobile",
      "name": "Morning run",
      "source_identity": {
        "provider": "file",
        "provider_account_id": "local",
        "provider_activity_id": "tcx:Run:2026-11-01T08:00:00.000Z"
      }
    }
  ],
  "import": {"created_count": 1, "updated_count": 0},
  "publication": {"requested": false, "status": "not_requested"},
  "data_availability": {
    "streams_imported": true,
    "calibration_transferred": false,
    "moving_time_available": false,
    "metrics": "computed_where_supported_using_desktop_settings"
  }
}

fitops activities import <PATH> ​

bash
fitops activities import morning-run.tcx --gear "Daily Trainer" --json
json
{
  "_meta": {
    "tool": "fitops",
    "total_count": 1,
    "filters_applied": {
      "sport": "auto",
      "name": null,
      "gear": "Daily Trainer",
      "post_to_strava": true
    }
  },
  "activity": {
    "activity_id": 42,
    "strava_activity_id": 1234567890,
    "origin": "tcx",
    "name": "Outdoor run",
    "sport_type": "Run",
    "equipment": {
      "gear_id": "local-a1b2c3",
      "gear_name": "Daily Trainer",
      "gear_type": "shoes"
    },
    "data_availability": {
      "has_gps": true,
      "streams_fetched": true,
      "laps_fetched": true,
      "detail_fetched": true
    }
  },
  "import": {
    "created": true,
    "match_type": "new",
    "file_format": "tcx",
    "original_filename": "morning-run.tcx",
    "sha256": "…",
    "sport_inference_source": "file_metadata",
    "sport_inference_confidence": "high"
  },
  "weather": {
    "status": "fetched",
    "data": {
      "temperature_c": 18.4,
      "humidity_pct": 68,
      "wbgt_c": 15.2,
      "wap_factor": 1.008,
      "true_pace_s_per_km": 302.7
    }
  },
  "publication": {
    "requested": true,
    "status": "completed",
    "strava_id": 1234567890,
    "error": null
  }
}

Posting is enabled by default. Use --local-only for "status": "not_requested". If posting fails, the command returns "status": "failed" and a structured error while preserving the imported local activity. Repeating the same import returns the existing local activity with "created": false and "match_type": "file_hash". An equivalent GPX/TCX file or an activity already synced from Strava returns "match_type": "activity_signature".


fitops activities stamp --local-id <ID> ​

json
{
  "_meta": {
    "tool": "fitops",
    "total_count": 1,
    "filters_applied": {"local_activity_id": 42}
  },
  "activity_id": 42,
  "status": "stamped"
}

The command stores the same analytics stamp used for Strava activities without contacting Strava. Repeating it without --force returns "status": "already_stamped".


fitops activities list ​

bash
fitops activities list --sport Run --limit 3
  ID            Date        Sport   Dist      Duration  Pace/Speed  HR
 ──────────────────────────────────────────────────────────────────────
  17972016511   2026-04-04  Run     12.12 km  58:05     4:47/km     168
  17954157500   2026-04-02  Run     16.52 km  1:27:11   5:16/km     154
  17930412200   2026-03-30  Run     10.05 km  50:22     5:00/km     161

fitops activities get <ID> ​

bash
fitops activities get 17972016511
Outdoor run  Run  |  2026-04-04

  Distance   12.12 km  (7.53 mi)
  Duration   58:05
  Pace       4:47/km  |  7:42/mi
  Elevation  +29.4 m
  Heart Rate 168 avg bpm  |  190 max
  Calories   720
  Gear       Adidas Adizero SL2 (shoes)
  Training   Aerobic 3.5  |  Anaerobic 1.4

Running race activities with an official override also show:

text
  Chip Time  40:30
  Race Dist  10.0 km
  Race Corr  distance x1.01833  |  time x0.987805  |  corrected pace 4:03/km

fitops activities streams <ID> ​

bash
fitops activities streams 17972016511
Streams for activity 17972016511

  altitude                  3492 data points
  latlng                    3492 data points
  grade_adjusted_speed      3492 data points
  moving                    3492 data points
  cadence                   3492 data points
  velocity_smooth           3492 data points
  time                      3492 data points
  heartrate                 3492 data points
  grade_smooth              3492 data points
  distance                  3492 data points

Use --json to get the full data arrays for scripting or analysis:

bash
fitops activities streams 17972016511 --json
json
{
  "_meta": { "generated_at": "2026-04-04T09:15:00+00:00" },
  "activity_strava_id": 17972016511,
  "streams": {
    "heartrate": { "data_length": 3492, "data": [142, 145, 148, ...] },
    "velocity_smooth": { "data_length": 3492, "data": [3.1, 3.2, ...] },
    "altitude": { "data_length": 3492, "data": [45.2, 45.4, ...] }
  }
}

Data arrays contain one value per second.


fitops activities chart <ID> ​

bash
fitops activities chart 17985851162 --stream heartrate
Activity chart  |  Heart Rate (bpm)  over time (s)  [res: 71]
min: 142 bpm  avg: 163 bpm  max: 190 bpm  samples: 3492

    190|                                              ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        |                              ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        |                  ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
    166|       ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        | ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
    142|▪▪
-------+-----------------------------------------------------------------------
        0:00                             66:39                           133:17

Pace chart (Y-axis inverted — faster pace at top):

bash
fitops activities chart 17985851162 --stream pace
Activity chart  |  Pace (min/km)  over time (s)  [res: 71]
fastest: 3:27/km  avg: 4:50/km  slowest: 9:05/km  samples: 3485

   3:27|    ▪▪▪▪▪▪▪▪▪ ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        |  ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
    6:16| ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        |▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
    9:05|▪
-------+-----------------------------------------------------------------------
        0:00                             66:39                           133:17

Zoom into the first 10 minutes of heart rate, with tight resolution to show variance:

bash
fitops activities chart 17985851162 --stream heartrate --from 0 --to 600 --resolution 60
Activity chart  |  Heart Rate (bpm)  over time (s)  [res: 60]
min: 142 bpm  avg: 154 bpm  max: 170 bpm  samples: 600

    170|                                  ·▪·  ·▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        |                          ·▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
    156|              ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        |    ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
    142|▪▪▪▪
-------+-----------------------------------------------------------------------
        0:00                              5:00                            10:00

· range dots appear when zoomed tightly (≤10 source samples per chart column), showing within-bucket variance.

← Output Examples

FitOps CLI — terminal-first training analytics