@stuartshay/otel-graphql-types 1.0.455 → 1.0.470

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.d.ts +153 -0
  2. package/package.json +1 -1
  3. package/schema.graphql +275 -0
package/index.d.ts CHANGED
@@ -11,6 +11,32 @@ export interface Scalars {
11
11
  JSON: { input: Record<string, unknown>; output: Record<string, unknown> };
12
12
  }
13
13
 
14
+ /** Input for creating a saved Garmin segment (e.g. from an activity lap or climb). */
15
+ export interface CreateGarminSegmentInput {
16
+ /** Segment length in meters (optional metadata) */
17
+ distance_meters?: InputMaybe<Scalars['Float']['input']>;
18
+ /** Segment end latitude */
19
+ end_latitude: Scalars['Float']['input'];
20
+ /** Segment end longitude */
21
+ end_longitude: Scalars['Float']['input'];
22
+ /** Corridor radius (m) used to match traversing activities (default 35) */
23
+ match_tolerance_meters?: InputMaybe<Scalars['Float']['input']>;
24
+ /** Human-readable segment name */
25
+ name: Scalars['String']['input'];
26
+ /** Garmin activity this segment is created from, if any */
27
+ source_activity_id?: InputMaybe<Scalars['String']['input']>;
28
+ /** Zero-based ClimbPro split index the segment is created from, if any */
29
+ source_climb_index?: InputMaybe<Scalars['Int']['input']>;
30
+ /** Zero-based lap index the segment is created from, if any */
31
+ source_lap_index?: InputMaybe<Scalars['Int']['input']>;
32
+ /** Sport this segment applies to (e.g. cycling); null matches all sports */
33
+ sport?: InputMaybe<Scalars['String']['input']>;
34
+ /** Segment start latitude */
35
+ start_latitude: Scalars['Float']['input'];
36
+ /** Segment start longitude */
37
+ start_longitude: Scalars['Float']['input'];
38
+ }
39
+
14
40
  /** Per-day aggregate combining OwnTracks location stats and Garmin activity metrics. */
15
41
  export interface DailyActivitySummary {
16
42
  __typename?: 'DailyActivitySummary';
@@ -469,6 +495,95 @@ export interface GarminLapsComparisonConnection {
469
495
  total: Scalars['Int']['output'];
470
496
  }
471
497
 
498
+ /**
499
+ * A saved (named) Garmin segment: a start→end corridor used to compare efforts
500
+ * across all activities that traverse the same route.
501
+ */
502
+ export interface GarminSegment {
503
+ __typename?: 'GarminSegment';
504
+ /** UTC timestamp when the segment was created */
505
+ created_at?: Maybe<Scalars['String']['output']>;
506
+ /** Segment length in meters (optional metadata) */
507
+ distance_meters?: Maybe<Scalars['Float']['output']>;
508
+ /** Segment end latitude */
509
+ end_latitude: Scalars['Float']['output'];
510
+ /** Segment end longitude */
511
+ end_longitude: Scalars['Float']['output'];
512
+ /** Unique segment identifier */
513
+ id: Scalars['Int']['output'];
514
+ /** Corridor radius (m) used to match traversing activities */
515
+ match_tolerance_meters: Scalars['Float']['output'];
516
+ /** Human-readable segment name (e.g. "Harlem Hill") */
517
+ name: Scalars['String']['output'];
518
+ /** Garmin activity this segment was created from, if any */
519
+ source_activity_id?: Maybe<Scalars['String']['output']>;
520
+ /** Zero-based ClimbPro split index the segment was created from, if any */
521
+ source_climb_index?: Maybe<Scalars['Int']['output']>;
522
+ /** Zero-based lap index the segment was created from, if any */
523
+ source_lap_index?: Maybe<Scalars['Int']['output']>;
524
+ /** Sport this segment applies to (e.g. cycling); null matches all sports */
525
+ sport?: Maybe<Scalars['String']['output']>;
526
+ /** Segment start latitude */
527
+ start_latitude: Scalars['Float']['output'];
528
+ /** Segment start longitude */
529
+ start_longitude: Scalars['Float']['output'];
530
+ /** UTC timestamp when the segment was last updated */
531
+ updated_at?: Maybe<Scalars['String']['output']>;
532
+ }
533
+
534
+ /** The start→end corridor a segment-efforts query was matched against. */
535
+ export interface GarminSegmentDefinition {
536
+ __typename?: 'GarminSegmentDefinition';
537
+ /** Corridor end latitude */
538
+ end_lat: Scalars['Float']['output'];
539
+ /** Corridor end longitude */
540
+ end_lon: Scalars['Float']['output'];
541
+ /** Corridor start latitude */
542
+ start_lat: Scalars['Float']['output'];
543
+ /** Corridor start longitude */
544
+ start_lon: Scalars['Float']['output'];
545
+ /** Corridor radius in meters used for matching */
546
+ tolerance_meters: Scalars['Float']['output'];
547
+ }
548
+
549
+ /** A single activity's best traversal of a segment, ranked against all others. */
550
+ export interface GarminSegmentEffort {
551
+ __typename?: 'GarminSegmentEffort';
552
+ /** Garmin activity identifier for this effort */
553
+ activity_id: Scalars['String']['output'];
554
+ /** UTC start time of the parent activity */
555
+ activity_start_time?: Maybe<Scalars['String']['output']>;
556
+ /** Average heart rate across the segment in bpm */
557
+ avg_heart_rate?: Maybe<Scalars['Int']['output']>;
558
+ /** Average speed across the segment in km/h */
559
+ avg_speed_kmh?: Maybe<Scalars['Float']['output']>;
560
+ /** Distance covered across the segment in km */
561
+ distance_km?: Maybe<Scalars['Float']['output']>;
562
+ /** UTC timestamp reaching the segment end corridor */
563
+ effort_end: Scalars['String']['output'];
564
+ /** UTC timestamp entering the segment start corridor */
565
+ effort_start: Scalars['String']['output'];
566
+ /** Segment elapsed time in seconds */
567
+ elapsed_seconds: Scalars['Float']['output'];
568
+ /** Maximum heart rate across the segment in bpm */
569
+ max_heart_rate?: Maybe<Scalars['Int']['output']>;
570
+ /** 1-based rank by elapsed time (1 = fastest) */
571
+ rank: Scalars['Int']['output'];
572
+ /** Sport type (e.g. cycling) */
573
+ sport?: Maybe<Scalars['String']['output']>;
574
+ }
575
+
576
+ /** Ranked efforts for a segment across all matching activities (fastest first). */
577
+ export interface GarminSegmentEffortsConnection {
578
+ __typename?: 'GarminSegmentEffortsConnection';
579
+ /** Efforts ordered fastest-first */
580
+ items: Array<GarminSegmentEffort>;
581
+ /** The corridor the efforts were matched against */
582
+ segment: GarminSegmentDefinition;
583
+ /** Total number of matching efforts */
584
+ total: Scalars['Int']['output'];
585
+ }
586
+
472
587
  /** Result payload returned when triggering an on-demand Garmin sync. */
473
588
  export interface GarminSyncTriggerResult {
474
589
  __typename?: 'GarminSyncTriggerResult';
@@ -776,12 +891,28 @@ export interface LocationDetail {
776
891
 
777
892
  export interface Mutation {
778
893
  __typename?: 'Mutation';
894
+ /**
895
+ * Create a saved Garmin segment (requires authentication). Typically called with
896
+ * the start/end coordinates of an activity lap or ClimbPro split to "save this
897
+ * lap as a segment".
898
+ */
899
+ createGarminSegment: GarminSegment;
900
+ /** Delete a saved Garmin segment by id (requires authentication). Returns true on success. */
901
+ deleteGarminSegment: Scalars['Boolean']['output'];
779
902
  /** Trigger an on-demand Garmin sync in the upstream API. */
780
903
  triggerGarminSync: GarminSyncTriggerResult;
781
904
  /** Trigger batch reverse-geocoding of un-geocoded location records. */
782
905
  triggerGeocoding: GeocodingTriggerResult;
783
906
  }
784
907
 
908
+ export interface MutationCreateGarminSegmentArgs {
909
+ input: CreateGarminSegmentInput;
910
+ }
911
+
912
+ export interface MutationDeleteGarminSegmentArgs {
913
+ id: Scalars['Int']['input'];
914
+ }
915
+
785
916
  export interface MutationTriggerGarminSyncArgs {
786
917
  lookback?: InputMaybe<Scalars['Int']['input']>;
787
918
  window_hours?: InputMaybe<Scalars['Int']['input']>;
@@ -850,6 +981,12 @@ export interface Query {
850
981
  garminDeviceCounts: Array<GarminDeviceCount>;
851
982
  /** Batch laps across activities for cross-activity comparison (matrix of activities x lap_index). */
852
983
  garminLapsComparison: GarminLapsComparisonConnection;
984
+ /** Fetch a single saved Garmin segment by id. Returns null if it does not exist. */
985
+ garminSegment?: Maybe<GarminSegment>;
986
+ /** Rank all historical activity efforts over a saved segment (fastest first). */
987
+ garminSegmentEfforts: GarminSegmentEffortsConnection;
988
+ /** List saved Garmin segments, optionally filtered by sport. */
989
+ garminSegments: Array<GarminSegment>;
853
990
  /** List all distinct sport types with activity counts. */
854
991
  garminSports: Array<SportInfo>;
855
992
  /** Retrieve paginated GPS track points for a Garmin activity. */
@@ -939,6 +1076,22 @@ export interface QueryGarminLapsComparisonArgs {
939
1076
  sport?: InputMaybe<Scalars['String']['input']>;
940
1077
  }
941
1078
 
1079
+ export interface QueryGarminSegmentArgs {
1080
+ id: Scalars['Int']['input'];
1081
+ }
1082
+
1083
+ export interface QueryGarminSegmentEffortsArgs {
1084
+ date_from?: InputMaybe<Scalars['String']['input']>;
1085
+ date_to?: InputMaybe<Scalars['String']['input']>;
1086
+ id: Scalars['Int']['input'];
1087
+ limit?: InputMaybe<Scalars['Int']['input']>;
1088
+ max_effort_seconds?: InputMaybe<Scalars['Int']['input']>;
1089
+ }
1090
+
1091
+ export interface QueryGarminSegmentsArgs {
1092
+ sport?: InputMaybe<Scalars['String']['input']>;
1093
+ }
1094
+
942
1095
  export interface QueryGarminTrackPointsArgs {
943
1096
  activity_id: Scalars['String']['input'];
944
1097
  limit?: InputMaybe<Scalars['Int']['input']>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stuartshay/otel-graphql-types",
3
- "version": "1.0.455",
3
+ "version": "1.0.470",
4
4
  "description": "TypeScript types for otel-data-gateway — Auto-generated from GraphQL schema",
5
5
  "types": "index.d.ts",
6
6
  "exports": {
package/schema.graphql CHANGED
@@ -978,6 +978,213 @@ type GarminLapsComparisonConnection {
978
978
  offset: Int!
979
979
  }
980
980
 
981
+ """
982
+ A saved (named) Garmin segment: a start→end corridor used to compare efforts
983
+ across all activities that traverse the same route.
984
+ """
985
+ type GarminSegment {
986
+ """
987
+ Unique segment identifier
988
+ """
989
+ id: Int!
990
+ """
991
+ Human-readable segment name (e.g. "Harlem Hill")
992
+ """
993
+ name: String!
994
+ """
995
+ Sport this segment applies to (e.g. cycling); null matches all sports
996
+ """
997
+ sport: String
998
+ """
999
+ Segment start latitude
1000
+ """
1001
+ start_latitude: Float!
1002
+ """
1003
+ Segment start longitude
1004
+ """
1005
+ start_longitude: Float!
1006
+ """
1007
+ Segment end latitude
1008
+ """
1009
+ end_latitude: Float!
1010
+ """
1011
+ Segment end longitude
1012
+ """
1013
+ end_longitude: Float!
1014
+ """
1015
+ Segment length in meters (optional metadata)
1016
+ """
1017
+ distance_meters: Float
1018
+ """
1019
+ Corridor radius (m) used to match traversing activities
1020
+ """
1021
+ match_tolerance_meters: Float!
1022
+ """
1023
+ Garmin activity this segment was created from, if any
1024
+ """
1025
+ source_activity_id: String
1026
+ """
1027
+ Zero-based lap index the segment was created from, if any
1028
+ """
1029
+ source_lap_index: Int
1030
+ """
1031
+ Zero-based ClimbPro split index the segment was created from, if any
1032
+ """
1033
+ source_climb_index: Int
1034
+ """
1035
+ UTC timestamp when the segment was created
1036
+ """
1037
+ created_at: String
1038
+ """
1039
+ UTC timestamp when the segment was last updated
1040
+ """
1041
+ updated_at: String
1042
+ }
1043
+
1044
+ """
1045
+ The start→end corridor a segment-efforts query was matched against.
1046
+ """
1047
+ type GarminSegmentDefinition {
1048
+ """
1049
+ Corridor start latitude
1050
+ """
1051
+ start_lat: Float!
1052
+ """
1053
+ Corridor start longitude
1054
+ """
1055
+ start_lon: Float!
1056
+ """
1057
+ Corridor end latitude
1058
+ """
1059
+ end_lat: Float!
1060
+ """
1061
+ Corridor end longitude
1062
+ """
1063
+ end_lon: Float!
1064
+ """
1065
+ Corridor radius in meters used for matching
1066
+ """
1067
+ tolerance_meters: Float!
1068
+ }
1069
+
1070
+ """
1071
+ A single activity's best traversal of a segment, ranked against all others.
1072
+ """
1073
+ type GarminSegmentEffort {
1074
+ """
1075
+ 1-based rank by elapsed time (1 = fastest)
1076
+ """
1077
+ rank: Int!
1078
+ """
1079
+ Garmin activity identifier for this effort
1080
+ """
1081
+ activity_id: String!
1082
+ """
1083
+ Sport type (e.g. cycling)
1084
+ """
1085
+ sport: String
1086
+ """
1087
+ UTC start time of the parent activity
1088
+ """
1089
+ activity_start_time: String
1090
+ """
1091
+ UTC timestamp entering the segment start corridor
1092
+ """
1093
+ effort_start: String!
1094
+ """
1095
+ UTC timestamp reaching the segment end corridor
1096
+ """
1097
+ effort_end: String!
1098
+ """
1099
+ Segment elapsed time in seconds
1100
+ """
1101
+ elapsed_seconds: Float!
1102
+ """
1103
+ Distance covered across the segment in km
1104
+ """
1105
+ distance_km: Float
1106
+ """
1107
+ Average speed across the segment in km/h
1108
+ """
1109
+ avg_speed_kmh: Float
1110
+ """
1111
+ Average heart rate across the segment in bpm
1112
+ """
1113
+ avg_heart_rate: Int
1114
+ """
1115
+ Maximum heart rate across the segment in bpm
1116
+ """
1117
+ max_heart_rate: Int
1118
+ }
1119
+
1120
+ """
1121
+ Ranked efforts for a segment across all matching activities (fastest first).
1122
+ """
1123
+ type GarminSegmentEffortsConnection {
1124
+ """
1125
+ The corridor the efforts were matched against
1126
+ """
1127
+ segment: GarminSegmentDefinition!
1128
+ """
1129
+ Efforts ordered fastest-first
1130
+ """
1131
+ items: [GarminSegmentEffort!]!
1132
+ """
1133
+ Total number of matching efforts
1134
+ """
1135
+ total: Int!
1136
+ }
1137
+
1138
+ """
1139
+ Input for creating a saved Garmin segment (e.g. from an activity lap or climb).
1140
+ """
1141
+ input CreateGarminSegmentInput {
1142
+ """
1143
+ Human-readable segment name
1144
+ """
1145
+ name: String!
1146
+ """
1147
+ Sport this segment applies to (e.g. cycling); null matches all sports
1148
+ """
1149
+ sport: String
1150
+ """
1151
+ Segment start latitude
1152
+ """
1153
+ start_latitude: Float!
1154
+ """
1155
+ Segment start longitude
1156
+ """
1157
+ start_longitude: Float!
1158
+ """
1159
+ Segment end latitude
1160
+ """
1161
+ end_latitude: Float!
1162
+ """
1163
+ Segment end longitude
1164
+ """
1165
+ end_longitude: Float!
1166
+ """
1167
+ Segment length in meters (optional metadata)
1168
+ """
1169
+ distance_meters: Float
1170
+ """
1171
+ Corridor radius (m) used to match traversing activities (default 35)
1172
+ """
1173
+ match_tolerance_meters: Float
1174
+ """
1175
+ Garmin activity this segment is created from, if any
1176
+ """
1177
+ source_activity_id: String
1178
+ """
1179
+ Zero-based lap index the segment is created from, if any
1180
+ """
1181
+ source_lap_index: Int
1182
+ """
1183
+ Zero-based ClimbPro split index the segment is created from, if any
1184
+ """
1185
+ source_climb_index: Int
1186
+ }
1187
+
981
1188
  """
982
1189
  Individual GPS track point within a Garmin activity.
983
1190
  """
@@ -1877,6 +2084,52 @@ type Query {
1877
2084
  offset: Int
1878
2085
  ): GarminLapsComparisonConnection!
1879
2086
 
2087
+ """
2088
+ List saved Garmin segments, optionally filtered by sport.
2089
+ """
2090
+ garminSegments(
2091
+ """
2092
+ Filter by sport type (e.g. cycling, running)
2093
+ """
2094
+ sport: String
2095
+ ): [GarminSegment!]!
2096
+
2097
+ """
2098
+ Fetch a single saved Garmin segment by id. Returns null if it does not exist.
2099
+ """
2100
+ garminSegment(
2101
+ """
2102
+ Segment identifier
2103
+ """
2104
+ id: Int!
2105
+ ): GarminSegment
2106
+
2107
+ """
2108
+ Rank all historical activity efforts over a saved segment (fastest first).
2109
+ """
2110
+ garminSegmentEfforts(
2111
+ """
2112
+ Segment identifier
2113
+ """
2114
+ id: Int!
2115
+ """
2116
+ Start date filter (YYYY-MM-DD), inclusive on activity start_time
2117
+ """
2118
+ date_from: String
2119
+ """
2120
+ End date filter (YYYY-MM-DD), inclusive on activity start_time
2121
+ """
2122
+ date_to: String
2123
+ """
2124
+ Ignore traversals longer than this many seconds (filters loop/return mismatches)
2125
+ """
2126
+ max_effort_seconds: Int
2127
+ """
2128
+ Maximum number of efforts to return
2129
+ """
2130
+ limit: Int
2131
+ ): GarminSegmentEffortsConnection!
2132
+
1880
2133
  """
1881
2134
  Retrieve all reverse-geocoded addresses for a Garmin activity (start, mid-route waypoints, and end).
1882
2135
  """
@@ -2095,4 +2348,26 @@ type Mutation {
2095
2348
  """
2096
2349
  retry_failed: Boolean
2097
2350
  ): GeocodingTriggerResult!
2351
+
2352
+ """
2353
+ Create a saved Garmin segment (requires authentication). Typically called with
2354
+ the start/end coordinates of an activity lap or ClimbPro split to "save this
2355
+ lap as a segment".
2356
+ """
2357
+ createGarminSegment(
2358
+ """
2359
+ Segment definition
2360
+ """
2361
+ input: CreateGarminSegmentInput!
2362
+ ): GarminSegment!
2363
+
2364
+ """
2365
+ Delete a saved Garmin segment by id (requires authentication). Returns true on success.
2366
+ """
2367
+ deleteGarminSegment(
2368
+ """
2369
+ Segment identifier
2370
+ """
2371
+ id: Int!
2372
+ ): Boolean!
2098
2373
  }